昨天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文件,如下图所示。

图种_思考一

这种文件结构就不会那么容易被发现。

实例文件

total

解决方法

用winhex打开看一下图片中是否含有压缩文件的文件头标记(如zip文件的文件头标记为0x504B0304,rar文件的文件头标记为0x52617221),如果存在,则有可能采用了这种拼接方式。

思考二

描述

如果生成的jpg文件以1.jpg+2.zip格式生成,而1.jpg文件中包含了zip文件头,如下图所示。

by_barriery

那么即使知道了拼接方式,也会因为zip文件头匹配错误而导致解压缩失败。

实例文件

by_barriery

解决方法

辨认出jpg文件中含zip的文件头后,随意更改其中的几个数据,导致该处文件头匹配不成功即可。