Skip to main content

😎17届CISCN初赛-Misc-Tough_DNS

·109 words·1 min
Yalois
Author
Yalois

Tough_DNS
#

image-20240519100459839

image-20240519100524260

附件是个数据包,打开数据包,分析,发现大致有两大类数据包。

image-20240519100643414

image-20240519100610804

010是二进制数据,优先使用tshark导出,因为有重复的,再加一个过滤

image-20240519100725078

image-20240519101013299

wireshark导出

image-20240519101119882

image-20240519101148725

删除.baidu.com留下二进制数据

用二进制生成文件发现并没有啥用,因为这个二进制数据每一行长度相等的,是个矩形。可以考虑二维码,我是在记事本里缩放发现是个二维码。这里移除完换行你会发现文本长度是441,正好是21^2。

image-20240519101438295

image-20240519101442552

image-20240519101451971

扫描二维码的得到15f9792dba5c,不知道是干什么的,先存着。

记事本无法缩放的可以通过python脚本来生成二维码

from PIL import Image
from zlib import *

MAX = 21 # 数字的长度为一个整数的平方(如36^2=1296)
pic = Image.new("RGB",(MAX,MAX))
str ="111111101100101111111100000100100101000001101110101010101011101101110101001001011101101110101110001011101100000100000001000001111111101010101111111000000000110000000000111100101010010011101010010000010110111111011001111000101100001001110000110100001000000101111001001100000000000001111001110010111111100100011010110100000100011010000100101110100001000010110101110101110110100110101110101011110101100100000101110001111001111111101111001111100"

i=0
for y in range(0,MAX):
    for x in range(0,MAX):
        if(str[i] == '1'):
            pic.putpixel([x,y],(0,0,0))
        else:pic.putpixel([x,y],(255,255,255))
        i = i+1
pic.show()
#pic.save("1.png")

继续观察数据包。

image-20240519102320795

发现另一种数据有两种类型,每一个数据都存在TXT字段里

image-20240519102514715

继续导出

tshark -r Tough_DNS.pcapng -T fields -Y “frame.len==100&&dns.id==0x4500” -e dns.txt > 0x4500

tshark -r Tough_DNS.pcapng -T fields -Y “frame.len==100&&dns.id==0x6421” -e dns.txt > 0x6421

导出的文件需要移除换行。

在线删除所有回车换行工具 - UU在线工具 (uutool.cn)

0x6421的数据

image-20240519102810699

0x4500的数据

image-20240519102908988

发现0x4500是个压缩包,把十六进制数据复制出到CyberChef保存为文件

image-20240519103017955

image-20240519103030541

发现有个secret.gpg的文件,秘钥是上面二维码的值。

解出来发现是个私钥,gpg加密。

有秘钥就需要解密,想起来0x6421还没用。

把0x6421的数据部分复制出来保存为文件试试看。保存为mmm.gpg。

image-20240519103706933

发现需要刚才的秘钥。

在网上查资料发现gpg秘钥需要导入,

gpg –import secret.gpg

image-20240519103423186

但是没有密码,想到题目中还给了数据没有使用。

56 16 26 93 66 53 16 56 d2 03 26 93 56

试来试去不行,绞尽脑汁,发现规律,逆序转ASCII码,然后再逆序

image-20240519104942809

得到密码 > eab9f5ae-0b9e

image-20240519105005449

成功导入秘钥。

解密文件,

image-20240519105047722

flag{79830a47-faf7-4067-b585-145776f833cd}