明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Sqlmap注入技巧集錦

[摘要]TIP1當(dāng)我們注射的時候,判斷注入http://site/script?id=10 http://site/script?id=11-1 # 相當(dāng)于 id=10http://site/script?id=(select 10) # 相當(dāng)于 id=10http://site/script?id=10...

TIP1

當(dāng)我們注射的時候,判斷注入

http://site/script?id=10 http://site/script?id=11-1 # 相當(dāng)于 id=10

http://site/script?id=(select 10) # 相當(dāng)于 id=10

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

通過判斷可發(fā)現(xiàn)and和or被過濾

http://site/script?id=10– # 失敗

http://site/script?id=10;– #失敗

http://site/script?id=10);– #失敗

http://site/script?id=10)subquery;– #失敗

你可以用burp的intruder的字典跑,但是仍然失敗。

這里可以用到SQL語句的case when …then … else … end語句

CASE WHEN語句在DB2,ORACLE,SQL SERVER系列,SYBASE等大型數(shù)據(jù)庫都受到支持,是標(biāo)準(zhǔn)的SQL語句。 可以這樣子理解:CASE… WHEN… THEN …ELSE …END

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

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 # 當(dāng)條件為真的時候 http://host/script?id=11 # 當(dāng)條件為假的時候

可以很明顯的看到返回不同,然后可以判斷注入。那么怎么能讓sqlmap去識別呢? Sqlmap默認是自己尋找注入點的,但是你加上一個*,可以引導(dǎo)他。 語句

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

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

“–tamper=between”當(dāng)然自己可以改寫轉(zhuǎn)換內(nèi)容,文件在/tamper目錄下。

關(guān)于post注入 sqlmap可以用-r參數(shù) 加載數(shù)據(jù)包

sqlmap.py -r post.txt
 
繼續(xù)補充一點: having xor等邏輯符號也可以判斷注入。

TIP2

POST注入

有兩種方法來進行post注入,一種是使用

–data
參數(shù),將post的key和value用類似GET方式來提交。二是使用

-r
參數(shù),sqlmap讀取用戶抓到的POST請求包,來進行POST注入檢測。

查看payload

之前一直是加本地代理,然后用burpsuit來看sqlmap的payload,到現(xiàn)在才發(fā)現(xiàn)用

-v
參數(shù)就可以實現(xiàn)。一直認為

-v
實現(xiàn)的只是控制警告,debug信息級別。實際上使用

-v 3
就可以顯示注入的payload,4,5,6還可以顯示HTTP請求,HTTP響應(yīng)頭和頁面。

使用google搜索

sqlmap可以測試google搜索結(jié)果中的sql注入,很強大的功能吧。使用方法是參數(shù)

-g
。不過感覺實際使用中這個用的還是很少的。

請求延時

在注入過程中請求太頻繁的話可能會被防火墻攔截,這時候

–delay
參數(shù)就起作用了。可以設(shè)定兩次HTTP請求間的延時。有的web程序會在多次錯誤訪問后屏蔽所有請求,這樣就導(dǎo)致之后所有的測試無法進行,繞過這個策略可以使用

–safe-url
,每隔一段時間去訪問一個正常的頁面。

偽靜態(tài)頁面

有些web服務(wù)器進行了url rewrite或者網(wǎng)站是偽靜態(tài)的,無法直接提供測試參數(shù),這樣子可以使用

*
來代替要測試的參數(shù)。

執(zhí)行系統(tǒng)命令

當(dāng)數(shù)據(jù)庫支持,并且當(dāng)前用戶有權(quán)限的時候,可以執(zhí)行系統(tǒng)命令,使用

–os-cmd
或者

–os-shell
,具體的講,當(dāng)可以執(zhí)行多語句的時候,會嘗試用UDF(MySQL,PostgrepSQL)或者xp_cmdshell(MSSQL)來執(zhí)行系統(tǒng)命令。不能執(zhí)行多語句時,仍然會嘗試創(chuàng)建一個webshell來執(zhí)行語句,這時候就需要web的絕對路徑了。總體來說,成功率偏低,不過個人也有成功的經(jīng)驗~

測試等級

sqlmap使用

–level
參數(shù)來進行不同全面性的測試,默認為1,不同的參數(shù)影響了使用哪些payload,2時會進行cookie注入檢測,3時會進行

useragent
檢測。

TIP3

SQLMAP 項目官方WIKI(詳盡) 地址

相關(guān)文章鏈接《Sqlmap Tamper大全(1)》《SqlMap用戶手冊》


上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識,學(xué)習(xí)了安全知識,幾乎可以讓你免費電腦中毒的煩擾。




標(biāo)簽:Sqlmap注入技巧集錦 

相關(guān)文章