很久沒有更新干貨了,作為一個目前還在役的 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!}