SqlmapAPI:自动化SQL注入的利器

SqlmapAPI:自动化SQL注入的利器

SqlmapAPI简介

SqlmapAPI是基于sqlmap工具的API接口,它允许用户通过编程方式调用sqlmap的功能,实现自动化的SQL注入安全检测。

在使用SqlmapAPI时,用户可以通过发送HTTP请求来与API进行交互。SqlmapAPI提供了丰富的API接口,包括创建新任务、设置扫描参数、开始扫描、获取扫描状态、读取扫描结果等。这些接口使得用户能够灵活地控制扫描过程,并实时获取扫描结果。

具体来说,使用SqlmapAPI进行SQL注入安全检测的流程通常包括以下几个步骤:

  1. 启动SqlmapAPI服务:用户需要首先启动SqlmapAPI的web服务,以便通过HTTP请求与其进行交互。
  2. 创建新任务:通过发送HTTP GET请求到特定的URL,用户可以创建一个新的扫描任务,并获取任务ID。
  3. 开始扫描:使用HTTP POST请求,用户可以设置扫描任务的参数,指定任务ID并启动扫描。
  4. 获取扫描状态:通过发送HTTP GET请求,用户可以实时获取扫描任务的进度和状态。
  5. 读取扫描结果:当扫描完成后,用户可以发送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

image

执行后,我们可以通过请求 /version,检查是否成功运行
image

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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值