### 简要描述:
Thinksaas SQL注入#5
### 详细说明:
Thinksaas SQL注入#5
积分兑换——物品编辑处,sql注入。
第一处:/app/redeem/action/edit.php
```
case "do":
$goodsid = intval($_POST['goodsid']);
$cateid = intval($_POST['cateid']);
$title = trim($_POST['title']);//问题在这里
$content = trim($_POST['content']);//问题在这里
$nums = intval($_POST['nums']);
$scores = intval($_POST['scores']);
$return = intval($_POST['return']);
$new['redeem']->update('redeem_goods',array(
'goodsid'=>$goodsid,
),array(
'cateid'=>$cateid,
'title'=>$title,//问题在这里
'content'=>$content,//问题在这里
'nums'=>$nums,
'scores'=>$scores,
'return'=>$return,
));
```
这里没有过滤,进入update:
```
public function update($table, $conditions, $row) {
$where = "";
if (empty ( $row ))
return FALSE;
if (is_array ( $conditions )) {
$join = array ();
foreach ( $conditions as $key => $condition ) {
$condition = $this->escape ( $condition );
$join [] = "{$key} = {$condition}";
}
$where = "WHERE " . join ( " AND ", $join );
} else {
if (null != $conditions)
$where = "WHERE " . $conditions;
}
foreach ( $row as $key => $value ) {
$vals [] = "`$key` = '$value'";
}
$values = join ( ", ", $vals );
$sql = "UPDATE " . dbprefix . "{$table} SET {$values} {$where}";
return $this->db->query ( $sql );
}
```
也没有过滤row的内容,导致我们的输入进入sql语句,造成注入。
### 漏洞证明:
新看看正常的积分兑换物品:
[<img src="https://images.seebug.org/upload/201312/2311241693cc61ffbb5707be80db63e3448d420c.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/2311241693cc61ffbb5707be80db63e3448d420c.png)
编辑物品,输入如下:
[<img src="https://images.seebug.org/upload/201312/23112431ad805bb912dcc6cb8c192b82bb211250.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/23112431ad805bb912dcc6cb8c192b82bb211250.png)
修改后,看看结果:
[<img src="https://images.seebug.org/upload/201312/2311244673b9d0199b82a83fe0ba6fabba8c475e.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/2311244673b9d0199b82a83fe0ba6fabba8c475e.png)
ok
暂无评论