1. 程式人生 > >記一道流量包引發的思考

記一道流量包引發的思考

很久沒有更新干貨了,作為一個目前還在役的 CTF 選手,肯定要講解一些有意思的賽題啊,一方面是自我的總結,一方面也是給大家一點學習思路,如何去分析一道賽題,我不會去重複的解讀一些基礎知識,更多的基礎知識請參看 ctf-wiki 上面的內容,目前我是主要負責維護 WebMisc 部分內容。本文也會在後續同步更新到 ctf-wiki 上,當然也歡迎大家一起來 Contribute

本文給大家帶來的賽題是來自百度杯的一道流量包分析的賽題。

首先我們拿到這樣一道流量包的題目,題目名稱為 find the flag 。這裡面給了很多提示資訊,要我們去找到 flag

第一步,搜尋 flag 字樣

我們先去搜索看看流量包裡面有沒有 flag 。我們使用 strings 命令去找一下流量包, Windows 的朋友可以用 notepad++ 的搜尋功能去尋找。

搜尋命令如下:

strings findtheflag.cap | grep flag

搜尋結果如下:

我們發現搜出了一大堆的東西,我們通過管道去過濾出 flag 資訊,似乎沒有發現我們所需要找的答案。

第二步,流量包修復

我們用 wireshark 開啟這個流量包

我們發現這個流量包出現了異常現象,我們可以修復一下這個流量包。

這個工具可以幫助我們快速地將其流量包修復為 pcap 包。

我們對其進行線上修復。

修復完畢後點擊 Get your repaired PCAP-file here.

即可下載流量包,然後我們用 wireshark 開啟。

既然還是要找flag,我們可以先看看這個流量包。

第三步,追蹤TCP流

我們追蹤一下TCP流,看看有沒有什麼突破?

我們通過追蹤TCP流,可以看到一些版本資訊,cookie等等,我們還是發現了一些很有意思的東西。

tcp.stream eq 29tcp.stream eq 41 只顯示了 where is the flag? 這個字樣,難道這是出題人在告訴我們 flag 在這裡嘛?

第四步,查詢分組位元組流

我們追蹤到 tcp.stream eq 29 的時候,在 Identification 資訊中看到了 flag 中的 lf

字樣,我們可以繼續追蹤下一個流,在 tcp.stream eq 30Identification 資訊中看到了 flag 中的 ga 字樣,我們發現將兩個包中 Identification 資訊對應的欄位從右至左組合,恰好就是 flag !於是我們可以大膽地猜測, flag 肯定是藏在這裡面。

我們直接通過搜尋->字串搜尋->分組位元組流->搜尋關鍵字 flag 即可,按照同樣的方式連線後面相連資料包的 Identification 資訊對應的欄位,即可找到最終的flag!

下面是搜尋的截圖:

所以最終的 flag 為:**flag{aha!_you_found_it!}**