CTF-数据分析(四)

声明:以下CTF题均来自网上收集,在这里主要是给新手们涨涨见识,仅供参考而已。需要题目数据包的请私信或在下方留言。

                      7.数据包分析- 抓到一只苍蝇    (来源:51elab平台 / BugkuCTF论坛

(注:BugCTF是一个复现了很多CTF环境的网站,可免费练习,好像是私人搭建的,值得支持下。)

1.关卡描述

报告首长!发现一只苍蝇。。

在哪?

here!

卧槽?!好大一坨苍蝇。。


 

2.解题步骤


 

2.1 首先下载所给的文件misc_fly.pcapng,是一个抓包软件抓取的数据包

 

2.2 打开数据包,发现是一堆TCP的包,先不理会底层的数据,只关心应用层。 应用层的协议只有HTTP,过滤出HTTP的包进一步分析

 

 

2.3 请求都发往http://sz.mail.ftn.qq.com,猜测是qq邮箱的地址。同时观察第一个请求

POST了一段这样的JSON:
{
    "path":"fly.rar",
    "appid":"",
    "size":525701,
    "md5":"e023afa4f6579db5becda8fe7861c2d3",
    "sha":"ecccba7aea1d482684374b22e2e7abad2ba86749",
    "sha3":""
}

目标url为:

http://set2.mail.qq.com/cgi-bin/uploadunite?func=CreateFile&&inputf=json&outputf=json&&sid=x5O8ZuWvSp9yXFgM

 

 

2.4 这应该是一个上传文件的操作,文件名为fly.rar,文件大小为525701。 进一步分析以验证猜想,过滤出全部的POST数据包:http.request.method == "POST"

 

 

2.5 其中倒数第二个包的内容是

 

 

2.6 至此已经可以确定:数据包的内容:一封带附件的邮发件人:81101652@qq.com收件人:king@woldy.net 附件:fly.rar 附件大小:525701 Bytes

2.7 寻找附件数据

 

 

 

2.8 第一个请求向服务器POST附件信息,紧接着就应该是上传,结合数据包推断第2~6个,共5个数据包应为附件数据。5个数据包中的Media Type域的大小各为131436、131436、131436、131436 1777

 

合计527521,而前面附件信息里已知附件大小为525701,相差不多,多出来的部分应该是头部的信息之类。

 

 

2.9 还原附件数据

观察5个包Media Type域的内容,前面很大一部分内容是相同的,那么这一部分是通信时所需的头部的内容,不是附件本身的内容,通过计算将多余的数据去除。

已知: 附件被分成5个部分,5个子部分合计大小为527521,附件原大小为525701

求: 每个子部分头部多余的数据

容易求出,头部多余的部分:

(527521−525701)/5=364Bytes

 

 

2.10 将5个数据包的Media Type域分别导出为二进制文件

 

合成文件前先科普Linux/Unix语法:

语法:dd [选项] 

if =输入文件(或设备名称)。 
of =输出文件(或设备名称)。 
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。 
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。 
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。 
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)

然后使用dd命令分别将其前364个字节去除:

dd if=1 bs=1 skip=364 of=1.1

dd if=2 bs=1 skip=364 of=2.1

dd if=3 bs=1 skip=364 of=3.1

dd if=4 bs=1 skip=364 of=4.1

dd if=5 bs=1 skip=364 of=5.1

之后合并文件:

cat  1.1  2.1  3.1  4.1  5.1  >  fly.rar

校验md5值:md5sum fly.rar

结果:

e023afa4f6579db5becda8fe7861c2d3

而第一步中得到的数据包中POST数据为:

{

    "path":"fly.rar",
    "appid":"",
    "size":525701,
    "md5":"e023afa4f6579db5becda8fe7861c2d3",
    "sha":"ecccba7aea1d482684374b22e2e7abad2ba86749",
    "sha3":""

}

二者一致。同理再校验sha值,同样一致。

 

 

2.11 至此,由网络包还原出了附件数据fly.rar

 

 

2.12 处理附件数据

本以为到这里已经大功告成,解压fly.rar即可。 

结果还有后招……竟然解压失败…… 

分析原因, 

fly.rar文件通过了md5和sha校验,肯定是没问题的,自己的思路到这里断了,怎么想也没结果。 

无奈搜答案,得出结果——伪加密。 

即这是一个未加密过的rar文件,但是却将加密位置为了1,具体可参考 

[rar文件格式描述]

将fly.rar文件放入winhex中,可以看到flag.txt文件,重点修改标志位0x84为0x80

 

 

修改完成后的文件保存,然后解压就可以得到flag.txt文件

 

 

2.13 处理flag.txt

这回答案该有了吧,打开flag.txt查看,这又是一个二进制文件。 

无语。 

继续二进制打开。 

发现这是个win32的程序,Linux跑不了,修改文件后缀名为exe,转到windows查看。 

是个满屏幕跑苍蝇的程序……还挺逼真的…… 

使用binwalk分析可以看到文件末尾包含一个图片,有点异常,提取出来看看

(注:然而用binwalk -e 提取的文件中没有图片,不理解。。。)

Dd工具提取:

dd if=flag.txt bs=1skip=991232 of=1.png

或者:

使用winhex载入flag.txt,在偏移0x2000处找到png的文件头

 

从0x2000直到文件结尾复制出来,然后保存到另一个winhex文件中,另存为flag.png文件

 

 

 

2.14 JFIF,文件尾有一个PNG,提取出来,是个二维码

 

 

2.15 扫之,得到结果

flag{m1Sc_oxO2_Fly}

 

                     8.数据包分析- Telnet用户密码抓取   (来源:网络)

1.关卡描述


找到这个telnet会话的用户密码

下载附件并从中获取Flag值进行提交。

2.解题步骤


 

2.1 下载数据包并用wireshark打开

 

 

 

2.2 输入Telnet过滤,对数据分析,不难发现用户是从192.168.0.2->192.168.0.1的Telnet请求

 

 

2.3 对数据逐条进行分析,不难发现,192.168.0.1发出了登录消息

 

 

接着我们又发现了用户开始输入账户:

 

得到用户名为 fake

 

 

2.4 再往下找到密码

 

从图中可以看出用户开始输入密码,继续往下追踪

 

得到密码为 user

 

 

2.5 再往下看,我们发现,用户登录成功

 

整理出登录过程得到信息

账户:fake

密码:user

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值