sqlmap注入绕过waf

那天我帮朋友调试一个老系统,他抱怨登录总失败。
我翻了翻日志,发现是WAF太严苛。
他用的系统是2 008 年左右搭的,SQLMap一跑,果然提示几个绕过技巧。
我随手改了改参数,用UNION把两个表结果并在一起,WAF居然没拦。
它好像只认单查询,多查询就懵了。
后来试了个拼写错误的字段名,WAF果然没反应,但数据当然对不上。
最逗的是用盲注,直接查1 =1 ,居然成功了。
朋友说他们当年开发时根本没考虑这么多,数据库用户权限还是root。
等等,还有个事,他提到那个系统居然还没打补丁。
现在想想,WAF再智能,要是根本没打好基础,还是白搭。

sql注入绕过技术分析

说白了,SQL注入绕过WAF的技术就像是在玩猫捉老鼠的游戏,攻击者不断寻找WAF的漏洞,而防护者则努力修补这些漏洞。
其实很简单,下面我来给你拆解一下常见的绕过技术。

先说最重要的,基于规则变形的绕过技术,比如双写绕过,就是WAF可能只过滤一次关键字,所以攻击者会双写关键字来绕过检测。
去年我们跑的那个项目,就遇到过这样的问题,大概3 000量级的数据,如果单写关键字就会被WAF拦截,但双写就能成功。

另外一点,大小写绕过也很常见,因为WAF规则可能只匹配小写或大写关键字。
比如,uNIoNsELecT1 ,2 ,3 这样的语句,部分WAF可能没处理大小写混合的情况。

我一开始也以为这些技术很复杂,后来发现不对,其实很多都是基于对WAF规则的不完全了解。
还有个细节挺关键的,比如基于编码的绕过技术,URL编码、十六进制/Unicode编码等,这些都是利用服务器自动解码的特性来绕过单次过滤。

结尾提醒一下,防御建议也很重要。
比如过滤危险字符,使用正则表达式匹配union、sleep、load_file等关键字;预编译语句,采用PDO预编译,避免变量直接拼接SQL;WAF规则更新,定期维护规则库,覆盖新型绕过技术;最小权限原则,数据库用户仅授予必要权限,限制高危操作。
我觉得值得试试,毕竟安全无小事。

sql注入遇D盾

说白了,SQL注入就是通过在输入框里塞恶意代码,企图篡改数据库。
其实很简单,攻击者通常会在数字或字符型输入字段下手。
先说最重要的,比如一个ID字段,攻击者会试着输入特殊字符看系统如何反应。
另外一点,字符型注入,比如用户名或密码,攻击者可能会加单引号来触发错误。

我一开始也以为D盾这类WAF能完全挡住攻击,但后来发现不对,它们虽然能检测和分析SQL语句,但攻击者可以通过报错信息来获取数据库结构。
等等,还有个事,攻击者可能会通过变形SQL语句,比如用LIKE替换等号,或者用LEFT替换MID,来绕过WAF的过滤。

说实话挺坑的,这个点很多人没注意。
我觉得值得试试的是加强输入验证,用参数化查询来构建SQL语句,这样就能避免直接拼接用户输入。
还有,定期更新和升级WAF,还有监控日志记录,这些都是防止SQL注入的好方法。
记得,防御SQL注入不是一次性的,而是一个持续的过程。