DASCTF2021三月赛-简单的png隐写
1. 首先
这是一个需要解密的压缩包,托到winhex中
2. 伪加密
结构体的前四个字节50 4B 03 04叫做目录中文件文件头标记;14 00是压缩使用的 pkware 版本; 14 00是解压文件所需 pkware 版本;09 00是全局方式位标记(这里是判断第二个有无加密的地点,00 00为没有加密,09 00 为有加密;伪加密的题目只需要将上面的两个全局方式位标记位改为00 00即可无密码解密!
猜测是伪加密,将09 00改为00 00
解压成功,得到两张图片
3. 查看hint.png
3.1 方法一
利用pngcheck工具查看hint.png图片
1 | pngcheck -v hint.png |
IDAT长度异常,按理说最多只有最后的一个IDAT长度不一致,但是这个有两条异常,所以初步判断,这个包含两张图片。
把图片托到winhex中,删掉第一段IDAT,保留下面一个。
3.2 方法二
使用工具tweakpng,查看hint.png并且删除多余IDAT
所以是outguess加密,key为89504E。
4. outguess解密
1 | outguess -k 89504E -r flag.jpg -t output.txt |
1 | MUY4QjA4MDg5MTgwNzg1RTAwMDM2NjZDNjE2NzJFNzQ3ODc0MDA0QkNCNDk0Q0FGMzZCMDMwMzQ0RDM1NDlCNjRDMzMzNTMzMzRCMTQ4MzVCNzQ4NEEzNTMzNDg0OTMyMzU0QjRFMzUzMTQ5MzFCNUFDRTVFMjAyMDA0NjhCMjIzRjI4MDAwMDAw |
猜测是base64,解密
1 | 1F8B08089180785E0003666C61672E747874004BCB494CAF36B030344D3549B64C33353334B14835B7484A3533484932354B4E35314931B5ACE5E20200468B223F28000000 |
看着像十六进制,猜测需要十六进制转ASCII,转换为:
1 | x^flag.txtKËIL¯6°04M5I¶L3534±H5·HJ53HI25KN51I1µ¬åâF"?( |
5. 十六进制转文件
5.1 方法一(winhex)
发现有flag.txt字样,猜测可能是个压缩文件,需要将十六进制变成文件,打开winhex->新建->size:4->将十六进制字符粘贴进去->选择ASCII-Hex
保存文件,后缀为gz,zip都可以,如果不知道这个是什么文件,可以拖到kali中file
一下。
5.2 方法二(python)
利用python脚本
1 | from binascii import * |
5.3 方法三(CyberChef)
利用CyberChef工具解密
直接可以base64->hex->Gzip
(左边直接search,找到后双击就会移动到recipe中)