檢測注入點統一格式:
sqlmap -u "http://www.code521.com/market1/index.php?market_id=1089" --random-agent --delay=0.5 --batch -v "4" --level=3 sqlmap -r "/root/url.t" --random-agent --delay=0.5 --batch -v "4" --level=3 sqlmap -u "http://www.code521.com/market1/index.php?market_id=1089" --random-agent --delay=0.5 --batch -v "4" --crawl=2 --level=3 sqlmap.py -g "inurl:\".php?id=1\""
加載目標的地址
-u 測試是否存在注入的動態或者偽靜態的url地址。
-g 測試注入Google的搜索結果中的GET參數(只獲取前100個結果)。like python sqlmap.py -g "inurl:\".php?id=1\""
此外可以使用-c參數加載sqlmap.conf文件里面的相關配置。
-l 可以直接吧Burp proxy或者WebScarab proxy中的日志直接倒出來交給sqlmap來一個一個檢測是否有注入。
從文本中獲取多個目標掃描
-m 文件中保存url格式,sqlmap會一個一個檢測
-r sqlmap可以從一個文本文件中獲取HTTP請求,這樣就可以跳過設置一些其他參數。
注意: 1:常用的是 2個 -u 。 跑cookie post的話直接抓包 結果-r 讀取進來即可!
2:以上5個參數不能同時存在,選擇了種方式不能再選擇另外的方式,例如選擇了-r 那么就不能使用-u
提交方式的整理
GET 通過-u 指定URL地址 -p 指定要測試的get請求參數
POST -u --data (-r 抓包的數據)
cookies -u --cookie (-r 抓包數據) --level(2 cookies開始測試)
User-Agent/Referer -u --level(3 Agent/Referer開始測試)
附加參數的調整
--data=DATA Data string to be sent through POST 此參數是把數據以POST方式提交,sqlmap會像檢測GET參數一樣檢測POST的參數。 例如: sqlmap.py -u "http://www.code521.com/index.php" --data="id=1" -f --banner --dbs --users 注意:項目實戰中,post提交的數據中只是測試單個的參數是否存在sql注入的話這樣用,測試所有的post用-r 結合抓包獲取的數據做測試 --param-del 當GET或POST的數據需要用其他字符分割測試參數的時候需要用到此參數。 例如:sqlmap.py -u "http://www.code521.com/index.php" --data="query=foobar;id=1" --param-del=";" -f --banner --dbs --users 注意:該參數當get 或者POST全球的參數比較多,而只是想測試眾多參數中的幾個參數的話需要使用該選項做分割 --user-agent --random-agent 默認情況下sqlmap的HTTP請求頭中User-Agent值是: sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org) 可以使用--user-anget參數來修改,同時也可以使用--random-agnet參數來隨機的從./txt/user-agents.txt中獲取。 注意:強烈建議一定要加上--random-agent 參數,現在好多web防火牆檢測到提交的請求數據包中包含sqlmap數據包直接就拋棄了。 --delay 可以設定兩個HTTP(S)請求間的延遲,設定為0.5的時候是半秒,默認是沒有延遲的,針對防火牆限制快速訪問有很大的作用 注意:強烈建議一定要加上 --delay 來限制請求間隔 --timeout 可以設定一個HTTP(S)請求超過多久判定為超時,10.5表示10.5秒,默認是30秒。 注意:超時時間30秒 --retries 當HTTP(S)超時時,可以設定重新嘗試連接次數,默認是3次。 注意:可以不用修改 --randomize 可以設定某一個參數值在每一次請求中隨機的變化,長度和類型會與提供的初始值一樣。 注意:某種條件之下,這個是必須要用到的。抓包多次請求查看,現在這些情況越來越多,一定要注意。 --scope burp 抓取的結果很多,可以通過該參數指定的正則表達式來匹配內容, 例如:sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)" 第三方掃描器,爬行出來的目標可以通過正則來指定跑,例如爬行的內容好多靜態的文件可以通過該參數指定過濾的靜態內容之來掃描動態的參數 --safe-url 有的web應用程序會在你多次訪問錯誤的請求時屏蔽掉你以后的所有請求,這樣在sqlmap進行探測或者注入的時候可能造成錯誤請求而觸發這個策略,導致以后無法進行。 提供一個安全不錯誤的連接,每隔一段時間都會去訪問一下。 注意:不要懷疑該參數的作用,在不知道防火牆策略的時候這種辦法有時間效果很好 --safe-freq 有的web應用程序會在你多次訪問錯誤的請求時屏蔽掉你以后的所有請求,這樣在sqlmap進行探測或者注入的時候可能造成錯誤請求而觸發這個策略,導致以后無法進行。 提供一個安全不錯誤的連接,每次測試請求之后都會再訪問一邊安全連接。 注意:不要懷疑該參數的作用,在不知道防火牆策略的時候這種辦法有時間效果很好 --eval 在有些時候,需要根據某個參數的變化,而修改另個一參數,才能形成正常的請求,這時可以用--eval參數在每次請求時根據所寫python代碼做完修改后請求。 例如:sqlmap.py -u "http://www.code521.com/index.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()" 注意:現在這種情況遇到很多,每次請求后面的里面的參數動態變化。 --prefix --suffix 在有些環境中,需要在注入的payload的前面或者后面加一些字符,來保證payload的正常執行。 發現0day自己編寫payload需要是該參數 --tamper sqlmap除了使用CHAR()函數來防止出現單引號之外沒有對注入的數據修改,你可以使用--tamper參數對數據做修改來繞過WAF等設備。 注意:轉換注入字符過防火牆,自帶很多腳本,mysql mssql等,有專門的介紹,地址:::
詳細提交信息查閱
-v VERBOSE Verbosity level: 0-6 (default 1) 如果你想看到sqlmap發送的測試payload最好的等級就是3。
0、只顯示python錯誤以及嚴重的信息。
1、同時顯示基本信息和警告信息。(默認)
2、同時顯示debug信息。
3、同時顯示注入的payload。
4、同時顯示HTTP請求。
5、同時顯示HTTP響應頭。
6、同時顯示HTTP響應頁面。