很久没有更新干货了,作为一个目前还在役的 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!}