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}