很久沒有更新干貨了,作為一個目前還在役的 CTF 選手,肯定要講解一些有意思的賽題啊,一方面是自我的總結,一方面也是給大家一點學習思路,如何去分析一道賽題,我不會去重復的解讀一些基礎知識,更多的基礎知識請參看 ctf-wiki 上面的內容,目前我是主要負責維護 Web 和 Misc 部分內容。本文也會在后續同步更新到 ctf-wiki 上,當然也歡迎大家一起來 Contribute 。
ctf-wiki 地址:https://ctf-wiki.github.io/ctf-wiki/
本文給大家帶來的賽題是來自百度杯的一道流量包分析的賽題。
賽題地址為:https://static2.ichunqiu.com/icq/resources/fileupload/CTF/BSRC/2017/BSRC3-1/findtheflag.cap
首先我們拿到這樣一道流量包的題目,題目名稱為 find the flag 。這里面給了很多提示信息,要我們去找到 flag 。
第一步,搜索 flag 字樣
我們先去搜索看看流量包里面有沒有 flag 。我們使用 strings 命令去找一下流量包, Windows 的朋友可以用 notepad++ 的搜索功能去尋找。
搜索命令如下:
strings findtheflag.cap | grep flag
搜索結果如下:

我們發現搜出了一大堆的東西,我們通過管道去過濾出 flag 信息,似乎沒有發現我們所需要找的答案。
第二步,流量包修復
我們用 wireshark 打開這個流量包

我們發現這個流量包出現了異常現象,我們可以修復一下這個流量包。
這里我們用到一個在線工具:http://f00l.de/hacking/pcapfix.php
這個工具可以幫助我們快速地將其流量包修復為 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!}
