先讲个笑话,刚刚打完MAR DASCTF明御攻防赛
,一如往常,很轻松便拿到了两个flag
(签到与问卷),哈哈,一个脑细胞都不用消耗
好了下面通过其中的一道misc题,一起学习一下伪加密与图片隐写的破解
本文知识点:
遇到加密压缩文件怎么办?需要哪些工具
遇到图片隐写怎么办?需要哪些工具
十六进制数据还原文件
大佬就不用看了,全是小白操作
如遇加密压缩包,在没有密码提示的情况下,先判断是不是伪加密
最简单的方法就是看十六进制数据,第一行如果有09
多半就是了
点击查找十六进制数值搜索504B
,最后如果有09
那基本就是了,改为00
完活
比如这道misc题,结合了压缩包伪加密与图片隐写技术,我们就以它为例学习一下这两种常见技术的解决方法
就是这个压缩文件,后面带*
说明需要密码,但是题中没有任何密码提示,ctf中不可能让你无脑爆破,因为时间是有限的,但也有可能是弱口令,反正无从下手先爆破一下试试呗
当时我也想到了伪加密,用WinHex
打开压缩包,将全局方位标记中的09
改为00
保存即可解除密码限制,这里有两个文件所以要改两处,但提示我试用版超过200kb不能保存,怎么回事,我记得是破解的啊
比赛结束后我才找到破解伪加密的工具——ZipCenOp
命令java -jar ZipCenOp伪加密破解.jar r 简单的png隐写的附件.zip
图片隐写的方式很多样,用到的工具也多,文件名已经提示的很明显了,是png隐写,所以朝着这方面想就行了
所以百度一下,当当当,学到两个新工具pngcheck
和TweakPNG
它们的功能是差不多的,只不过一个是命令行模式一个是图形化界面,但pngcheck
可以识别多个图像类型,而另一个只能是png格式
复制一张hint.png
然后用TweakPNG
打开,可以看到两个IDAT块
,正常的图片应该只有一条IDAT数据不同,而这里有两条不一样的,可以判断是两张图片
这样隐藏的图片就出来了,这句意思是你可以用89504E猜出旗子在哪里
8
9504E
应该是个密码,而需要密码解图片隐写的工具有很多,如:steghide
和stegpy
,然而都没用,看了大佬的wp才知道用的是outguess
,又学了一个工具
这个kali里是没有的,输入apt install outguess
安装即可
用命令outguess -k 89504E -r flag.jpg -t output.txt
导出加密内容
十六进制再转字符串发现有个flag.txt
字样,有经验的已经想到了,这可能是个压缩文件,那怎样将十六进制数据变成文件呢?大神用的Python导出成文件,那咱这种菜鸡不会,只能用笨办法喽
或者将后缀改为gz、zip都可以,假如你不知道这是什么文件,那就将它拖到Linux系统中用file命令验证一下
看完你会发现其实这道题没有多难,只是很多工具我们不知道,没见过罢了,总之还是要多学多看,不要做井底之蛙
文章提到的工具都已打包,公众号回复“CTF
”获取下载链接
参考文章:
欢迎关注公众号,原创不易,转载请注明来源【爱国小白帽】😘
本文作者:爱国小白帽
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/155907.html