kali linux之sqlmap


一款開源的命令行自動SQL注入工具,它能夠對多種主流數據庫進行掃描支持,基於Python環境。

檢測動態頁面中get/post參數,cookie,http頭

數據榨取/文件系統訪問

操作系統命令執行

引擎強大,特性豐富

xss檢測

支持主流的數據庫

 

 

五種漏洞檢測技術:

基於布爾的盲注檢測

基於時間的盲注檢測( 'and (select(sleep(20)))a)-- )

基於錯誤的檢測

基於union聯合查詢的檢測(適用於通過循環直接輸出聯合查詢結果,否則只顯示第一項結果)

基於堆疊查詢的檢測(;堆疊多個語句,適用於非select的數據修改,刪除的操作)

 

其他特性:

數據庫直接連接 -d(不通過sql注入,制定身份認證信息,ip,端口)

與burp,google結合使用,支持政策表達式限定測試目標

get,post,cookie,refere,user-agent(隨機或指定)

支持basic,digest,ntml,ca身份認證

數據庫版本,用戶,權限,hash枚舉和字典破解,暴力破解表列名稱

文件上傳下載,udf,啟動並執行存儲過程,操作系統命令執行,訪問windows注冊表

與metasploit集成結合使用,基於數據服務進程提權和上傳執行后門

 

Target:
-d:直接連接數據庫服務器,作為數據庫客戶端使用
-u:后面跟URL地址,最好用雙引號括起來,一定要存在變量名稱
-l:logfile,將Burpsuite或WEbScarab代理記錄的log日志文件提交上來
-x:sitemapurl,將站點地圖sitemap文件提交上來
-m:將有多個URL的文件提交上來進行掃描
-r:提交HTTP request信息的文件
-g:用Google去搜索
-c:提交配置文件

 

實例:

-p參數只對指定的參數進行注入,在上述命令中指定了對username參數進行注入

-f參數查看指紋信息

 

GET方法

sqlmap -u "http://192.168.1.12/mutillidae/index.php?page=user-info.php&username=1&password=2&user-info-php-submit-button=View+Account+Details" -p username -f


查詢的結果會保存在log文件中,位於一個root下的隱藏目錄.sqlmap,可以進入查看相應的信息

 

 --users:查看當前數據庫所有用戶
將注入命令的-f參數改為--users參數,確定過有注入點所以后面的執行速度會很快

 

 

--banner:查看數據庫版本信息

--dbs:查看目標數據庫系統的所有庫

--schema:查看元數據庫,查看到的信息會很多

-a:所有數據都查找

-m:將有多個URL的文件提交上來進行掃描

-g參數,掃描Google搜索結果

 

POST方法:

簡單判斷POST方法的方法,輸入的參數內容提交后沒有出現在URL中,而GET方法中會出現。
使用http request文件,可通過Burpsuite抓取

 

使用Burpsuite的log文件

在Options>Misc>Logging

 

sqlmap -r reuqset.txt

 

sqlmap -l xx-log

 

--force-ssl:掃描HTTPS網站時需要添加參數

-c:掃描配置文件

 

 

Request:

--data數據段:將URL中的參數部分放到后面

GET/POST都適用,在GET方法中將URL后面的參數部分提取出來就好,在POST方法中需要自己用Burpsuite查看URL和參數的值即可,當然也可以在瀏覽器中F12打開開發者工具來查看

 

--param-del:變量分隔符,默認情況下參數變量的分隔符為&,若為其他符號時要使用變量分隔符。

 

 

--cookie:Cookie頭,因為DVWA進入之前需要登錄,即要有cookie,所以在對DVWA進行sqlmap查詢時需要用到cookie參數。同樣,cookie值用Burpsuite可以很方便地查看。

 

sqlmap會自動檢查cookie中的注入點,level至少為2,通過--level 2來執行

 

Sqlmap會自動檢查Set-cookie並更新,若想保留之前使用是用--drop-set-cookie


--user-agent:隨機user-agent

 


Sqlmap檢查user-agent的注入點,level>=3

 

--host:修改Host頭主機內容(Level=5時sqlmap自動掃描)

 

--referer:Level>=3時sqlmap自動掃描

--headers:自定義的HTTP頭,每行一個頭,大小寫區分:

--method=GET/POST:指定使用GET方法或者POST方法


基於HTTP協議的身份驗證:
Basic:基本身份驗證
Digest:摘要身份驗證
NTLM:Windows可能用的身份驗證

 

--delay:每次http(s)請求之間延遲時間,浮點數,單位為秒,默認為無延遲
--timeout:請求超時時間,浮點數,默認為30s
--retries:http(s)連接超時重試次數,默認3次
delay、timeout和retries等參數的設置可有利於避免被發現
--randomize:長度、類型與原始值保持一致的前提下,指定每次請求隨機取值的參數名

--safe-url和--safe-freq:因為檢測和盲注階段會產生大量失敗請求,服務器可能會銷毀session。因此可以使用上述兩個參數來解決,每發送--safe-freq次注入請求后,發送一次正常請求,即發送幾個失敗請求后就發送一次正常信息,繞過服務器的檢測機制

--safe-url和--safe-freq:因為檢測和盲注階段會產生大量失敗請求,服務器可能會銷毀session。因此可以使用上述兩個參數來解決,每發送--safe-freq次注入請求后,發送一次正常請求,即發送幾個失敗請求后就發送一次正常信息,繞過服務器的檢測機制

 

 

 Optimization優化性能:

--predict-output:與--threads參數不兼容,根據檢測方法,將返回值跟統計表中的內容進行比較,縮小檢測范圍,提高效率,統計表在/usr/share/sqlmap/txt/common-outputs.txt,其中有版本名、用戶名、密碼、權限、角色、數據庫名、表名、列名等等


--keep-alive:使用http(s)長連接,避免重復建立連接的網絡開銷,但大量長連接會嚴重占用服務器資源,與--proxy參數不兼容

--null-connection:常用於盲注判斷,只獲取相應頁面的大小值,而不是頁面的具體內容,降低了網絡帶寬消耗,與--text-only參數不兼容(也常用於盲注,基於頁面內容的比較判斷真假)

-o:同時使用--predict-output、--keep-alive和--null-connection三個參數


--threads:最大並發線程,默認值為1,建議不要超過10,否則會影響站點可用性,與--predict-output參數不兼容,盲注時每個線程獲取一個字符(7次請求),獲取完成后線程結束

 

 

Injection:

-p:指定掃描的參數,其他的參數的注入不會進行,使--level失效

 --skip:排除指定的掃描參數

--level=5 --skip=”id,user-agent”



URI注入點:

sqlmap -u “http://1.1.1.1/param1/value1*/param2/value2/”



--dbms:指定數據庫,可以加版本號,提高注入的效率,數據庫名如MySQL<5.0>、Oracle<11i>、Microsoft SQL Server<2005>、PostgreSQL等


--os:指定目標操作系統,提高效率,如Linux、Windows


--invalid-bignum / --invalid-logical:默認情況下,sqlmap使用賦值使參數值失效,Bignum使用大數使參數值失效,Logical使用布爾判斷使參數值失效


--no-cast:默認情況下,sqlmap榨取數據時會將所有結果轉換為字符串,並用空格替換NULL結果,老版本mysql數據庫對此提取不到數據,因而需要該參數取消這個默認處理方式


--no-escape:默認情況下,當payload中有單引號括起字符串時,為了避免混淆和出錯,sqlmap使用char()函數編碼來替換字符串,但有些服務器對於編碼數據的處理會出錯,而這時就需要該參數來關閉此功能
 

--tamper:混淆腳本,用於繞過應用層過濾、IPS、WAF,查看腳本:dpkg -L sqlmap | grep tamper

 

 Detection:

--level:1-5級,默認為1
每個級別發送不同的xml類型的payload:/usr/share/sqlmap/xml/payloads


--risk:1-4級,默認為1、無害
Risk升高可造成數據被篡改等風險


--string / --not-string:指定出現的字段或指定不出現的字段判斷真假


--regexp:正則表達式


--code:指定HTTP返回代碼判斷真假


--text-only:指定頁面的一段內容判斷真假


--titles:指定頁面的標題判斷真假



Techniques:

默認使用全部技術

B:基於布爾的盲注漏洞

E:基於錯誤的檢測

U:基於UNION聯合查詢的檢測

S:基於堆疊查詢的檢測(文件系統、操作系統、注冊表必須)

T:基於時間的盲注漏洞


--time-sec:基於時間的注入檢測相應的延遲時間,默認為5s


--union-cols:默認聯合查詢1-10列,隨--level增加最多支持50列,--union-cols 6-9


--union-char:默認NULL,可以手動指定數值:--union-char 123


--dns-domain:攻擊者控制了一台DNS服務器,使用該參數可提高數據榨取的速度


--second-order:不同的情況:在一個頁面注入的結果,從另一個頁面體現出來(--second-order http://192.168.1.12/b.php)



Fingerprint:

-f、--fingerprint、-b、--banner:查看數據庫管理系統指紋信息、DBMS、操作系統、架構、補丁



Enumeration枚舉:

--current-user:查看當前數據庫管理系統用戶

--current-db:查看當前數據庫

--hostname:查看目標主機名

--users:查看數據庫管理系統所有用戶賬號

--privileges -U username:查看用戶權限,CU為當前用戶

--roles:查看角色

--dbs:查看所有數據庫

--tables:查看表

 --exclude-sysdbs:排除系統數據庫的查詢

--count:計算該項的數目

--schema:查看元數據庫
 
--batch:參數采用默認選項,不進行詢問

--dump-all查看全部

 

Brute Force:


無權讀取information_schema庫時,需要用到暴力破解來掃描


--common-tables:暴力破解表名

--common-columns:暴力破解列名


 

OS:

--os-cmd:執行一條命令,前提是當前用戶有權執行

--os-shell:獲取一個shell,前提是當前用戶有權執行

--sql-shell:獲取sql-shell,前提是當前用戶有權執行

 

 

 

 

友情鏈接 http://www.cnblogs.com/klionsec

               http://www.cnblogs.com/l0cm

               http://www.cnblogs.com/Anonyaptxxx

               http://www.feiyusafe.cn

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM