sqlmap 技巧整理

收集了一些利用Sqlmap作注入測試的TIPS,其中也包含一點繞WAF的技巧,便於你們集中查閱,歡迎接樓補充、分享。html

TIP1web

當咱們注射的時候,判斷注入 sql

http://site/script?id=10
http://site/script?id=11-1 # 至關於 id=10
http://site/script?id=(select 10) # 至關於 id=10shell

http://site/script?id=10 and 1=1 #失敗數據庫

經過判斷可發現and和or被過濾
http://site/script?id=10– # 失敗
http://site/script?id=10;– #失敗
http://site/script?id=10);– #失敗
http://site/script?id=10)subquery;– #失敗express

你能夠用burp的intruder的字典跑,可是仍然失敗。 服務器

這裏能夠用到SQL語句的case when …then … else … end語句
CASE WHEN語句在DB2,ORACLE,SQL SERVER系列,SYBASE等大型數據庫都受到支持,是標準的SQL語句。
能夠這樣子理解:CASE… WHEN… THEN …ELSE …END
cookie

CASE WHEN 語法有兩種狀況:
第一種是CASE 後面不帶表達式的;post

CASE WHEN expression THEN 操做1
WHEN expression THEN 操做2
.......
ELSE 操做n
END

第二種是CASE 後面帶表達式的(而此時WHEN 後面的則是該表達式可能的值),通用。測試

CASE expression
WHEN expression值1 THEN 操做1
WHEN expression值2 THEN 操做2
.......
ELSE 操做n
END 

http://host/script?id=11-(case when 1=1 then 1 else 0 end) 
用1=1跟1=2測試
http://host/script?id=10 # 當條件爲真的時候
http://host/script?id=11 # 當條件爲假的時候

 

能夠很明顯的看到返回不一樣,而後能夠判斷注入。那麼怎麼能讓sqlmap去識別呢?
Sqlmap默認是本身尋找注入點的,可是你加上一個*,能夠引導他。
語句

sqlmap.py -u http://host/script?id=11-(case when 1=1星號 then 1)

注入最頭痛的就是遇到過濾,sqlmap提供了字符轉換的功能

「–tamper=between」固然本身能夠改寫轉換內容,文件在/tamper目錄下。

關於post注入 sqlmap能夠用-r參數 加載數據包

sqlmap.py -r post.txt 

繼續補充一點: having xor等邏輯符號也能夠判斷注入。


TIP2

 

POST注入

有兩種方法來進行post注入,一種是使用--data參數,將post的key和value用相似GET方式來提交。二是使用-r參數,sqlmap讀取用戶抓到的POST請求包,來進行POST注入檢測。

查看payload

以前一直是加本地代理,而後用burpsuit來看sqlmap的payload,到如今才發現用-v參數就能夠實現。一直認爲-v實現的只是控制警告,debug信息級別。實際上使用-v 3就能夠顯示注入的payload,4,5,6還能夠顯示HTTP請求,HTTP響應頭和頁面。

使用google搜索

sqlmap能夠測試google搜索結果中的sql注入,很強大的功能吧。使用方法是參數-g。不過感受實際使用中這個用的仍是不多的。

請求延時

在注入過程當中請求太頻繁的話可能會被防火牆攔截,這時候--delay參數就起做用了。能夠設定兩次HTTP請求間的延時。有的web程序會在屢次錯誤訪問後屏蔽全部請求,這樣就致使以後全部的測試沒法進行,繞過這個策略可使用--safe-url,每隔一段時間去訪問一個正常的頁面。

僞靜態頁面

有些web服務器進行了url rewrite或者網站是僞靜態的,沒法直接提供測試參數,這樣子可使用*來代替要測試的參數。

執行系統命令

當數據庫支持,而且當前用戶有權限的時候,能夠執行系統命令,使用--os-cmd或者--os-shell, 具體的講,當能夠執行多語句的時候,會嘗試用UDF(MySQL,PostgrepSQL)或者xp_cmdshell(MSSQL)來執行系統命令。不 能執行多語句時,仍然會嘗試建立一個webshell來執行語句,這時候就須要web的絕對路徑了。整體來講,成功率偏低,不過我的也有成功的經驗~

測試等級

sqlmap使用--level參數來進行不一樣全面性的測試,默認爲1,不一樣的參數影響了使用哪些payload,2時會進行cookie注入檢測,3時會進行useragent檢測。

TIP3

相關文章
相關標籤/搜索