小言_互联网的博客

从CTF比赛真题中学习压缩包伪加密与图片隐写术【文中工具已打包】

411人阅读  评论(0)

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

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

本文知识点:

  • 遇到加密压缩文件怎么办?需要哪些工具
  • 遇到图片隐写怎么办?需要哪些工具
  • 十六进制数据还原文件

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

压缩包类的解题思路

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


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

伪加密破解

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

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

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

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

图片隐写破解

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

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

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

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

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

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

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

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

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

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


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

十六进制数据还原文件

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

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

打开WinHex点击左上角新建

输入4个字符,OK
将十六进制字符粘贴进去,选择第三个

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

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

打开后flag就在txt文件中

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

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

参考文章:

欢迎关注公众号,原创不易,转载请注明来源【爱国小白帽】😘


转载:https://blog.csdn.net/weixin_45728976/article/details/115277128
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场