sqlmap Tamper 脚本分类总结
- 1. 编码与转义
- 2. 空白符混淆
- 3. 关键字混淆与变形
- 4. 特定数据库绕过
- 5. 时间延迟绕过
- 6. 字符串拼接与分割
- 7. 注释干扰
- 8. 特殊符号替换
- 9. 特定协议/头操作
- 10. 组合绕过技术
- 11. 特定框架/WAF 绕过
- 12. 非常规绕过
- 使用场景示例
- 完整 Tamper 列表命令
sqlmap Tamper 脚本的完整分类总结,按绕过技术类型和功能划分为更细致的类别:
1. 编码与转义
- base64encode.py
将 Payload 编码为 Base64 格式,绕过简单字符串过滤。 - charencode.py
对特殊字符进行 URL 编码(如%20
代替空格)。 - chardoubleencode.py
双重 URL 编码(如%2520
代替空格)。 - charunicodeescape.py
使用 Unicode 转义(如\u0020
代替空格)。 - unmagicquotes.py
绕过magic_quotes
过滤,用%bf%27
替代单引号。 - apostrophenullencode.py
将单引号替换为%00%27
,绕过空字节截断过滤。
2. 空白符混淆
- space2comment.py
用注释符/**/
替换空格。 - space2plus.py
用+
替换空格。 - space2hash.py
用%23%0A
(#
换行符)替换空格。 - space2mssqlblank.py
用随机空白符(适用于 MSSQL)。 - space2mysqldash.py
用--%0A
替换空格(适用于 MySQL)。 - space2randomblank.py
用随机空白符(如%09
,%0A
,%0C
)替换空格。
3. 关键字混淆与变形
- randomcase.py
随机大小写混淆(如SeLeCt
)。 - equaltolike.py
用LIKE
替换=
。 - between.py
用BETWEEN
替换比较符(如> 10
→BETWEEN 10 AND 14
)。 - modsecurityversioned.py
在关键字前添加版本化注释(如/*!50000SELECT*/
)。 - versionedkeywords.py
对 MySQL 关键字添加版本注释(如/*!50000CONCAT*/
)。 - versionedmorekeywords.py
扩展版本注释的覆盖范围。 - nonrecursivereplacement.py
双重替换绕过简单过滤(如UNION
→UNIUNIONON
)。 - symboliclogical.py
用&&
替代AND
,||
替代OR
。
4. 特定数据库绕过
MySQL
- concat2concatws.py
用CONCAT_WS()
替代CONCAT()
。 - greatest.py
用GREATEST()
绕过>
过滤。 - sleep2getlock.py
用GET_LOCK()
替代SLEEP()
时间盲注。 - halfversionedmorekeywords.py
对部分关键字添加版本注释。
MSSQL
- mssqlconv.py
用CONVERT()
函数混淆 Payload。 - mssqlcharunicodeencode.py
对 MSSQL 使用 Unicode 编码。 - sp_password.py
在 Payload 末尾添加sp_password
混淆日志。
Oracle
- oraclechr.py
用CHR()
函数编码字符串(如CHR(65)||CHR(66)
→AB
)。
5. 时间延迟绕过
- delayedsleep.py
在时间盲注中插入随机延迟。 - startsleep.py
在 Payload 开头插入SLEEP()
绕过时间检测。
6. 字符串拼接与分割
- charunicodeescape.py
将字符串转换为 Unicode 转义序列。 - concat2concatws.py
使用CONCAT_WS()
替代CONCAT()
(MySQL)。 - commalesslimit.py
用OFFSET
替代LIMIT X, Y
中的逗号(如LIMIT 1 OFFSET 0
)。 - commalessmid.py
用FROM
替代MID()
中的逗号(如MID(VERSION() FROM 1)
)。
7. 注释干扰
- commentbeforeparentheses.py
在括号前插入注释(如(/*!50000SELECT*/
)。 - randomcomments.py
在 Payload 中随机插入//
注释。 - bluecoat.py
在关键字前添加随机注释(如SEL/*RANDOM*/ECT
)。
8. 特殊符号替换
- percentage.py
在字符间插入%
(如SELECT
→S%E%L%E%C%T
)。 - hex2char.py
将十六进制值转换为CHAR()
函数(如0x50
→CHAR(80)
)。 - dollarpercent.py
在 Payload 中随机插入$
或%
。
9. 特定协议/头操作
- xforwardedfor.py
添加X-Forwarded-For
头绕过 IP 限制。 - hpp.py
利用 HTTP 参数污染(重复参数)绕过过滤。 - uagentinject.py
在User-Agent
头中注入 Payload。
10. 组合绕过技术
- multiplespaces.py
插入多个空格混淆语法。 - overlongutf8.py
使用超长 UTF-8 编码绕过过滤。 - htmlencode.py
对 Payload 进行 HTML 实体编码(如<
→<
)。
11. 特定框架/WAF 绕过
- tamper.py
通用模板,可自定义绕过规则。 - modsecurity.py
针对 ModSecurity WAF 的绕过。 - apostrophemask.py
用 UTF-8 全角字符替代单引号(如%27
)。 - svnhexdump.py
将 Payload 转换为 SVN 日志格式的十六进制转储。
12. 非常规绕过
- 0eunion.py
将UNION
转换为0eUNION
,利用科学计数法绕过。 - base64dummy.py
在 Payload 末尾填充伪 Base64 字符。 - zeroblob.py
用ZEROBLOB()
函数混淆 Payload(SQLite)。
使用场景示例
- 绕过空格过滤:
space2comment
+randomcase
- 混淆关键字:
versionedkeywords
+randomcomments
- 编码绕过:
base64encode
+charencode
- 时间盲注绕过:
delayedsleep
+sleep2getlock
完整 Tamper 列表命令
sqlmap --list-tampers
通过灵活组合 Tamper 脚本,可绕过绝大多数 WAF/IDS 规则及特定字符过滤机制。