一段困扰许久的防注入代码
番茄系统家园 · 2022-04-25 07:05:58
本文转载自微信公众号「Bypass」,作者Bypass。转载本文请联系Bypass公众号。
有段时间一直热衷于研究各种waf绕过,一般来说,云WAF可以通过找到网站真实IP来绕过,硬件waf也常因为HTTP协议解析差异导致绕过,但是,代码层的防护往往只能从代码逻辑里寻找绕过思路。

在一些网站通常会在公用文件引入全局防护代码,因此,我收集了网络上常见的PHP全局防护代码进行分析。第一次看到safe3的防注入代码,花了不少时间去研究如何绕过,我在笔记里记下了一句话:如果正面怼正则,实在想不到绕过的方式。
直到前几天,我在T00LS论坛里看到有人也问起了同一段防注入代码的绕过方式,在这个帖子的回复了看到了一个绕过姿势。这也正是安全社区最大的魅力,你总会在别人的回复里找到很有意思的思路或技巧。
绕过思路
利用preg_match函数正则匹配的字符串长度限制绕过,PHP5.3之前preg_match函数阈值默认为10w,PHP5.3开始默认值为100w。
测试情况
(1) safe3 防注入代码
(2) 构建一个sql注入点
在页面中引入防注入代码:
当参数中拼接sql语句时,触发关键字正则匹配导致拦截。

(3) 绕过姿势
PHP测试版本:5.2.17
当填充字符串超过10w的时候,可以绕过防注入代码,获取数据库信息。

PHP测试版本:5.3.29
当填充字符串超过100w的时候,可以绕过防注入代码,获取数据库信息。

猜你喜欢
最新应用
热门应用

