編寫Burp分塊傳輸外掛程式繞WAF

2021-10-19 21:10:59 字數 1843 閱讀 8281

我們先來看看外掛程式要實現的功能

在burp repeater套件上可對資料報進行快速chunked解碼編碼

自動化對burp的proxy,scanner,spider等套件的資料報進行編碼

可設定分塊長度,是否開啟注釋

限於邊幅,我只說明核心函式,並通過注釋的方式解釋**的相關功能。

2.1 編碼函式

這是我們的核心函式,對各個套件資料http資料進行chunked編碼

//對資料報進行編碼處理

liststr_list = util.getstrlist(body,config.splite_len);

string encoding_body = "";

for(string str:str_list)else

encoding_body += "\r\n";

encoding_body += str;

encoding_body += "\r\n";

}encoding_body += "0\r\n\r\n";

//在資料報中新增transfer-encoding: chunked頭

listheaders = helpers.analyzerequest(request).getheaders();

iteratoriter = headers.iterator();

while (iter.hasnext())

}headers.add("transfer-encoding: chunked");

return helpers.buildhttpmessage(headers,encoding_body.getbytes());

自動編碼其他模組的資料報,我們可以通過實現burp的ihttplistener,iproxylistener這兩個介面,分別實現processhttpmessage(),processproxymessage()這兩個方法。

這裡注意乙個問題,burp的所有模組的http流量都會經過ihttplistener.processhttpmessage()這個方法,但是如果在這裡處理資料報的話,burp proxy模組的資料報被修改之後,不會在proxy套件ui介面顯示修改後的流量,故proxy模組流量處理單獨使用iproxylistener.processproxymessage()。

2.2 自動編碼proxy套件的流量

2.3 自動編碼proxy之外的套件(intruder,scanner…)流量

}}3.1 演示一:快速編碼解碼

在burp repeater套件可以快速對請求內容進行chunked編碼解碼,來對waf進行測試。

快速編碼解碼對waf進行測試

3.2 演示二:搭配sqlmap進行sql注入

sqlmap**到burp中,外掛程式對proxy套件的流量進行編碼處理,來繞過waf。

搭配sqlmap繞waf

利用分塊傳輸吊打所有waf

在http協議層面繞過waf

XSY2762 插線板 分塊

有 n 個插線板,每個插線板會在 l i 時刻初插入到佇列中 佇列是按插線板的編號排序的 r i 時刻末移除。插入乙個插線板時會對當前所有接在佇列中這個插線的下乙個插線板上的用電器造成 1 的代價。有 q 個詢問,每次給你 x,y 問你你要在 x 時刻把用電器接在插線板上,y 時刻移除,最少的代價是...

利用分塊傳輸繞WAF

http connection有兩種連線方式 短連線和長連線 短連線即一次請求對應一次tcp連線的建立和銷毀過程。長連線是多個請求共用同乙個連線這樣可以節省大量連線建立時間提高通訊效率。目前主流瀏覽器都會在請求頭裡面包含connection keep alive欄位,該字段的作用就是告訴http伺服...

HTTP斷點續傳(分塊傳輸)

檢測伺服器是否支援斷點續傳 在 linux unix 系統下,常用支援斷點續傳的 ftp 客戶端軟體是 lftp。range 用於請求頭中,指定第乙個位元組的位置和最後乙個位元組的位置,一般格式 range unit first byte pos last byte pos range 頭部的格式有...