SQLmap Tamper-API:一款功能强大的tamper脚本处理工具
字数 1335 2025-08-11 17:40:17

SQLmap Tamper-API 使用详解

一、工具概述

SQLmap Tamper-API 是一款功能强大的 tamper 脚本处理工具,它解决了 SQLmap 原生只能接受 Python 语言编写 tamper 脚本的限制。通过该工具,研究人员可以使用自己熟悉的编程语言(如 Ruby、Perl、Java 等)编写 tamper 脚本,并在 SQLmap 中执行。

二、核心原理

1. 运行机制

  1. tamper-api.py 脚本作为中间层,负责 SQLmap 与外部 tamper 脚本的通信
  2. 通信数据格式采用 JSON
  3. 数据传输流程:
    • tamper-api.py 将 Payload 和 kwargs 以 JSON 格式发送给外部 tamper 脚本的 STDIN
    • 外部 tamper 脚本解析 JSON 数据并进行处理
    • 处理后的数据以 JSON 格式通过 STDOUT 返回给 tamper-api.py
    • tamper-api.py 读取并解析数据后发送给 SQLmap

2. 数据格式

输入 JSON 结构:

{
  "payload": "原始Payload字符串",
  "kwargs": {
    "headers": {...},
    "其他参数": "..."
  }
}

输出 JSON 结构(处理后):

{
  "payload": "处理后的Payload字符串",
  "kwargs": {
    "headers": {...},
    "其他参数": "..."
  }
}

三、安装与配置

  1. 克隆项目到本地:
git clone https://github.com/KINGSABRI/sqlmap-tamper-api.git
  1. tamper-api.py 脚本复制到 SQLmap 的 tamper 目录中:
cp sqlmap-tamper-api/tamper-api.py /path/to/sqlmap/tamper/
  1. 参考 tamper-scripts/[YOUR_LANGUAGE] 目录中的示例编写自己的 tamper 脚本

四、使用教程

基本用法

sqlmap -v3 -u http://example.com/pages.php?page=1 --tamper tamper-api your_script.ext

其中:

  • -v3 设置详细级别为 3(可选)
  • -u 指定目标 URL
  • --tamper 指定使用的 tamper 脚本(先 tamper-api,然后是您的脚本)

Ruby 示例脚本解析

#!/usr/bin/env ruby

# Author: KING SABRI | @KINGSABRI
# Description: Base64 encoding all characters in a given payload
# Requirements: None

require 'json'
require 'base64'

@json    = JSON.parse(ARGV[0])    # 解析传入的JSON参数
@payload = @json["payload"]       # 获取原始Payload
@kwargs  = @json["kwargs"]        # 获取其他参数

# 对Payload进行Base64编码
@json["payload"] = Base64.urlsafe_encode64(@payload)

# 输出处理后的JSON
print @json.to_json

开发您自己的 tamper 脚本

  1. 脚本必须能够:

    • 通过命令行参数接收 JSON 输入
    • 解析 JSON 数据
    • 处理 payload 和/或 kwargs
    • 输出处理后的 JSON 数据
  2. 不同语言的实现可参考项目中的示例:

    • Ruby
    • Perl
    • Java
    • 其他支持的语言

五、注意事项

  1. 确保 tamper-api.py 位于 SQLmap 的 tamper 目录中
  2. 外部 tamper 脚本需要有执行权限
  3. 脚本必须正确处理输入输出格式
  4. 对于编译型语言,需要先编译生成可执行文件
  5. 确保脚本依赖的环境和库已正确安装

六、高级应用

1. 多脚本组合使用

可以组合多个 tamper 脚本(包括原生 Python tamper 脚本):

sqlmap -u URL --tamper tamper-api script1.rb,tamper-api script2.pl,space2comment

2. 复杂数据处理

利用 kwargs 传递和修改更多信息:

  • 修改 HTTP 头
  • 处理 Cookie
  • 调整请求参数

3. 调试技巧

  1. 使用 -v 3 或更高详细级别查看处理过程
  2. 单独测试 tamper 脚本的输入输出
  3. 检查脚本的返回码和错误输出

七、项目资源

项目地址: GitHub传送门

包含:

  • 核心脚本 tamper-api.py
  • 多种语言的示例脚本
  • 使用文档

八、总结

SQLmap Tamper-API 通过引入中间层和标准化数据格式,打破了 SQLmap 只能使用 Python tamper 脚本的限制,使安全研究人员能够使用自己熟悉的编程语言开发 tamper 脚本,大大提高了灵活性和开发效率。

SQLmap Tamper-API 使用详解 一、工具概述 SQLmap Tamper-API 是一款功能强大的 tamper 脚本处理工具,它解决了 SQLmap 原生只能接受 Python 语言编写 tamper 脚本的限制。通过该工具,研究人员可以使用自己熟悉的编程语言(如 Ruby、Perl、Java 等)编写 tamper 脚本,并在 SQLmap 中执行。 二、核心原理 1. 运行机制 tamper-api.py 脚本作为中间层,负责 SQLmap 与外部 tamper 脚本的通信 通信数据格式采用 JSON 数据传输流程: tamper-api.py 将 Payload 和 kwargs 以 JSON 格式发送给外部 tamper 脚本的 STDIN 外部 tamper 脚本解析 JSON 数据并进行处理 处理后的数据以 JSON 格式通过 STDOUT 返回给 tamper-api.py tamper-api.py 读取并解析数据后发送给 SQLmap 2. 数据格式 输入 JSON 结构: 输出 JSON 结构(处理后): 三、安装与配置 克隆项目到本地: 将 tamper-api.py 脚本复制到 SQLmap 的 tamper 目录中: 参考 tamper-scripts/[YOUR_LANGUAGE] 目录中的示例编写自己的 tamper 脚本 四、使用教程 基本用法 其中: -v3 设置详细级别为 3(可选) -u 指定目标 URL --tamper 指定使用的 tamper 脚本(先 tamper-api ,然后是您的脚本) Ruby 示例脚本解析 开发您自己的 tamper 脚本 脚本必须能够: 通过命令行参数接收 JSON 输入 解析 JSON 数据 处理 payload 和/或 kwargs 输出处理后的 JSON 数据 不同语言的实现可参考项目中的示例: Ruby Perl Java 其他支持的语言 五、注意事项 确保 tamper-api.py 位于 SQLmap 的 tamper 目录中 外部 tamper 脚本需要有执行权限 脚本必须正确处理输入输出格式 对于编译型语言,需要先编译生成可执行文件 确保脚本依赖的环境和库已正确安装 六、高级应用 1. 多脚本组合使用 可以组合多个 tamper 脚本(包括原生 Python tamper 脚本): 2. 复杂数据处理 利用 kwargs 传递和修改更多信息: 修改 HTTP 头 处理 Cookie 调整请求参数 3. 调试技巧 使用 -v 3 或更高详细级别查看处理过程 单独测试 tamper 脚本的输入输出 检查脚本的返回码和错误输出 七、项目资源 项目地址: GitHub传送门 包含: 核心脚本 tamper-api.py 多种语言的示例脚本 使用文档 八、总结 SQLmap Tamper-API 通过引入中间层和标准化数据格式,打破了 SQLmap 只能使用 Python tamper 脚本的限制,使安全研究人员能够使用自己熟悉的编程语言开发 tamper 脚本,大大提高了灵活性和开发效率。