Chybeta

0ctf-2015-Peers-writeup

0ctf-2015-Peers-writeup

题目

题目提供了一个流量包peers.pcapng,
peers.pcapng:
链接:http://pan.baidu.com/s/1nuGXACL 密码:zwl3

分析

用wireshark的追踪tcp流查看。

可以看到这是关于BitTorrent协议的包。wireshark中有针对BitTorrent protocol的协议解析器。但该解析器默认是工作在端口6881上,这也是BitTorrent protocol工作的常用端口。而在题目提供的流量包中,这些流量是通过80端口的,所以我们需要对流量包进行“修正”。

改端口

我们可以利用tcprewrite这个工具来修改流量包。为把端口80修改为端口6881,使用下述命令:

1
tcprewrite --portmap=80:6881 --infile=peers.pcapng --outfile=peers_output.pcap

提取

接下去就是把这些BitTorrent的内容提取出来,:)可以手动提取。比如在过滤器处先填入bittorrent.piece.index >= 0,之后将三十九个数据包按照index的顺序将bittorrent.piece.data的十六进制复制到hex编辑器中。

也可以利用工具tshark。使用下面命令:

1
tshark -r peers_output.pcap -Y 'bittorrent.piece.data' -Tfields -e bittorrent.piece.index -e bittorrent.piece.data > pieces

-r选项表示读入一个文件,-Y是用于选择过滤器,-Tfilelds用来设置输出格式。-e选项表示要列出的内容,因为我们最后要根据index来对data进行排序重组,所以有两个-e。最后我们将文件流保存到文件pieces中。

文件pieces内容如下,第一列是index,第二个是对应的data:

1
2
3
4
0x00000000 42:4d:36:c4:09:00:00.....
0x00000020 69:ff:ae:84:78:ff:a6.....
0x00000017 5b:ff:96:66:5a:ff:9a.....
省略

重组

接下去,就是根据index的顺序重组文件,用下面的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
temp = {}
peer = open("pieces","rb")
result = open("result","w+")
for line in peer:
index = int(line[0:10],16)
data = line[11:-1].replace(":","").decode("hex")
temp[index] = data
peer.close()
for index in sorted(temp):
result.write(temp[index])
result.close()

1
2
3
root@chybeta:~/Desktop# python peer.py
root@chybeta:~/Desktop# file result
result: PC bitmap, Windows 3.x format, 800 x 200 x 32

微信扫码加入知识星球【漏洞百出】
chybeta WeChat Pay

点击图片放大,扫码知识星球【漏洞百出】

本文标题:0ctf-2015-Peers-writeup

文章作者:chybeta

发布时间:2017年07月23日 - 12:07

最后更新:2017年07月28日 - 15:07

原始链接:http://chybeta.github.io/2017/07/23/0ctf-2015-Peers-writeup/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。