qibocms b2b 二次注入一枚。

2014-08-18T00:00:00
ID SSV:94198
Type seebug
Reporter Root
Modified 2014-08-18T00:00:00

Description

简要描述:

应该是qibo的最后一弹了。

详细说明:

所测试的 http://down.qibosoft.com/down.php?v=b2b


在hy/member/homapage_ctrl/info.php中

`` $db->query("INSERT INTO{$_pre}company_fid` VALUES $values");

$title=filtrate($title);
$picurl=filtrate($picurl);
$fname=filtrate($fname);
$my_trade=filtrate($my_trade);
$qy_cate=filtrate($qy_cate);
$qy_regmoney=filtrate($qy_regmoney);
$qy_saletype=filtrate($qy_saletype);
$qy_pro_ser=filtrate($qy_pro_ser);
$my_buy=filtrate($my_buy);
$qy_regplace=filtrate($qy_regplace);
$db->query("UPDATE `{$_pre}company` SET 
`title`='$title',
`picurl`='$picurl',
`fname`='$fname',
`province_id`='{$province_id}',
`city_id`='{$postdb[city_id]}',
    `zone_id`='{$postdb[zone_id]}',
    `street_id`='{$postdb[street_id]}',
`my_trade`='$my_trade',
`qy_cate`='$qy_cate',
`qy_regmoney`='$qy_regmoney',
`qy_saletype`='$qy_saletype',
`qy_createtime`='$qy_createtime',
`qy_pro_ser`='$qy_pro_ser',
`my_buy`='$my_buy',
`qy_regplace`='$qy_regplace'
WHERE uid='$uid'");

```

$title=filtrate($title); 这里进行了个过滤

function filtrate($msg){ //$msg = str_replace('&','&',$msg); //$msg = str_replace(' ',' ',$msg); $msg = str_replace('"','"',$msg); $msg = str_replace("'",''',$msg); $msg = str_replace("<","<",$msg); $msg = str_replace(">",">",$msg); $msg = str_replace("\t","    ",$msg); //$msg = str_replace("\r","",$msg); $msg = str_replace(" ","   ",$msg); return $msg; }

这里过滤了单引号 转义符没过滤。 然后就带入到update中 入库了。 在hy/member/cankao.php中

$companydb=$db->get_one("SELECT * FROM {$_pre}company WHERE uid='$uid' LIMIT 1"); if(!$companydb[if_homepage]){ showerr("您还没有申请企业商铺,<a href='$Murl/member/post_company.php?action=apply'>点击这里申请企业商铺</a>,拥有自己的商铺"); }

这里查询出来了 $title = filtrate($title); $url = filtrate($url); $description = filtrate($description); if($ck_id){ $db->query("UPDATE {$_pre}friendlink SET title='$title', url='$url', description='$description', yz=1 WHERE ck_id='$ck_id';"); }else{ $db->query("INSERT INTO {$_pre}friendlink ( ck_id , uid , username , companyName , title , url , description , yz ) VALUES ('', '$lfjuid', '$lfjid', '$companydb[title]', '$title', '$url', '$description', '1')"); }</code> 然后这里把出库的$companydb[title] 也带入到了查询当中 所以这里我们可以引入转义符了。 然后后面的变量刚好也是可以控制的 所以就可以注入了。

<img src="https://images.seebug.org/upload/201408/16133215b93c3718c643071dd32aaed1738b21bc.jpg" alt="q1.jpg" width="600" onerror="javascript:errimg(this);">

把名字改成这样 然后

<img src="https://images.seebug.org/upload/201408/161333250fdf311fc0885fa417cd12ea2e064a37.jpg" alt="q2.jpg" width="600" onerror="javascript:errimg(this);">

报错了。 构造一下

<img src="https://images.seebug.org/upload/201408/16133436675ed3ec11f14bd2e69750450723be65.jpg" alt="q3.jpg" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201408/16133445d5ea26109f158ef29f66be5f13526362.jpg" alt="q4.jpg" width="600" onerror="javascript:errimg(this);">

成功出数据。

漏洞证明:

<img src="https://images.seebug.org/upload/201408/16133445d5ea26109f158ef29f66be5f13526362.jpg" alt="q4.jpg" width="600" onerror="javascript:errimg(this);">