sqlmap --tamper 绕过WAF脚本分类整理

sqlmap --tamper 绕过WAF脚本分类整理

sqlmap的tamper绕过waf

sqlmap的tamper绕过waf

但很多时候还是得静下来分析过滤系统到底过滤了哪些参数,该如何绕过。

sqlmap中的tamper给我们带来了很多防过滤的脚本,非常实用,可能有的朋友还不知道怎样才能最有效的利用tamper脚本。

当然使用脚本之前需要确定的就是系统过滤了哪些关键字,比如单引号、空格、select、union、admin等等。

所以有的时候我们会发现,注入成功了但是dump不出数据,很可能是select被过滤了等等原因。

如何判断使用哪个脚本

最简单的办法就是在url参数中手工带入关键词,判断是否被过滤。

如图:

直接加个单引号被过滤,说明注入时单引号是没法用的。

sqlmap的tamper绕过waf

空格、等于号都没有过滤,成功报错。

sqlmap的tamper绕过waf

select被过滤。

sqlmap的tamper绕过waf以此类推,当sqlmap注入出现问题时,比如不出数据,就要检查对应的关键词是否被过滤。

比如空格被过滤可以使用space2comment.py,过滤系统对大小写敏感可以使用randomcase.py等等。

下面对于sqlmap的tamper参数详细讲解。

使用方法

根据实际情况,可以同时使用多个脚本,使用-v参数可以看到payload的变化。

sqlmap的tamper绕过waf

sqlmap.py -u "http://www.target.com/test.php?id=12" --dbms mysql --tamper "space2comment,versionedmorekeywords.py" -v 3 --dbs

脚本分类说明

1358580-20190605194338464-982309411

使用参考

目前官方提供53个绕过脚本,在平常使用中,咱们会对一些网站是否有安全防御(WAF/IDS/IPS)进行试探,可使用参数--identify-waf进行检测。下面介绍一些经常使用的tamper脚本。数据库

1、apostrophemask.py :将引号替换为UTF-8,用于过滤单引号。安全

2、base64encode.py :替换为base64编码。app

3、multiplespaces.py:围绕SQL关键字添加多个空格。dom

4、space2plus.py:用+号替换为空格。ide

5、nonrecursivereplacement.py:做为双重查询语句,用双重语句替代预约义的SQL关键字(适用于很是弱的自定义过滤器,例如将SELECT替换为空)。函数

6、space2randomblank.py:将空格替换为其余有效字符。post

7、unionalltounion.py:将UNION ALL SELECT替换为UNION SELECT。测试

8、securespher.py:追加特制的字符串。

9、space2hash.py:将空格替换为#号,并添加一个随机字符串和换行符。

10、space2mssqlblank.py(mssql):将空格替换为其余空符号。

11、spce2mssqlhash.py:将空格替换为#号,并添加一个换行符。

12、between.py:用NOT BETWEEN 0 AND 替换大于号(>),用BETWEN AND 替换等号(=)。

13、percentage.py:ASP容许在每一个字符前面添加一个%号1.

14、sp_password.py:从DBMS日志的自动模糊处理的有效载荷中追加sp_password。

15、charencode.py:对给定的Payload所有字符使用URL编码(不处理已经编码的字符)。

16、randomcase.py:随机大小写。

17、charunicodeencode.py:字符串unicode编码。

18、space2comment.py:将空格替换为/**/。

19、equaltolike.py:将等号替换为like。

20、greatest.py:绕过对”>"的过滤,用GREATEEST替换大于号。

以上测试经过的数据库类型和版本:

mysql4、mysql5.0和mysql5.5

orcale10g

postgresql8.3、postgresql 8.4和postgresql9.0

21、ifnull2ifisnull.py:绕过对IFNULL的过滤,替换相似IFNULL(A,B)为IF(ISNULL(A),B,A)。

测试经过的数据库类型和版本为MySQL 5.0和MySQL 5.5

22、modsecurityversioned.py:过滤空格,使用MySQL内联注释的方式进行注入。

测试经过的数据库类型和版本为MySQL5.0

23、space2mysalblank.py:将空格替换为其它空白符号(适用于MySQL)

测试经过的数据库类型和版本为MySQL5.1

24、modesecurityzeroversioned.py:使用MySQL内联注释的方式(/!00000/)

测试经过的数据库类型和版本为MySQL 5.0

25、space2mysqldash.py:将空格替换为--,并添加一个换行符。

26、bluecoat.py:在SQL语句以后用有效的随机空白符替换空格符,随后用LIKE替换等于号。

测试经过的数据库类型和版本为MySQL5.1和SGOS

27、versionedkeywords.py:注释绕过。

28、halfversionedmorekeywords.py:当数据库为MySQL时绕过防火墙,在每一个关键字以前添加MySQL版本注释。

测试经过的数据库类型和版本为MySQL 4.0.18和MySQL 5.0.22

29、space2morehash.py:将空格替换为#号,并添加一个随机字符串和换行符。

测试经过的数据库类型和版本为MySQL5.1.14

30、apostrophenullencode.py:用非法双字节unicode字符替换单引号。

31、appendnullbyte.py:在有效负荷的结束位置加载零字节字符编码。

32、chardoubleeencode.py:对给定的Payload所有字符使用双重URL编码(不处理已编码的字符)。

33、unmagicquotes.py:用一个多字节组合(%bf%27)和末尾通用注释也一块儿替换空格。

34、randomcomments.py:用/**/分割SQL关键字。

参考文档

tamper总结

sqlmap代码结构和tamper

posted @ 2020-12-26 15:18  tomyyyyy  阅读(1212)  评论(0编辑  收藏  举报