DASCTF2022三月-书鱼的秘密

给出了提示,图片和233,用winhex查看,发现在文件开头就存在不合理的数据,推测要从这块数据得到一张图片,因此要对这块数据进行分析,从第158位开始,每隔9位就会有一个数据,因此需要利用脚本将这些数据导出来,另外前面一部分数据,需要注意说不定就是文件头或者文件尾,6BAB47AD是这块数据的一段头部,既不是文件头也不是文件尾,这时利用233与这块数据做位运算,发现在做异或运算时,得到了826042AE这个数据,而这正是png文件的文件尾AE426082的逆序,那么思路就变得简单了,每10位提取数据并与233做异或运算,然后逆序输出到文件中生成图片

脚本代码如下:

with open("E:\Download\misc\书鱼的秘密\书鱼的多重文件.wav",'rb') as fr:
    data = fr.read()[158:]
    fr.close()
with open("res.png",'wb') as fw:
    a = bytearray()
    #png文件头
    b = [137,80,78,71]
    b1 ,b2 ,b3 ,b4 = 0 ,0 ,0 ,0
    for i in range(0,len(data),10):
        t = data[i]^233
        a += t.to_bytes(1,byteorder="little")
        b1 ,b2 ,b3 ,b4 = t ,b1 ,b2 ,b3
        #遇到文件头就退出
        if [b1,b2,b3,b4] == b:
            break
    fw.write(a[::-1])
    fw.close()

 

成功得到图片

使用StegSolve查看图片,发现在蓝色通道时图片顶部有信息,导出。

用winhex查看导出的文件,看到文件头504B0304,是个压缩包

用压缩软件打开,有一个md文本文件

第一列的数字,只能靠猜测,当然如果平时经常用9键的人,应该会发现24462,在9键中对应着china,那么对照着这个表破译,可以得到

canada 1
afghanistan 1
latvia 3
luxembourg 3
india 2
nigeria 1
greece 2
china 1-2
oman 2
djibouti 3
equatorial guinea 2
bolivia 3
bermuda 0-3
japan 1

第一列都是国家名称,结合电话号码这个信息,那么第二列应该就是国家对应电话号码区号的第几位,重新编排

canada 1 -1 1
afghanistan 1 -93 9
latvia 3 -371  1
luxembourg 3 -352 2
india 2 -91 1
nigeria 1 -234 2
greece 2 -30 0
china 1-2 -86 86
oman 2 -968 6
djibouti 3 -253 3
equatorial guinea 2 -240 4
bolivia 3 -591 1
bermuda 0-3 -440 -440
japan 1 -81 8
最后结果:1912120866341-4408

将电话号码md5散列计算后用DASCTF{}包裹得到答案 DASCTF{4d1a3568b2a81c7d958892bf100b3f15} 

posted @ 2022-04-01 16:17  WXjzc  阅读(289)  评论(0编辑  收藏  举报