SQLMapAPI是sqlmap提供的RESTful API接口,允许用户通过HTTP请求来控制sqlmap进行扫描。以下是详细的使用步骤:
首先需要启动SQLMapAPI服务:
python sqlmapapi.py -s
默认监听地址是127.0.0.1:8775
,可以使用-H
和-p
参数修改监听地址和端口。
使用SQLMapAPI的基本流程如下:
curl -v "http://127.0.0.1:8775/task/new"
响应示例:
{
"taskid": "1a2b3c4d5e",
"success": true
}
使用获取的taskid设置扫描选项:
curl -v -H "Content-Type: application/json" -X POST -d '{"url": "http://testphp.vulnweb.com/artists.php?artist=1"}' "http://127.0.0.1:8775/scan/1a2b3c4d5e/start"
常用选项参数:
- url
: 目标URL
- data
: POST数据
- cookie
: Cookie值
- level
: 测试等级(1-5)
- risk
: 风险等级(1-3)
- technique
: 测试技术(B, E, U, S, T, Q)
- proxy
: 代理设置
curl -v "http://127.0.0.1:8775/scan/1a2b3c4d5e/status"
响应示例:
{
"status": "running",
"returncode": null
}
curl -v "http://127.0.0.1:8775/scan/1a2b3c4d5e/data"
curl -v "http://127.0.0.1:8775/scan/1a2b3c4d5e/stop"
curl -v "http://127.0.0.1:8775/task/1a2b3c4d5e/delete"
可以编写脚本自动化处理多个目标:
import requests
API_URL = "http://127.0.0.1:8775"
targets = ["http://target1.com", "http://target2.com"]
for target in targets:
# 创建任务
res = requests.get(f"{API_URL}/task/new")
taskid = res.json()["taskid"]
# 设置选项并启动扫描
options = {"url": target, "level": 3, "risk": 2}
requests.post(f"{API_URL}/scan/{taskid}/start", json=options)
# 可以在这里添加状态检查逻辑
SQLMapAPI还提供了admin接口用于管理:
# 获取服务器信息
curl "http://127.0.0.1:8775/admin/list"
# 刷新服务器
curl "http://127.0.0.1:8775/admin/flush"
--server-auth
参数设置认证问题1: 连接被拒绝 - 确保SQLMapAPI服务已启动 - 检查防火墙设置
问题2: 任务不启动 - 检查选项参数是否正确 - 查看SQLMapAPI日志输出
问题3: 性能问题 - 对于大量扫描,考虑分布式部署 - 调整扫描参数降低资源消耗
通过SQLMapAPI,您可以轻松地将sqlmap集成到自动化安全测试流程中,实现批量扫描和结果收集。