当前位置: 首页 > news >正文

ctfshow-web进阶:SQL注入实战之Tamper脚本深度解析与定制开发

1. SQL注入与Tamper脚本基础认知

第一次接触CTF比赛中的SQL注入题目时,我对着web206的界面发呆了半小时——明明手工测试存在注入点,但用sqlmap跑就是不出数据。后来才发现,这道题在SQL语句中增加了括号包裹参数,就像SELECT * FROM users WHERE (id=1)。这种细节差异正是CTF比赛的魅力所在,也是Tamper脚本诞生的背景。

Tamper脚本的本质是sqlmap的"翻译官"。当遇到特殊过滤规则时,它能将标准payload"翻译"成符合目标要求的格式。比如:

  • 空格被过滤?用space2comment.py把空格变成/**/
  • 等号被屏蔽?equaltolike.py会用LIKE替代
  • 关键词检测?randomcase.py能随机大小写混淆

我常把Tamper脚本比作"特工装备"——普通sqlmap是常规武器,而Tamper就是针对特殊场景的伪装工具包。在web206中,其实不需要特殊Tamper,因为sqlmap会自动测试各种闭合方式(单引号/双引号/括号等)。但到了web207,比赛方开始增加过滤规则,这时候就需要装备上场了。

2. 常见过滤场景与Tamper组合策略

2.1 空格过滤的六种解法

web207演示了最经典的空格过滤场景。除了题目使用的space2comment.py,实战中还有这些替代方案:

# 用加号替代(space2plus.py) SELECT+id+FROM+users # 用水平制表符替代(%09) SELECT%09id%09FROM%09users # 用换行符替代(%0A) SELECT%0Aid%0AFROM%0Ausers # 用内联注释(space2comment.py) SELECT/**/id/**/FROM/**/users # 多重空白(multiplespaces.py) SELECT id FROM users # 哈希符号(space2mssqlhash.py) SELECT%23id%23FROM%23users

去年某次比赛中,我遇到更变态的过滤——同时禁用空格和注释符。最终用%0B(垂直制表符)绕过,这种冷门字符经常被WAF忽略。

2.2 关键词混淆的艺术

web208展示了关键词过滤的对抗。当select被替换为空字符串时,使用randomcase.py生成像SeLeCt这样的随机大小写组合。但要注意:

  1. MySQL在Linux下默认区分大小写(Windows不区分)
  2. 可配合--no-escape关闭URL编码
  3. 极端情况下需要自定义字符映射表

我曾写过一个增强版脚本,不仅随机大小写,还会将s替换为$e替换为ë等特殊字符,这在某些国际编码环境中特别有效。

3. 自定义Tamper开发实战

3.1 基础模板解析

所有Tamper脚本都遵循相同结构。以web209的myon.py为例:

#!/usr/bin/env python from lib.core.compat import xrange from lib.core.enums import PRIORITY __priority__ = PRIORITY.LOW # 执行优先级 def dependencies(): # 依赖声明 pass def tamper(payload, **kwargs): retVal = payload if payload: retVal = "" # 核心处理逻辑... return retVal

关键点在于tamper函数,它接收原始payload,返回处理后的字符串。开发时要特别注意:

  • 保留引号内的内容不变
  • 处理嵌套符号时维护语法正确性
  • 避免引入新的敏感字符

3.2 编码类Tamper开发

web210的base64双重反转是个典型例子。其核心逻辑只有三行:

def tamper(payload, **kwargs): if payload: return base64.b64encode(base64.b64encode(payload[::-1])[::-1]).decode()

但实际开发中要注意:

  1. 字符串与bytes类型转换(encode()/decode()
  2. 异常处理(如非ASCII字符处理)
  3. 与其它Tamper的兼容性(通过__priority__调整)

建议开发流程:

  1. 先用Python交互环境测试编码逻辑
  2. 编写最小化Tamper脚本
  3. --tamper your_script.py --test-filter局部测试
  4. 最后整合到完整注入流程

4. 高级绕过技巧与调试方法

4.1 多重Tamper组合策略

在web209中,我们需要同时处理空格和等号过滤。这时可以组合多个Tamper:

--tamper=myon.py,equaltolike.py

执行顺序遵循:

  1. __priority__值从高到低
  2. 同优先级按命令行顺序
  3. 最后执行sqlmap自带的优化处理

我曾遇到需要五个Tamper串联的情况,这时候要特别注意:

  • 避免循环处理(如A脚本输出触发B脚本过滤)
  • 使用--proxy=http://127.0.0.1:8080配合Burp观察中间payload
  • 通过--test-string="TEST_VALUE"验证最终效果

4.2 常见报错解决方案

问题1__init__.py missing错误

  • 原因:自定义Tamper目录缺少初始化文件
  • 解决:从sqlmap的tamper/目录复制__init__.py

问题2TypeError: can only concatenate str (not "bytes") to str

  • 原因:Python 3中字符串与bytes混用
  • 解决:统一使用payload.encode().decode()

问题3:Tamper处理后语法错误

  • 调试命令:sqlmap --tamper=your.py --sql-query="SELECT 1"
  • 技巧:在脚本中加入print(f"处理前: {payload}\n处理后: {retVal}")

5. 防御视角的Tamper对抗

作为防守方,我建议采用多层过滤策略:

  1. 基础层:预处理(如强制参数类型)
  2. 中间层:正则过滤(如/(\bselect\b|\bunion\b)/i
  3. 深层:语义分析(检测非常规空格使用)

特别要注意异常流量监控,比如:

  • 短时间内大量LIKE语句
  • 混合多种空白字符的请求
  • 异常编码参数

某次内部演练中,我们通过监控/**/注释的使用频率,成功识别了自动化攻击工具。

http://www.jsqmd.com/news/495975/

相关文章:

  • 再发五大企业级Skills,小龙虾秒变小神龙!
  • OGG 经典模式下动态扩展同步表的实战指南
  • DeepSeek-OCR惊艳效果展示:模糊图片文字识别实测案例
  • 老旧Mac设备显卡驱动适配技术解析与实战指南
  • 一键部署Glyph视觉推理环境,零基础也能处理整本小说和代码库
  • Windows端口占用太头疼?netsh命令一键清理TCP excludedportrange(附完整操作流程)
  • 工业夹爪选购标准是什么?快速筛选实力工业夹爪品牌指南 - 品牌2026
  • 机械臂控制必看:详解旋转矩阵在ROS中的5种典型应用场景(含TF2示例)
  • 医学图像分割选U-Net还是DeepLab?2024年6大深度学习模型横向评测(附PyTorch代码)
  • 革新性OpenCore配置工具:OpCore Simplify重新定义黑苹果EFI制作流程
  • 手把手教你用TLSR8250模组搭建智能家居Mesh网络(附AT指令集详解)
  • 2026金属滤袋市场新动态:这些厂家受青睐,市场有实力的金属滤袋哪家好聚焦优质品牌综合实力分析 - 品牌推荐师
  • 从基准测试到创新:利用生成先验构建鲁棒图像水印以抵御深度编辑攻击
  • ChatTTS服务端部署实战:从零搭建高可用语音合成系统
  • 零基础手把手教你激活WebStorm(含最新下载链接及详细操作截图)
  • 2026年大中型企业如何优选国产高性价比CRM系统 - 纷享销客智能型CRM
  • 3步解锁金融数据自由:面向量化研究者的零成本解决方案
  • 加密狗技术全揭秘:从硬件安全到行业应用实践
  • TradingAgents-CN全栈实践:从零搭建智能交易决策系统实战指南
  • Qt 5.14实战:用QGraphicsView打造可交互的2D绘图工具(附完整代码)
  • YOLOv10实战:从零部署到自定义数据集实时检测
  • mongoose实战指南:构建高效HTTP通信服务
  • 深入解析微信小程序中的appid、openid与unionid:从定义到实战应用
  • 深入解析目标检测中的IoU计算逻辑与优化实践
  • 老旧设备系统升级焕新指南:OpenCore Legacy Patcher全流程应用
  • SpringAOP实战:5分钟搞定日志记录与性能监控(附完整代码)
  • Java实战:5分钟搞定Outlook日历事件同步到本地应用(含完整代码)
  • DISM++实战指南:高效精简Windows系统的秘密武器
  • LangChain+Chroma避坑指南:异步操作与性能优化全解析
  • Neeshck-Z-lmage_LYX_v2性能实测:不同硬件配置下的生成速度对比