IDF CTF训练营之抓到一只苍蝇
原题描述:
报告首长!发现一只苍蝇。。
在哪?
here!
卧槽?!好大一坨苍蝇。。
题目需要分析日志misc_fly.pcapng
下载链接:misc_fly
(1)wireshark打开抓取的包,首先分析过滤出HTTP的包,在HTTP的第一个POST包中看到如下信息
得知是传送的一个fly.rar的文件,文件大小为525701bytes,以及md5和sha验证
(2)然后查看到其中一个POST包中的信息
跟题目描述相匹配,证明POST提交的rar文件就是我们需要还原的文件
(3)过滤所有的post包
http.request.method == POST
对这几个包分析发现这是一封带fly.rar附件的邮件发送。发信人是81101652@qq.com,收件人是king@woldy.net,fly.rar大小为525701bytes
(4)进一步分析发现附件rar是从192.168.1.101发送到59.37.116.102的包
分五次发送,每次发送的大小为:
4次131436bytes + 1次1777bytes = 527521bytes
(5)使用wireshark将每个包提取出来,提取方式是选中每个包的media type数据块,右键 –> 导出分组字节流 –> 分别保存为1,2,3,4,5
(6)五个数据包合起来的大小比fly.rar要大,主要是每次数据传输会带上一些标志位等信息,需要将这些信息踢出来。每个包多加的大小为:
(527521bytes – 525701bytes) / 5 = 364 bytes
使用Kali中的dd工具将包处理这5个数据包
dd if=1 bs=1 skip=364 of=11
…
处理完5个数据包后得到如下,可以看到数据包小了一些
然后将处理完的5个文件进行合并,使用命令
cat 11 22 33 44 55 > fly.rar
可以看到合并后的文件大小正好符合发送附件的大小
对生成的fly.rar进行md5和sha验证,得到跟抓包信息相同的结果,可以证明还原的数据包fly.rar是正确的
(7)然后打卡fly.rar文件,但是打不开,需要输入密码,可能是伪加密
使用zipCenOp.jar去伪加密,失败。查阅资料发现需要修改标志位
将fly.rar文件放入winhex中,可以看到flag.txt文件,重点修改标志位0x84为0x80
(8)修改完成后的文件保存,然后解压就可以得到flag.txt文件
得到的flag.txt文件比较大,用notepad++打开,第一行发现如下信息
(9)将flag.txt文件修改后缀为flag.exe文件
点击执行,确实好大一坨苍蝇啊。
这个程序蛮有意思的,可以留着用(*<>*)
(10)这么大的文件肯定会有猫腻,用binwalk运行查看flag.txt发现隐藏着一张png图片
然而用binwalk -e 提取的文件中没有图片,不理解。。。
(11)使用winhex载入flag.txt,在偏移0x2000处找到png的文件头
从0x2000直到文件结尾复制出来,然后保存到另一个winhex文件中,另存为flag.png文件
此时打开png文件就ok了,是一张二维码图片
(12)扫码得到flag的值
总结:这个题目考察的地方真滴好多,做起来很是蛋疼,是一个不错的MISC题目,也感谢前辈的wp提示。