记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

phpyun设计缺陷可用别的账户money付款,清空别的账户money为0

2014-10-05 13:55

漏洞文件\api\tenpay\index.php:

$sql=$db->query("select * from `".$db_config["def"]."company_order` where `order_id`='$_POST[dingdan]'");



$row=mysql_fetch_array($sql); //通过订单编号获取点单价格



$userid=(int)$_COOKIE['uid']; //获取cookie中的uid ,此uid可以伪造成别人的uid !!!!





if($_POST['balance']&&$userid){

$c_sql=$db->query("select `pay` from `".$db_config["def"]."company_statis` where `uid`='".$userid."'"); //通过伪造的uid读取出别人的账户余额

$company_statis=mysql_fetch_array($c_sql);

if($company_statis['pay']>=$row['order_price']){ //如果账户余额大于付款金额

$up_sql=$db->query("update `".$db_config["def"]."company_statis` set `pay`=`pay`-'".$row['order_price']."' where `uid`='".$userid."'"); //通过伪造的uid付款

mysql_fetch_array($up_sql);



$up_order=$db->query("update `".$db_config["def"]."company_order` set `order_price`='0'".$invoice_title." where `order_id`='".$row['order_id']."'");

mysql_fetch_array($up_order);

$price=$row['order_price'];

}else{ //如果账户余额小于付款金额



$price=$company_statis['pay'];

$up_sql=$db->query("update `".$db_config["def"]."company_statis` set `pay`='0' where `uid`='".$userid."'"); //直接清空账户余额位0

$up_sql_status=mysql_fetch_array($up_sql);



$up_order=$db->query("update `".$db_config["def"]."company_order` set `order_price`=`order_price`-'".$price."'".$invoice_title." where `order_id`='".$row['order_id']."'");

mysql_fetch_array($up_order);

}

漏洞证明:

注册一个充了值的账户test2,可用余额为100:

QQ截图20140819152522.jpg



注册一个账户test5,提交一个订单:

QQ截图20140819152701.jpg

QQ截图20140819152722.jpg



付款时抓包将cookie中uid改为test2的uid:

QQ截图20140819155751.jpg



通过test2付款成功:

QQ截图20140819155934.jpg







如果账户余额小于付款金额会重置账户余额为0,test5提交一个价格很高的订单让test2付款

QQ截图20140819160310.jpg

同样抓包修改uid为test2的uid,结果

QQ截图20140819160527.jpg





test2的消费记录:

QQ截图20140819160741.jpg



修复方案:

知识来源: www.wooyun.org/bugs/wooyun-2014-073041

阅读:69984 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“phpyun设计缺陷可用别的账户money付款,清空别的账户money为0”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云