PNG图片隐写

下面通过MAR DASCTF明御攻防赛其中的一道misc题来讲,一起学习一下伪加密与图片隐写的破解

本文知识点:

1.加密压缩包的伪加密
2.图片隐写
3.十六进制数据还原
4.识别真假加密

无加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00

假加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00

真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00

这道misc题结合了压缩包伪加密与图片隐写技术,接下来步入正题:
在这里插入图片描述
我们可以看到此压缩包里的文件加密了,这里首先考虑伪加密,有两种解法;
解法一:
把压缩包图拖到工具WinHex里查看十六进制数据,如下图:

在这里插入图片描述
第一行能看到09 00,这多半就是了,我们直接查找十六进制数值504B,看到有09改为00即可:

在这里插入图片描述

解法二:
我们还可以使用破解伪加密的工具—ZipCenOp
命令:java -jar ZipCenOp.jar r 简单的png隐写的附件.zip
在这里插入图片描述
图片隐写破解:
用了binwalkstegsolve都没能找到有用的东西,在这里给大家介绍一款工具pngcheck,可以识别多个图像类型;
命令:pngcheck -v hint.png
在这里插入图片描述
正常的图片应该只有一条IDAT数据不同,而这里有两条不一样的,由此断定这里是两张图片;把图片放到010Editor工具里查看,搜索十六进制数值789C,因为png图片只有一个789C,所以我们要删除第一个,从选中的49开始到下一个IDAT的起始值删除即可:

在这里插入图片描述
删除后保存图片可以看到一张新的图片:

在这里插入图片描述
可以看到89504E应该是图片秘钥,这里还有应该一个guess,我们可以猜到这是outguess隐写
命令:outguess -k ‘gemlove’ -r sheng_huo_zhao_zhao.jpg out.txt
得到一串base64编码:

MUY4QjA4MDg5MTgwNzg1RTAwMDM2NjZDNjE2NzJFNzQ3ODc0MDA0QkNCNDk0Q0FGMzZCMDMwMzQ0RDM1NDlCNjRDMzMzNTMzMzRCMTQ4MzVCNzQ4NEEzNTMzNDg0OTMyMzU0QjRFMzUzMTQ5MzFCNUFDRTVFMjAyMDA0NjhCMjIzRjI4MDAwMDAw

解码base64编码得到一串十六进制数:

1F8B08089180785E0003666C61672E747874004BCB494CAF36B030344D3549B64C33353334B14835B7484A3533484932354B4E35314931B5ACE5E20200468B223F28000000

我们把这串十六进制数复制到WinHex里,可以看到有个flag.txt,文件头的hex得到的文件是.gz的。在这里插入图片描述
保存并改后缀.gz,打开即可得到flag
flag{0815e4c9f56148e78be60db56ce44d59}

猜你喜欢

转载自blog.csdn.net/weixin_43923136/article/details/115316673