PHPMYWIND sql 一枚 无视GPC

2014-02-22T00:00:00
ID SSV:94787
Type seebug
Reporter Root
Modified 2014-02-22T00:00:00

Description

简要描述:

今天又去重新看了看phpmywind 在官网上下的 版本还是4.6.6 无需登录 无需单引号。

详细说明:

在order.php中

if(empty($_COOKIE['shoppingcart'])) { header('location:shoppingcart.php'); exit(); } //不允许游客下单跳转登陆 if(empty($_COOKIE['username'])) { header('location:member.php?c=login'); exit(); }

让这两个不为空就好。

`` $action = isset($action) ? $action : ''; $datagroup = isset($datagroup) ? $datagroup : ''; $level = isset($level) ? $level : ''; $v = isset($areaval) ? $areaval : '0'; //获取级联 if($action == 'getarea') { $str = '&lt;option value="-1"&gt;--&lt;/option&gt;'; $sql = "SELECT * FROM#@__cascadedata` WHERE level=$level And "; if($v == 0) $sql .= "datagroup='$datagroup'"; else if($v % 500 == 0) $sql .= "datagroup='$datagroup' AND datavalue>$v AND datavalue<".($v + 500); else $sql .= "datavalue LIKE '$v.%%%' AND datagroup='$datagroup'";

$sql .= " ORDER BY orderid ASC, datavalue ASC";
$dosql-&gt;Execute($sql);

```

什么$level v啊 都是可控的 但是会被转义。 观察这个语句。、 else if($v % 500 == 0) $sql .= "datagroup='$datagroup' AND datavalue>$v AND datavalue<".($v + 500); 只要满足这个 可以发现 v是没有单引号的。 所以就可以持续注入了。 但是内置80sec的ids 就是dede那个 不过已经被绕过了。 @' 但是这个单引号会被转义。 我添加一个这个还是没绕过 然后再在结尾又添加了一个 然后绕过成功。 然后构造一下语句 注入成功。

漏洞证明:

[<img src="https://images.seebug.org/upload/201402/22131803933269a2cae6101aa39d8c1d073fd7af.jpg" alt="_)(05V$XNQ(AFXST`YKX.jpg" width="600" onerror="javascript:errimg(this);">

注入成功 有图 有真相。