SqlmapAPI:自动化SQL注入的利器
SqlmapAPI简介
SqlmapAPI是基于sqlmap工具的API接口,它允许用户通过编程方式调用sqlmap的功能,实现自动化的SQL注入安全检测。
在使用SqlmapAPI时,用户可以通过发送HTTP请求来与API进行交互。SqlmapAPI提供了丰富的API接口,包括创建新任务、设置扫描参数、开始扫描、获取扫描状态、读取扫描结果等。这些接口使得用户能够灵活地控制扫描过程,并实时获取扫描结果。
具体来说,使用SqlmapAPI进行SQL注入安全检测的流程通常包括以下几个步骤:
- 启动SqlmapAPI服务:用户需要首先启动SqlmapAPI的web服务,以便通过HTTP请求与其进行交互。
- 创建新任务:通过发送HTTP GET请求到特定的URL,用户可以创建一个新的扫描任务,并获取任务ID。
- 开始扫描:使用HTTP POST请求,用户可以设置扫描任务的参数,指定任务ID并启动扫描。
- 获取扫描状态:通过发送HTTP GET请求,用户可以实时获取扫描任务的进度和状态。
- 读取扫描结果:当扫描完成后,用户可以发送HTTP GET请求读取扫描结果,并根据结果进行相应的处理。
SqlmapAPI 命令
Usage: sqlmapapi.py [options]
Options:
-h, --help 显示此帮助消息并退出
-s, --server 作为REST-JSON API服务器运行
-c, --client 作为REST-JSON API客户端运行
-H HOST, --host=HOST REST-JSON API服务器的主机(默认为“127.0.0.1”)
-p PORT, --port=PORT REST-JSON API服务器的端口(默认8775)
--adapter=ADAPTER 要使用的服务器(bottle)适配器(默认“wsgiref”)
--database=DATABASE 设置IPC数据库文件路径(可选)
--username=USERNAME Basic身份验证用户名(可选)
--password=PASSWORD Basic身份验证密码(可选)
所以我们可以执行以下命令来运行服务端:
python sqlmapapi.py -s -H 192.168.19.130 -p 8775
执行后,我们可以通过请求 /version
,检查是否成功运行
SqlmapAPI HTTP请求
1. 获取服务器版本
路径: /version
方法: GET
描述: 获取服务器的版本信息。
响应:
- 200 OK:
- Content-Type: application/json
- 响应体:
{
"version": "1.5.7.7#dev", // 版本号,例如 "1.5.7.7#dev"
"success": true // 操作是否成功,例如 true
}
2. 创建新任务
路径: /task/new
方法: GET
描述: 创建一个新的扫描任务。
响应:
- 200 OK:
- Content-Type: application/json
- 响应体:
{
"taskid": "fad44d6beef72285", // 任务ID,例如 "fad44d6beef72285"
"success": true // 操作是否成功,例如 true
}
3. 启动扫描
路径: /scan/{taskid}/start
方法: POST
描述: 根据任务ID启动扫描。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
请求头: - Content-Type: application/json
- 请求体:
// 例1:
{
"url": "http://testphp.vulnweb.com/artists.php?artist=1" // 要扫描的URL
}
// 例2:
{
"url": "http://192.168.0.2:3100/api/v1/role/create", // 要扫描的URL
"method": "POST", // 请求方法
"data": "{\"name\":\"2\"}", // 请求体(json)
"headers": "token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nContent-Type: application/json" // 请求头, 多个用\n分割
}
响应:
- 200 OK:
- Content-Type: application/json
- 响应体:
{
"engineid": 19720, // 引擎ID,例如 19720
"success": true // 操作是否成功,例如 true
}
4. 停止扫描
路径: /scan/{taskid}/stop
方法: GET
描述: 根据任务ID停止扫描。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
响应: - 200 OK:
- Content-Type: application/json
- 响应体:
{
"success": true // 操作是否成功,例如 true
}
5. 获取扫描状态
路径: /scan/{taskid}/status
方法: GET
描述: 根据任务ID获取扫描状态。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
响应: - 200 OK:
- Content-Type: application/json
- 响应体:
{
"status": "terminated", // 状态,例如 "terminated"
"returncode": 0, // 返回码,例如 0
"success": true // 操作是否成功,例如 true
}
6. 列出任务选项
路径: /scan/{taskid}/list
方法: GET
描述: 根据任务ID列出任务选项。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
响应: - 200 OK:
- Content-Type: application/json
- 响应体:
{
"success": true, // 操作是否成功,例如 true
"options": [ // 选项列表
{
// 选项对象
}
]
}
7. 获取扫描结果数据
路径: /scan/{taskid}/data
方法: GET
描述: 根据任务ID获取扫描结果数据。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
响应: - 200 OK:
- Content-Type: application/json
- 响应体:
{
"data": [ // 数据列表
{
// 数据对象
}
],
"success": true, // 操作是否成功,例如 true
"error": [ // 错误列表(如果有)
{
// 错误对象
}
]
}
8. 获取日志消息
路径: /scan/{taskid}/log
方法: GET
描述: 根据任务ID获取日志消息。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
响应: - 200 OK:
- Content-Type: application/json
- 响应体:
{
"log": [ // 日志列表
{
// 日志对象
}
],
"success": true // 操作是否成功,例如 true
}
9. 杀死扫描任务
路径: /scan/{taskid}/kill
方法: GET
描述: 根据任务ID杀死扫描任务。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
响应: - 200 OK:
- Content-Type: application/json
- 响应体:
{
"success": true // 操作是否成功,例如 true
}
10. 删除任务
路径: /task/{taskid}/delete
方法: GET
描述: 根据任务ID删除任务。
参数:
- taskid (路径参数, 必填): 扫描任务ID。
响应: - 200 OK:
- Content-Type: application/json
- 响应体:
{
"success": true // 操作是否成功,例如 true
}