### 简要描述:
后台注入没啥价值- -不过这个点可以任意构造语句 包括drop database;和select into outfile 顺便还自带爆路径 拿来getshell不错
### 详细说明:
admin\include\lib_main.php 行718
```
function get_filter($param_str = '')
{
$filterfile = basename(PHP_SELF, '.php');
if ($param_str)
{
$filterfile .= $param_str;
}
if (isset($_GET['uselastfilter']) && isset($_COOKIE['ECSCP']['lastfilterfile'])
&& $_COOKIE['ECSCP']['lastfilterfile'] == sprintf('%X', crc32($filterfile))) //如果如果巴拉巴拉
{
return array(
'filter' => unserialize(urldecode($_COOKIE['ECSCP']['lastfilter'])),
'sql' => base64_decode($_COOKIE['ECSCP']['lastfiltersql']) //直接从cookie取的base64 无视GPC了
);
}
else
{
return false;
}
}
```
这一个无视GPC的输入点太爽了 而且看数组的key是sql,一般就快进查询了 继续翻翻哪里调用了get_filter
好多地方都调用了。这里拿article.php开刀
行624:
```
function get_articleslist()
{
$result = get_filter();
if ($result === false)
{
/*省略一堆*/
}
else
{
$sql = $result['sql']; //来自cookie base64无视GPC
$filter = $result['filter'];
}
$arr = array();
$res = $GLOBALS['db']->selectLimit($sql, $filter['page_size'], $filter['start']); //直接进查询
/*省略另一堆*/
}
```
可以看到 如果get_filter()返回不为false就直接取出里面的sql进查询了...
### 漏洞证明:
登陆ecshop后台
然后打开一次
http://127.0.0.1/admin/article.php?act=list
这次的get_filter()是false 所以他会进入if里面 在这个if的最底下会用set_filter()设置cookie
会看到多了3个cookie
[<img src="https://images.seebug.org/upload/201309/23114338e802db8c4de90fc635859d9e6f5d216b.png" alt="11111ff.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201309/23114338e802db8c4de90fc635859d9e6f5d216b.png)
修改cookie
ECSCP[lastfiltersql]=base64后的sql语句 这里用的爆管理员账号密码的payload其他的比如 导出shell啊啥的都行
然后在url后面加上参数uselastfilter=1来进入get_filter()函数里的那个if
[<img src="https://images.seebug.org/upload/201309/23120734bbb84422439ae206d0f24046247e1059.jpg" alt="11333.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201309/23120734bbb84422439ae206d0f24046247e1059.jpg)
只要让查询返回的结果不是正确的资源 是会报错把路径显示出来的。然后select into outfile
暂无评论