昨天Tr0y更新了一篇博客 CTF杂项之隐写术
看到图种那里有一些想法,记录如下。
摘自原文
原理
FF D9
这是jpg文件的结束符,利用winhex可以看到正常的jpg结尾都是FF D9
的。图片查看器会忽视jpg结束符之后的内容,所以我们可以在jpg结束符之后插入附加的zip, 既不会影响图片的显示,还隐藏了文件。如果你想尝试,可以利用
copy
命令,将两个文件以二进制方式连接起来,生成 output.jpg 的新文件。首先制作一个zip(1.zip),把想要隐藏的东西放进去,再准备一张jpg图片(1.jpg),然后打开cmd可以执行一个命令copy /b 1.jpg + 1.zip output.jpg
就可以得到一个图种。
解法
这种类型的隐写很容易被发现,用winhex打开看一下图片是不是以标准的结束符结尾的。解法也简单,如果发现藏着zip文件,把图片改后缀为zip解压就行了,如果是其他的文件,可以用winhex提取到新的文件里,再进行下一步处理。
思考一
描述
如果图片是以标准的结束符结尾,但图片中藏着zip文件,如下图所示。
这种文件结构就不会那么容易被发现。
实例文件
解决方法
用winhex打开看一下图片中是否含有压缩文件的文件头标记(如zip文件的文件头标记为0x504B0304,rar文件的文件头标记为0x52617221),如果存在,则有可能采用了这种拼接方式。
思考二
描述
如果生成的jpg文件以1.jpg+2.zip格式生成,而1.jpg文件中包含了zip文件头,如下图所示。
那么即使知道了拼接方式,也会因为zip文件头匹配错误而导致解压缩失败。
实例文件
解决方法
辨认出jpg文件中含zip的文件头后,随意更改其中的几个数据,导致该处文件头匹配不成功即可。