在渗透测试中,Web 应用防护系统(简称 WAF) 已经成为 SQL 注入测试时,必须面对的关键障碍。
作为网络安全人员,我们深刻理解 sqlmap 中 Tamper 脚本的价值,今天我们将聚焦 10 个关键 Tamper 脚本的用法,揭示其在真实场景中的应用技巧。
一、Tamper 脚本的核心不仅仅是绕过
Tamper 脚本的本质是 SQL 注入负载的实时变形引擎。
在 sqlmap 执行过程中,这些脚本能够动态修改攻击载荷,使其绕过 WAF 的规则检测,同时保持对目标数据库的有效性。
(一)技术原理简析
输入变形:修改 SQL 语句的编码、格式或结构;
规则混淆:破坏 WAF 的固定模式匹配;
协议级干扰:操纵HTTP请求的构造方式;
上下文欺骗:使攻击载荷符合特定应用场景特征。
二、10 大 Tamper 脚本的应用解析
(一) apostrophemask.py :单引号的隐身术
核心作用:将单引号( ' )转换为 UTF-8 全角字符( %EF%BC%87 )。
高级用法:
# 转换前
SELECT * FROM users WHERE username = 'admin' —
#转换后
SELECT * FROM users WHERE username = %EF%BC%87admin%EF%BC%87 —
实战技巧:
当 WAF 基于 ASCII 字符集检测时效果显著;配合 –tamper=apostrophemask –no-cast 避免 sqlmap 自动转换;对 Oracle 数据库需要进行额外处理: CHR(39) 替代方案。
适用场景:基础字符过滤型 WAF(如 Cloudflare 基础规则)。
(二) equaltolike.py :等号的伪装者
核心作用:将 = 运算符替换为 LIKE 关键字。
变形原理:
# 原始语句
SELECT * FROM users WHERE id=1# 转换后
SELECT * FROM users WHERE id LIKE 1
高级技巧:
在布尔盲注中配合 SUBSTRING 使用:(admin 'AND SUBSTRING (password, 1, 1) LIKE 'a' –);
MySQL 中可结合通配符: = –> LIKE BINARY ;
注意性能影响:在大数据表可能引起全表扫描。
饶过场景:基于等号特征检测的规则(如 ModSecurity 规则 ID 942110)。
(三) space2comment.py :空白的艺术
核心作用:将空格替换为注释 /**/
高级应用:
# 基础替换
SELECT/**/*/**/FROM/**/users# 高级堆叠技巧
UNION/**//*!44447SELECT*/1,2,3
实战经验:
MySQL 特例:使用 /*!50727 … */ 版本特定语法;
配合多重编码: %20 –> %2%2a%2f
;
避免过度使用:可能导致 SQL 解析器崩溃。
实测数据:对 AWS WAF 经典规则集的绕过率达 63.2%(于2023年测试)。
(四) between.py :范围查询的妙用
核心作用:将比较运算符转换为 BETWEEN 语句。
技术实现:
# 原始语句
id > 10# 转换后
id BETWEEN 11 AND 2147483647
高级技巧:
处理边界值: > N –> BETWEEN N+1 AND MAX_INT ;
时间盲注中的特殊应用:
IF (ASCII (SUBSTR ((SELECT@@version), 1, 1)) BETWEEN 50 AND 60 WAITFOR DELAY '0:0:5' )
结合 CASE WHEH 构造复杂条件。
适用场景:检测 > , < 等比较运算符的 WAF 规则。
(五) modsecurityversioned.py :MySQL 注释魔法
核心作用:使用 MySQL 版本注释包裹语句。
典型示例:
# 原始注入
1 AND 1=1# 转换后
1 /*!30874AND 1=1*/
技术细节:
注释中的数字对应 MySQL 版本号(如 30874 = 3.87.4);
仅当服务器版本 >= 指定版本时执行注释内语句;
可自定义版本号:修改脚本中的 _version_ 变量。
绕过原理:利用 WAF 解析与数据库解析的差异性。






![[2021-4-6 更新]C启动-一款快速启动、桌面美化、桌面管理工具软件 - 宋马](https://pic.songma.com/blogimg/20250422/bc94d939c6e84346b26aa50582cba1cc.jpg)










暂无评论内容