先讲个笑话,刚刚打完MAR DASCTF明御攻防赛,一如往常,很轻松便拿到了两个flag(签到与问卷),哈哈,一个脑细胞都不用消耗
image.png

好了下面通过其中的一道misc题,一起学习一下伪加密与图片隐写的破解

本文知识点:

  • 遇到加密压缩文件怎么办?需要哪些工具

  • 遇到图片隐写怎么办?需要哪些工具

  • 十六进制数据还原文件

大佬就不用看了,全是小白操作

压缩包类的解题思路

如遇加密压缩包,在没有密码提示的情况下,先判断是不是伪加密
最简单的方法就是看十六进制数据,第一行如果有09多半就是了

image.png

点击查找十六进制数值搜索504B,最后如果有09那基本就是了,改为00完活
image.png

伪加密破解

比如这道misc题,结合了压缩包伪加密与图片隐写技术,我们就以它为例学习一下这两种常见技术的解决方法
image.png

就是这个压缩文件,后面带*说明需要密码,但是题中没有任何密码提示,ctf中不可能让你无脑爆破,因为时间是有限的,但也有可能是弱口令,反正无从下手先爆破一下试试呗
image.png

当时我也想到了伪加密,用WinHex打开压缩包,将全局方位标记中的09改为00保存即可解除密码限制,这里有两个文件所以要改两处,但提示我试用版超过200kb不能保存,怎么回事,我记得是破解的啊
image.png

比赛结束后我才找到破解伪加密的工具——ZipCenOp
命令java -jar ZipCenOp伪加密破解.jar r 简单的png隐写的附件.zip
image.png

图片隐写破解

图片隐写的方式很多样,用到的工具也多,文件名已经提示的很明显了,是png隐写,所以朝着这方面想就行了
image.png

binwalkStegsolve都没能找到什么有用的东西
image.png

所以百度一下,当当当,学到两个新工具pngcheckTweakPNG
image.png

它们的功能是差不多的,只不过一个是命令行模式一个是图形化界面,但pngcheck可以识别多个图像类型,而另一个只能是png格式
image.png

复制一张hint.png然后用TweakPNG打开,可以看到两个IDAT块,正常的图片应该只有一条IDAT数据不同,而这里有两条不一样的,可以判断是两张图片
image.png

右键将上面四条Delete,然后Ctrl+s保存
image.png

这样隐藏的图片就出来了,这句意思是你可以用89504E猜出旗子在哪里
image.png

89504E应该是个密码,而需要密码解图片隐写的工具有很多,如:steghidestegpy,然而都没用,看了大佬的wp才知道用的是outguess,又学了一个工具

image.png

这个kali里是没有的,输入apt install outguess安装即可
image.png

用命令outguess -k 89504E -r flag.jpg -t output.txt导出加密内容

image.png

里面有一行编码字符,看着像Base64
image.png


十六进制数据还原文件

解密得到一串好像十六进制的东西
image.png

十六进制再转字符串发现有个flag.txt字样,有经验的已经想到了,这可能是个压缩文件,那怎样将十六进制数据变成文件呢?大神用的Python导出成文件,那咱这种菜鸡不会,只能用笨办法喽
image.png

打开WinHex点击左上角新建
image.png

输入4个字符,OK
image.png

将十六进制字符粘贴进去,选择第三个
image.png

然后保存到桌面即可,其实现在这个文件可以用压缩软件直接打开
image.png

或者将后缀改为gz、zip都可以,假如你不知道这是什么文件,那就将它拖到Linux系统中用file命令验证一下
image.png

打开后flag就在txt文件中
image.png

看完你会发现其实这道题没有多难,只是很多工具我们不知道,没见过罢了,总之还是要多学多看,不要做井底之蛙

文章提到的工具都已打包,公众号回复“CTF”获取下载链接

参考文章:

本文作者:爱国小白帽

本文为安全脉搏专栏作者发布,转自:https://www.secpulse.com/archives/155907.html