Defcon 20 CTF GB200 Writeup

第一步:
下载下来的是一个ZIP压缩文件。
解压后得到一个图像文件(115e0ba3c3d72647fcb9a53ae90e47a6.jpg)以及一个目录(__MACOSX)。
__MACOSX目录下有一个隐藏文件(._115e0ba3c3d72647fcb9a53ae90e47a6.jpg),隐藏文件不是图片,cat之发现里面包含一个图片链接(http://ircimages.com/ircimages/1/1/115e0ba3c3d72647fcb9a53ae90e47a6.jpg),链接的图片跟解压得到的图片看起来一样。

第二步:
diff两张图片,发现解压得到的图片比链接的图片多了以下的内容:
(实际上即使只对解压得到的图片做分析也能发现这段额外的内容,因为JPEG文件一般都以FFD9结束)

00000000    cc ef 48 00 01 02 00 50 56 00 01 02 08 00 45 00     |..H….PV…..E.|
00000010    00 46 e0 63 00 00 40 11 84 8f 4b 94 64 05 8c c5     |.F.c..@…K.d…|
00000020    d9 55 7a 69 00 35 00 32 e1 2f 1c f7 01 00 00 01     |.Uzi.5.2./……|
00000030    00 00 00 00 00 00 02 31 33 02 31 32 02 31 31 02    |…….13.12.11.|
00000040    31 30 07 69 6e 2d 61 64 64 72 04 61 72 70 61 00    |10.in-addr.arpa.|
00000050    00 0c 00 01                                                        |….|

这段内容实际上是一个完整的包含DNS请求的以太网帧,把它LOAD进scapy可以看到数据包的信息:

Ether:  dst=cc:ef:48:00:01:02 src=00:50:56:00:01:02 type=0x800
IP:  version=4L ihl=5L tos=0x0 len=70 id=57443 flags= frag=0L ttl=64 proto=udp chksum=0x848f src=75.148.100.5 dst=140.197.217.85 options=[]
UDP:  sport=31337 dport=domain len=50 chksum=0xe12f
DNS:  id=7415 qr=0L opcode=QUERY aa=0L tc=0L rd=1L ra=0L z=0L rcode=ok qdcount=1 ancount=0 nscount=0 arcount=0 qd=DNSQR qname=’13.12.11.10.in-addr.arpa.’ qtype=PTR qclass=IN an=None ns=None ar=None

第三步:
1.尝试向140.197.217.85发DNS请求:dig @140.197.217.85 -x 10.11.12.13,没有任何应答。
2.猜测该主机可能只对特定的数据包请求作应答(比如特定的源端口或者DNS id等),于是从第二步得到的以太网帧中提取IP数据包,修改源地址,重新生成IP和UDP校验,发送后就会收到一个DNS应答,里面包含key:dan.kaminsky.kung.fu.。(测试表明只要请求包的源端口是31337就可以得到应答)

此条目发表在学术活动分类目录。将固定链接加入收藏夹。

Defcon 20 CTF GB200 Writeup》有 1 条评论

  1. mzweilin说:

    用以下命令可构造符合条件的DNS查询请求,服务端返回key。
    dig -t ptr 13.12.11.10.in-addr.arpa @140.197.217.85 -b ::#31337