作者:俺是农村的 QQ:332876777
   交几个懂php的朋友,一起交流。谢谢大家!
  首先感谢,oldjun大牛,没得到你的提示和帮助,自从看了你的漏洞分析文章,我深受感动,咬紧牙对自己说,好好学习,敢上大牛。

  分析如下:
Help.php 文件,取得keywords的值,只用trim函数,去除了首位空,直接带入sql查询。

//取得文章列表 
$keyword = !empty($_REQUEST['keywords']) ? trim($_REQUEST['keywords']) : ''; 
$typeid  = !empty($_REQUEST['typeid']) ? intval($_REQUEST['typeid']) : 0; 
        
if(!empty($keyword)) 

        $arr = array(); 
        $keywords = 'AND ('; 
        $keywords .= "(title LIKE '%$keyword%' OR keywords LIKE '%$keyword%' )"; 
        $keywords .= ')'; 

$typeid = $typeid ? " AND typeid = '$typeid' " : ''; 

$page = !empty($_REQUEST['page'])  && intval($_REQUEST['page'])  > 0 ? intval($_REQUEST['page'])  : 1; 
$size = !empty($_CFG['pagesize']) && intval($_CFG['pagesize']) > 0 ? intval($_CFG['page_size']) : 20; 

$sql = "SELECT COUNT(*) FROM {$table}help WHERE 1 ". $keywords . $typeid; 
$count = $db->getOne($sql);

在看一下,include下的common.php 文件,在第28行

//转义处理客户端提交的数据
if(!get_magic_quotes_gpc())
{
        $_POST   = stripslashes_deep($_POST);
        $_GET    = stripslashes_deep($_GET);
        $_COOKIE = stripslashes_deep($_COOKIE);
}

如果GPC 被关闭了,则使用自定义函数,stripslashes_deep 对提交的字符,进行处理,stripslashes_deep 在include目录下的global.fun.php文件。

function stripslashes_deep($value)
{
        return is_array($value) ? array_map('stripslashes_deep', $value) : (isset($value) ? stripslashes($value) : null);
}

默认GPC是ON,也就是打开的,stripslashes_deep函数也不会被执行,这样就出现了我们提交的“select * from phpmps_admin”会被看做字符串而不被执行,我们就要对他进行闭合处理。

提交单引号也被加了反斜杠,此问题下面解决!

如果成功获得了admin密码,后台拿shell直接在“首页flash”上传php文件。