作者:
Manning
·
2015/06/19 10:31
0x00 前言
sqlmap可謂是sql注入探測的神器,優秀的探測功能可以讓任何一個使用者無基礎挖掘sql注入。wooyun上關於sqlmap的文章已經有6篇了,都沒有科 普sqlmapapi.py。因此我打算分享下這方面的實踐。利用sqlmap測試SQL隱碼攻擊的效率很低,每一個url都需要手動測試,這樣肯定不是理想狀態。 sqlmap的作者肯定也察覺到這一點了,默默的開發了sqlmapapi.py,當你使用了sqlmapapi.py後才能體會到sqlmap的強大。sqlmap構建了一個自動化 分散式的掃描帝國!這篇文章我主要從sqlmapapi.py的程式碼角度和AutoSqli類的設計與實現的角度展開。
0x01 sqlmapapi.py綜述
sqlmapapi.py給使用者提供了一個強大的功能,服務功能。使用者可以利用sqlmapapi.py開啟服務埠,以後只要向sqlmapapi傳送請求,就可以進行sql注入,然後傳送查詢請求,就可以得到這個url是否是注入點,以及詳細的內容。同學們看到這裡是不是有些小激動呢? sqlmapapi.py的help,我們需要用的是-s引數,也許你也有可能用到-p引數。
從sqlmapapi.py檔案可以看出來,我們利用的檔案的呼叫關係是
進入到lib/utils/api.py的server類,可以發現透過向server提交資料進行與服務的互動。 一共分為3種型別。
- Users' methods 使用者方法
- Admin function 管理函式
- sqlmap core interact functions 核心互動函式
可以提交資料的種類如下。
使用者方法
- @get("/task/new")
- @get("/task//delete")
管理函式
- @get("/admin//list")
- @get("/admin//flush")
核心互動函式
- @get("/option//list")
- @post("/option//get")
- @post("/option//set")
- @post("/scan//start")
- @get("/scan//stop")
- @get("/scan//kill")
- @get("/scan//status")
- @get("/scan//data")
- @get("/scan//log//")
- @get("/scan//log")
- @get("/download///