Steven5538

sqlmap API 指南

Word count: 473Reading time: 2 min
2016/05/04 Share

常在玩資安的人肯定是聽過 sqlmap 的,但卻鮮少有人用過 sqlmap 的 API。
官方也沒有釋出相關文件可供閱讀,只好自己 trace code,並寫下這篇以供以後閱讀。

開啟 REST-JSON API server。

1
python sqlmapapi.py -s

此時 console 會產生一個 Admin ID 給你。
Admin ID 可用於以下 method。

1
2
@get("/admin/<adminid>/list")
@get("/admin/<adminid>/flush")

可以對所有 task 進行操作。

其他的 method 如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
@get("/task/new")
@get("/task/<taskid>/delete")
@get("/option/<taskid>/list")
@post("/option/<taskid>/get")
@post("/option/<taskid>/set")
@post("/scan/<taskid>/start")
@get("/scan/<taskid>/stop")
@get("/scan/<taskid>/kill")
@get("/scan/<taskid>/status")
@get("/scan/<taskid>/data")
@get("/scan/<taskid>/log/<start>/<end>")
@get("/scan/<taskid>/log")
@get("/download/<taskid>/<target>/<filename:path>")

一個任務的產生首先要先從 /task/new 取得 taskid,然後再送到 /scan/<taskid>/start
而其 post 所需要的 data 需由 JSON 格式呈現,內容為一般對 sqlmap 的參數名,以下例子假設您欲對 http://example.com 進行一個 POST 注入內容為 username=123&password=456 則送到 /scan/<taskid>/start 的內容如下。

1
2
3
4
{
"url": "http://example.com",
"data": "username=123&password=456"
}

送出後即可從 /scan/<taskid>/log 得到注入過程的記錄,而 /scan/<taskid>/status 能夠取得注入是否完成,其 status 共有三種 not runningrunning 以及 terminated
若取得 terminated 表示注入完成。

而注入成功與否,則是從 /scan/<taskid>/data 取得,若成功,則回傳的 JSON data 不為空,並含有注入點相關資訊。

擁有以上這些資訊,即可以將 sqlmap 做平行化掃描,或作為其他產品應用。

CATALOG