本文僅用于討論網絡安全技術,以保護信息安全為目的,請勿用于非法用途!

前面講過sqlmap入門參數,這里主要講解sqlmap的進階參數。
--level 5:探測等級
這個參數指需要執行的測試等級,一共有5個等級;默認情況下,不加level,就是進行最低的1級探測。
Sqlmap在探測的時候會添加自己內置的payload,不同的等級添加的payload附加就不一樣。其中5級是使用全方位的payload進行探測,會自動破解出cookie、XFF等頭部注入。當然萬事有兩面,這樣會導致掃描破解非常慢。

這個參數還會影響測試的注入點,GET和POST的數據都會進行測試,HTTP cookie在level為2時就會測試,HTTP User-Agent/Referer頭在level為3時就會測試。總之,不確定如何測試時,為了保證全面性,建議使用最高的level值 --level 5進行測試。
--is-dba:當前用戶是否為管理員權限
該命令用于查詢當前用戶是否為數據庫的管理員。返回True就是,否則就不是:
sqlmap -u http://192.168.31.16/sql/Less-2/?id=1 --is-dba

--referer:HTTP Referer頭
HTTP Referer是請求頭的一部分,當瀏覽器向web發送請求的時候,一般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用于處理。
SQLMap可以在請求中偽裝HTTP中的referer。當--level設置成3或3以上時,會嘗試對referer注入。可以使用referer命令來欺騙,如--referer 這里就相當于假裝從百度頁面開始進行sql掃描,形成一個欺騙,而不是從自己電腦發起掃描。
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --referer

--sql-shell:運行自定義SQL語句
該命令用于執行指定的SQL語句,相當于返回一個sql環境下的命令窗口!
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --sql-shell

這個就是在sql-shell>下可以執行sql查詢語句的命令行形式。
比如:select * from users,由于我們訪問的是sql目錄,對應的數據庫就是我們之前創建的sql注入環境的數據庫security。所以例舉當前數據庫security中的表users下所有的內容(其實就是用戶和密碼)。

比如:select version(),就能在sql的命令行中查詢對方數據庫的版本。

--roles:列出數據庫管理員角色
該命令查看數據庫用戶的角色(管理員能夠執行的數據庫操作行為)。如果當前用戶具有權限讀取包含所有用戶的表,輸入該命令會列舉每個用戶的角色,也可以用-U參數指定想看哪個用戶的角色。
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --roles

--os-cmd,--os-shell:運行任意操作系統命令
該命令用于執行任意操作系統命令:
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --os-shell
特別注意:使用該命令有幾個必須具備的條件:
1、數據庫用戶權限是dba權限;
可以創建、刪除數據庫的最高用戶權限(--is-dba參數查詢為True)
2、知道網站的絕對路徑;
就是要知道對方web服務器具體在哪個盤,什么文件夾下。
比如:xampp web服務器腳本運行環境默認路徑是C:/xampp/htdocs/, 比如wamp web服務器腳本運行環境默認路徑是C:/wamp/www/, 還有lnetpub服務器腳本運行環境默認路徑是C:/Inetpub/wwwroot/。
3、php當中的gpc為off,php自動轉義為關閉狀態
4、就算具備以上條件,由于是涉及到系統命令,也未必可以執行成功。
比如我們使用:sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --os-shell
首先會提示web應用支持什么語言,我們選擇4 php。
我們win7靶機中的wamp有php環境。

然后提示我們選擇目標web服務器的默認絕對路徑!
我們win7的wamp確實在c盤中,而且底層的Apache php腳本運行環境在www目錄下。

沒想到成功調用了win7的os-shell>,你只需要cmd命令就可以cmd shell的形式通過數據庫MySQL來調用win7的系統shell。和我們在win7本地執行的cmd命令一樣!
我這里演示了dir,你也可以使用其他任何能使用的cmd命令。
比如ipconfig,比如net user abc 123456 /add遠程添加用戶,甚至是修改注冊表!

--file-read:從數據庫服務器中讀取文件
首先,假設win7靶機的c盤有123.txt這個文件;

然后在kali終端下輸入:
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --file-read C:/123.txt -v 1
該命令用于讀取執行文件。當數據庫為MySql、PostgreSQL或Microsoft SQL Server,并且當前用戶有權限使用特定的函數時,讀取的文件可以是文本,也可以是二級制文件可執行文件;
這個命令使用--file-read命令讀取了win7靶機中的c盤根目錄下文本文件123.txt,提示下載到了kali本地/root/.sqlmap/output/192.168.31.16/files/C__123.txt;

去kali的/root/.sqlmap/output/192.168.31.16/files/看看,就能發現文件c_123.txt文件;
“.sqlmap”隱藏目錄可以使用搜索找到。

--file-write --file-dest:上傳文件到數據庫服務器
該命令用于寫入本地文件到服務器中。當數據為MySQL、PostgreSQL或者Microsoft SQL Server,并且當前用戶具有dba權限。上傳的文件可以是文本、或者二進制可執行文件。
首先在kali的主文件夾中新建一個文件"12.txt",隨便搞個文件即可!

在kali終端輸入:
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --file-write /root/12.txt --file-dest C:\abc\12.txt -v 1
這里的--file-write后面指定的是kali本地文件;--file-dest后面指定的是遠程服務器的絕對路徑,命名為12.txt;
執行完畢,發現已經顯示上傳成功。保存在對方服務器C:abc12.txt中。

去win靶機c盤看看有沒有,確實有!

到此,我們已經初步學習了SqlMap的進階操作。這些都是常用的web滲透技術,必須要熟練掌握這些命令的使用,當然前提是你的win7靶機要開啟,然后啟動WAMP服務器,畢竟我們的SQLMap工具測試都是針對SQL注入靶場環境,切勿用于非測試環境,否則后果自負!
web滲透我想說
關于kali滲透、Web滲透、Android/ target=_blank class=infotextkey>安卓滲透等嘿客技術。請關注小白嘿客,私信獲取。歡迎在下方評論區留言討論!