sqlmap使用手冊

iamblackcat發表於2022-03-04

關於sqlmap

sqlmap支援包括mysql、Oracle、SQL Server、MariaDB、DB2、Sql Lite、Access等諸多主流的DBMS,可用於五種不同型別的SQL隱碼攻擊,分別是:1.布林型盲注(boolean-based blind)、2.時間型盲注(time-based blind)、3.報錯型注入(error-based)、4.聯合查詢注入(UNION query)、5.堆疊查詢注入。前面寫過一篇sqli-labs1-38關手注的文章,提到過這幾種注入型別。

用法

探測指定的url是否存在注入點

sqlmap -u "http://sqlilabs.com/Less-1/?id=1"

如圖是sqli-labs第一關的測試結果,可以看到引數id存在注入漏洞,id為GET型,一共存在4種型別的注入,有boolean-based blind,error-based,time-based blind,UNION query,並且把payload也顯示了出來。另外識別出我們的DBMS為MySQL且版本大於5.0,作業系統為Windows,web容器為Apache2.4.23 ,PHP版本為5.2.17。

在獲得注入點後,可以進一步獲取有關資料庫的敏感資訊

獲取資料庫相關的敏感資訊

常用:
當前資料庫:--current-db
檢視所有資料庫:--dbs
資料庫當前使用者:--current-user
檢視資料庫所有使用者:--users
檢視資料庫所有角色:--roles
檢視當前使用者是否是管理員:--is-dba
指定資料庫爆出所有表:-D <database> --tables
指定資料庫的表爆出所有的列:-D <database> -T <table> --columns
指定資料庫的表的列爆出該列所有資料:-D <database> -T <table> -C <column> --dump
獲取全部資料:--all(通常不建議,會產生大量請求獲取有用和無用的資料)
獲取DBMS詳細版本:--banner
獲取伺服器主機名:--hostname
列出和破解DBMS使用者密碼雜湊:--passwords
列出DBMS所有使用者許可權:--privileges

其他開關和選項

指定輸出詳細程度:-v (0~6,3為最佳選擇,可以知道payload)
直連資料庫:-d
指定url:-u
從檔案中載入http請求:-r(POST型通常抓包儲存到txt中)
匿名注入:--tor

指定指令碼進行繞過:--tamper=<指令碼名>--tamper="指令碼1,指令碼2,..."
設定檢測級別:--level(1~5等級越高,檢測注入點的範圍越大;大於2會測試http cookie頭部,大於3會測試http UserAgent/Refer頭部)
設定風險等級:--risk(1~3,預設1對大多數注入點測試沒有風險,級別2會新增大量基於時間盲注測試語句,級別3會新增or型別的布林型盲注測試)
指定sql注入技術:--technique <x>(b、e、u、s、t、q分別代表:布林盲注、報錯注入、聯合查詢注入、堆疊注入、時間型盲注、內聯查詢注入)
設定時間盲注延遲相應秒數:--time-sec <time> (預設為5)
指紋識別:--fingerprint-f(獲取更精準的識別結果使用-b即--banner)

讀取伺服器檔案系統的檔案:--file-read <伺服器檔案路徑>
想伺服器上傳檔案:--file-write--file-dest<本地檔案路徑>(可以是文字檔案或二進位制檔案,例如上傳一個一句話木馬或nc.exe)
接管作業系統:--os-cmd--os-shell(可以在伺服器上執行命令)
嘗試識別後端waf/ips(如果有):--identify-waf
使用http引數汙染:--hpp(一種繞過waf/ips防護的方法)
跳過檢測waf/ips:--skip-waf
偽裝成移動裝置:--mobile
啟動互動式的sqlmap shell:--shell
使用短助記符:-z 後跟以雙引號包圍的以逗號分隔的每個選項和開關的短助記符的形式,從而可以避免寫一長串的選項和開關

主要參考了sqlmap的使用者手冊中文版,使用者手冊真的好,寫的很清晰很詳細,學到了很多選項的用法,感謝作者、感謝譯者!

相關文章