前言
首先我们要了解,压缩包本身并不具备隐藏信息的功能,但由于在CTF竞赛中,经常出现压缩包与隐写术结合在一起的题目,所以我们需要掌握在CTF竞赛中有关 ZIP 压缩包题目的常见题型及分析手段。
常见题型
CTF中常见的压缩包套路(这些套路也不一定是单独出现,大多数情况都是组合出现的)
(1) 利用进制转换隐藏信息
(2) 作为冗余信息或隐藏信息藏在其他文件中,一般是图片
(3) 简单密码爆破
(4) 字典爆破/掩码攻击
(5) 伪加密
(6) 明文攻击
(7) CRC32碰撞
(8) 文件修复
(9) 冗余信息拼接
(10)注释隐藏密码4. ZIP文件格式等等。
背景原理
首先,我们来看zip文件头协议。(下面两张图片学术借鉴了一下)
一个 ZIP 文件由三个部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志
1.压缩源文件数据区:
50 4B 03 04:这是头文件标记
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(判断有无加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
2.压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记
1F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(判断是否为伪加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
3.压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度
实战案例
工具推荐:Winhex、010 、Bandizip 等
1. 首先我们通过题目 RWZIP 标题给的链接下载下来一个压缩包文件:
RWZIP_e974e05bec738d79cae89fa4936e047c.zip
2.先尝试随便用一个 360 压缩包工具打开查看一下
可以看到里面存在一个 flag.txt 文件并且提示文件损坏,如果强行解压下来里面并没有文件。
根据上面提示文件损坏,我们再用 WinRAR 选择保留损坏的文件打开看看,发现提示要密码。
再用 Bandizip 打开看看
3.接着我们在用其他工具打开,这里用 010 工具演示
把压缩包直接丢进去直接进行查看
刚开始一度以为像是伪加密,后面发现不对
后面再看了看题目的提示感觉的确方向错了,接着挨个对照标记位进行查看,我们知道文件确定是被加密了
在工具中我们点击下面红框中部分,就会展开里面的 flag.txt 文件的信息,进行查看
这里我们就可以开始分析了,对着前面给出的压缩源文件数据区的图,对照分析,我们可以在工具中挨个往下点击,上面也会显示相对应的 hex16 进制的标记位,还是很方便的,对照查看即可。
示例:
当我们挨个查看到 frCRc 这里就能很明显感觉到不太对劲,通过前面压缩包工具自带的功能我们能清楚的看到
在 CRC 这个位置全是 0,很明显不对。
接着我们开始在 010 工具中直接对其进行修改,到这里这部分基本上就差不多了,然后进行保存即可
注意:这里还是推荐使用 Bandizip 这样的压缩包工具,因为用其他的可能还是提示文件有问题损坏什么的
前面我们知道还是需要有密码,那么我们就可以用该工具进行密码恢复,点击左上角工具-密码恢复
这里需要注意:普通版本只能恢复 4 位数加密密码,专业版才能支持 6 位
导入压缩包文件,接着一直点继续一般默认设置即可
然后这里点击开始,就可以看到只用了 4 秒密码就出来了。
最后再解压缩文件,打开 flag.txt 文件
再进行仅字母反转即可