記一道流量包引發的思考
很久沒有更新干貨了,作為一個目前還在役的 CTF
選手,肯定要講解一些有意思的賽題啊,一方面是自我的總結,一方面也是給大家一點學習思路,如何去分析一道賽題,我不會去重複的解讀一些基礎知識,更多的基礎知識請參看 ctf-wiki
上面的內容,目前我是主要負責維護 Web
和 Misc
部分內容。本文也會在後續同步更新到 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 29
到 tcp.stream eq 41
只顯示了 where is the flag?
這個字樣,難道這是出題人在告訴我們 flag
在這裡嘛?
第四步,查詢分組位元組流
我們追蹤到 tcp.stream eq 29
的時候,在 Identification
資訊中看到了 flag
中的 lf
tcp.stream eq 30
的 Identification
資訊中看到了 flag
中的 ga
字樣,我們發現將兩個包中 Identification
資訊對應的欄位從右至左組合,恰好就是 flag
!於是我們可以大膽地猜測, flag
肯定是藏在這裡面。
我們直接通過搜尋->字串搜尋->分組位元組流->搜尋關鍵字 flag
即可,按照同樣的方式連線後面相連資料包的 Identification
資訊對應的欄位,即可找到最終的flag!
下面是搜尋的截圖:
所以最終的 flag
為:**flag{aha!_you_found_it!}**