CTF-web 第四部分 burp suite使用
四. burp suite使用
一般其是作為一個輔助工具,直接使用來解題的部分是少數,我們可以使用它來觀察請求和響應,並且可以反覆的提交,關鍵的是他還帶有很多其他的功能,在我們做題的過程中,使用的關鍵點包括:
1. 頁面和原始碼無特殊資訊時,可以使用抓包觀察
----有無特殊欄位,洩露伺服器或flag等資訊
----對提交的url和資料進行觀察
2. 使用reapter功能,重複的測試提交的資料,觀察響應等
3. intruder爆破功能,用來進行一些密碼,驗證碼的爆破
4. 使用request的編輯功能,編輯頭資訊以達到題目要求
WEB基礎知識
HTML超文字標記語言,採用標籤的方式分類元素,使用CSS層疊樣式控制,另外可以插入js指令碼,即<script>標籤 HTTP超文字傳輸控制協議 應用層協議在tcp/ip之上,通過多個欄位屬性控制網頁的訪問,傳輸。 常用請求方式GET--> 引數形式 index.php?a=123&b=431 POST--> 附加在欄位之後,空一行 然後附加資料 常見的欄位作用就不詳細講解了。 我們使用Bp觀察的目標就是提交的資料(get和post)和返回的響應,對於格式這裡也不做詳細的介紹,在web基礎中對各欄位已經做了介紹。
具體的看圖文介紹
下面就是它的設定介面,預設的代理是127.0.0.1 埠8080
我們在火狐瀏覽器中新增外掛foxyproxy
這樣我們就可以方便的開啟瀏覽器的代理,當然需要提前新建一下
那麼如何開始抓包呢,第一部開啟瀏覽器代理,然後在開啟Bp的中斷就可以了
這樣我們的傳送和接受的資料就都會被攔截
Forward是傳送的意思,Drop丟棄請求,Action則是採取其他一些動作,比較實用之一的就是send to repeater|intruder
允許我們不斷修改和重複的一個請求,測試中非常有用。
我們可以實用16進位制和字元的方式觀察請求和響應頭,支援隨時修改,重複傳送,並且返回資訊不會進入到瀏覽器。按鈕go就是傳送資訊。
(1)檢視和修改http請求頭
burp suite配合火狐瀏覽器使用,將兩者全部設為代理並開啟斷點,即可觀察和修改資料
一般用於獲取請求和響應中的特殊資料,或用於上傳繞過等
使用方法:
(1)執行Burp site,點選Proxy標籤,確認Options選項卡下,Proxy listeners的running執行正常(勾選狀態為執行),如果埠開啟失敗,可能的原因是有程式
佔用了該埠,點選edit,在local listener port:輸入框輸入一個未佔用的埠,點選update即可。
(2)然後設定瀏覽器代理地址為127.0.0.1,埠為所選埠,設定瀏覽器開始代理 並開啟burp suite的proxy-intercept的on狀態
(3)進入上傳頁面,選擇我們的asp木馬,點選上傳就可以看到burp suite已經攔截 在proxy-intercept-Raw就是原始資料 也可以Hex觀察16進位制資料
(4)滑鼠對著Raw的內容右擊,最後單擊Send To Repeater(包重放),修改之後點選go進行傳送。
常見的有:
Referer來源偽造
X-Forwarded-For:ip偽造
User-Agent:使用者代理(就是用什麼瀏覽器什麼的)
http://lab1.xseclab.com/base6_6082c908819e105c378eb93b6631c4d3/index.php //.net的版本修改,後面新增,如版本9 .NET CLR 9
Accept-Language:語言 國家要求
Cookie的修改
(2)intruder載荷攻擊
在我們需要大量構造載荷重複請求時 可以使用該外掛,該外掛可以定製資料型別,變化範圍,以便進行大量的爆破工作,當然我們也可以使用編寫指令碼
Burp Intruder主要有四個選項卡組成:
1:Target 用於配置目標伺服器進行攻擊的詳細資訊。
2:Positions 設定Payloads的插入點以及攻擊型別(攻擊模式)。
3:Payloads 設定payload,配置字典
4:Opetions 此選項卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。
你可以發動攻擊之前,在主要Intruder的UI上編輯這些選項,大部分設定也可以在攻擊時對已在執行的視窗進行修改。
當我們把請求send to inturder之後,我們就會在Positions選項卡中發現可以進行測試的載荷資料被 包含在中間,這就是Payloads字典破解中不斷替換的載荷目標,
我們可以通過選項卡上的 add $ clear $ auto $ 等功能操作標記$,當然也可是手動自己修改。
Positions的四種攻擊模式
-
Sniper:這個模式會使用單一的payload【就是匯入字典的payload】組。它會針對每個position中$$位置設定payload。這種攻擊型別適合對常見漏洞中的請求引數單獨地進行測試。攻擊中的請求總數應該是position數量和payload數量的乘積。
【一組payload獨立測試每個位置,互相沒關係】 -
Battering ram – 這一模式是使用單一的payload組。它會重複payload並且一次把所有相同的payload放入指定的位置中。這種攻擊適合那種需要在請求中把相同的輸入放到多個位置的情況。請求的總數是payload組中payload的總數。簡單說就是一個playload字典同時應用到多個position中。
【一組payload同步測試所有位置(每個位置都填相同的)】 -
Pitchfork – 這一模式是使用多個payload組。對於定義的位置可以使用不同的payload組。攻擊會同步迭代所有的payload組,把payload放入每個定義的位置中。
【多位置,每個位置的payload是一對一的,即兩組payload的序號是同步增加】 -
Cluster bomb – 這種模式會使用多個payload組。每個定義的位置中有不同的payload組。攻擊會迭代每個payload組,每種payload組合都會被測試一遍。
【多位置,對於兩個位置的payload,迭代所有的可能組合】
其中$$之間所夾的資訊就是在測試中不斷被替換的資訊,我們可以編輯需要測試的位置,右側有四個按鈕,也可以手動敲上去或者刪除。
payload設定方法
關於載荷的設定分為多種不同型別的資料,而後可以選擇的範圍也會隨之變化,初始設定為Payload set 和 Payload type
對於常用的數字型,我們可以選擇起始From和終止To數字,步長Step等,而後number format的Base會選擇進位制和interger digits整數位數和fraction digits小數位數等
點選右上角的start attack之後,程式就開始運行了,中間我們可以觀察每次相應的部分資訊,點選可以檢視詳細的資訊。一般我們通過觀察長度判斷是否達到了目的,因為此時的長度與其他的不同。(下圖只是示意,並不是實戰中的)
(3)decoder encode
加密解密用,各種各樣。
下面隨意舉兩個例題,大多數的Bp的使用都是很多題中的一個小小的步驟,在這裡就不詳細的講解了,在看其他題目的時候也會涉及不少的Bp的使用。
例題(例題來源於其他博主)
1.貓抓老鼠 http://ctf5.shiyanbar.com/basic/catch/
網頁有一個輸入框,直接讓你輸入key,原始碼沒什麼情況,抓包可以看到許多提交的資料
比較引人矚目的就是提交的passkey=1,響應中有Content-Row: MTUxMjU4MzgwNA==,替換passkey的值,request後得到flag
2.頭有點大 http://ctf5.shiyanbar.com/sHeader/
要求我們使用framework 9.9才可以訪問,使用bp修改頭部資訊, 得到flag(.NET CLR 9.9)
3.localhost 允許
X-Forwarded-For: 127.0.0.1