sqlmap工具使用用法詳解

sqlmap工具使用用法詳解
QLmap是一款用來檢測與利用SQL注入漏洞的免費開源工具,有一個很是棒的特性,即對檢測與利用的自動化處理,下面咱們來看sqlmap工具使用用法詳解吧。
sqlmap平時使用得很是的多,但命令也是十分的多。每次用的時候,都要去網上搜索。因而決定本身總結一下sqlmap常見的用法,方便本身使用。
特殊參數
-v
-v表示顯示sqlmap在進行注入時的詳細信息,一共有七個等級,默認爲1
0,只顯示python錯誤以及嚴重的信息
1,同時顯示基本信息和警告信息
2,同時顯示debug信息
3,同時顯示注入的payload
4,同時顯示HTTP請求
5,同時顯示HTTP響應頭
6,同時顯示HTTP響應頁面
–level
默認狀況下SQLMAP只支持GET/POST參數的注入測試,可是當使用–level參數且數值>=2的時候會進行cookie注入測試;當>=3時,會進行User-Agent和Referer的注入測試。
–risk
risk設定風險等級,默認是1會測試大部分的測試語句,2會增長基於事件的測試語句,3會增長OR測試語句。
-f或者–fingerprint
執行檢查普遍的DBMS版本指紋,這個參數用得很少。
獲取URL
-u或者–url
-u是最多見、經常使用的用法
python sqlmap.py -u "http://www.example.com/index.php?id=1"
-l
從burpsuite或者WebScarab代理日誌中去測試每一個URL是否存在SQL注入
-r
從文本文件中獲取HTTP請求(這就要求此文本文件保存的信息是HTTP請求的),這樣HTTP就能夠利用HTTP請求中的參數。
例如文本文件中的內容爲:php

POST /index.php HTTP/1.1
Hos: www.example.com
User-Agent: Mozilla/4.0
id=1
那麼使用sqlmap進行注入時,sqlmap自動將HOST和User-Agent設置爲文本文件中的值
當處理的請求是HTTPS的時候,則須要使用–forc-ssl參數來使用,或者在HOST頭後面加上:443。
請求
POST請求
參數:–data
–data主要適用於POST方式提交。用法以下:python

python sqlmap.py -u "http://www.example.com/index.php" --data="id=1"
cookie相關
參數:-cookie,–load-cookies,–drops-set-cookie
cookie參數在sqlmap中的應用主要是有2個方面:
Web應用須要進行登錄的時候
測試cookie注入
若是須要使用cookie進行登錄,則須要經過–cookie將cookie進行賦值。在HTTP請求中,遇到Set-cookie時,sqlmap會自動獲取而且在之後的請求中加入,而且會嘗試SQL注入。
當–level>=2時,則會嘗試進行cookie的注入測試。
User-Agent相關
參數:–user-agent,–random-agent
默認狀況下sqlmap的HTTP請求頭中的User-Agent是:web

sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
可使用–user-agent參數來進行修改,同時也可使用–random-agent參數來隨機化的從./txt/user-agents.txt中獲取。
當–level參數設定爲3或者是3以上時,會嘗試對User-Agent進行注入測試。
Referer頭
參數:–referer
sqlmap能夠在請求中僞造HTTP中的referer,用法與user-agent的用法相同。當–level參數設定爲3或者3以上的時候會嘗試對referer注入。
請求設置
設定請求間隔
參數:–delay
設定兩次請求間的時間間隔。若設定爲0.5則表示間隔時間是半秒,默認是沒有延遲
設定超時時間
參數:–tiemout
設定超時時間,主要是設定一個請求超過多久被斷定爲超市。弱設定爲10.5表示是10.5秒,默認是30秒。
設定超時重試
參數:–retries
當請求超時時,設定從新嘗試鏈接次數,默認是3次。
關掉URL參數編碼
參數:–skip-urlencode
關閉URL編碼,這個參數通常用得比較少。目前幾乎全部的web服務器都支持RFC標準。
執行自定義Python代碼
參數:–eval
在有些時候,須要根據一個參數的變化而修改另外一個參數,才能造成正常的請求。此時就須要使用到--eval。例子以下sql

python sqlmap.py -u "http://www.example.com?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
上面的請求參數中的hash值就是id值的md5,這時就須要使用到自定義Python代碼了。
注入
測試參數
參數:-p,–skip
-p,表示的就是須要進行注入測試的參數。例如,-p 「id,user-agent」
–skip,表示不不須要進行測試的參數,例如–skip=」user-agent」
僞靜態注入
不少框架會使用URL重寫技術,此時sqlmap就沒法使用參數注入,可是能夠在須要測試的參數後面加上*
例子以下shell

python sqlmap.py -u "http://blog.spoock.com/2016/09/04*/sqli-bypass/"
繞WAF
參數:–tamper
不少時候有WAF設備會攔截sqlmap的注入,此時就須要使用--tamper對注入的SQL語句進行變形來進行繞過。全部的tamper腳本都是在sqlmap中的tamper中的腳本有定義的,能夠進入到tamper目錄下進行查看。數據庫

python sqlmap.py - u"http://www.example.com?id=1" --tamper tamper/between.py,tamper/randomcase.py
提取數據
標誌
參數:-b,–banner
檢索數據庫管理系統的標識
用戶
參數:–current-user
返回當前數據庫的管理用戶
當前數據庫
參數:–current-db
返回當前鏈接的數據庫
DBA檢測
參數:–is-dba
檢測當前的管理用戶是不是DBA
數據庫枚舉
參數:–dbs
若是當前的用戶能夠讀取全部的數據庫的信息,便可列出全部的數據庫
數據庫表枚舉
參數:–tables -D someDatabase
列出某個數據庫(someDatabase)中全部的表名,例子以下:服務器

python sqlmap.py -u "http://www.example.com?id=1" --tables -D cms
字段枚舉
參數:–columns -D someDatabase -T someTable
列出someDatabase數據庫中的someTable表中的全部的字段信息。若是沒有使用-D參數指定某個數據庫的時候,則默認使用當前數據庫cookie

Python sqlamp.py -u "http://www.example.com?id=1" --columns -D cms -T users
獲取表中數據的數目
參數:–count
使用–count就能夠獲取表中數據的個數框架

python sqlmap.py -u"http://www.example.com?id=1" --count -D cms
上述的sqlmap的語句會列出在cms數據庫中全部的表的數據
下載表中的數據
參數:–dump -D someDatabase -T someTable -C someColumns
使用–dump就能夠將某個表中的數據下載到本地。指定-C的值表示是下載某一列全部的數據,若是沒有指定則是下載表中全部的數據。dom

python sqlmap.py -u "http://www.example.com?id=1" --dump -D cms - T users
MISC
自定義SQL語句
參數:–sql-query,–sql-shell
雖然sqlmap會自行選擇sql語句進行測試,可是也能夠選擇執行自定義的SQL語句。

python sqlmap.py -u"http://www.example.com?id=1" --sql-query "select database()" 獲取shell 參數:–os-cmd,–os-shell 使用–os-shell參數能夠模擬一個真實的shell,在此shell上能夠輸入任何想執行的命令。 這個命令平時使用得較少,等有必定的使用體會再來進行詳細的補充說明。

相關文章
相關標籤/搜索