CTF 压缩包隐写 全讲解(思路+工具+考点+实操)
CTF 压缩包隐写主流针对 ZIP / RAR / 7Z,核心考点:伪加密、密码爆破、文件嵌套、注释隐写、分卷压缩、文件拼接、CRC碰撞、隐写文件流,下面按做题顺序逐一拆解。
一、前置基础:先判断压缩包基本状态
1. 查看真实文件类型 & 基本信息
命令(Kali/Linux)
bash
file test.zip # 识别真实格式,判断是否后缀伪装
unzip -l test.zip # 查看压缩包内文件列表、大小、注释
7z l test.7z # 查看7z压缩包内容
关键点
- 后缀是 .zip , file 识别不是压缩包 → 后缀伪装,按图片/二进制文件处理
- 压缩包体积异常、内部文件数量多 → 大概率嵌套/拼接隐写
2. 查看压缩包注释(高频考点)
出题人常把 flag / 密码直接写在压缩包全局注释 / 文件注释里
- Linux:
bash
unzip -z test.zip # 查看ZIP注释
- Windows:WinRAR/7z 右键压缩包 → 属性/注释 直接查看
二、考点1:ZIP 伪加密(最常考,入门必会)
原理
ZIP 文件有加密标记位:
正常未加密:全局加密位 = 00
伪加密:人为把标记位改成 01,系统误以为加密,实际无密码也能解压。
肉眼现象:双击提示「需要密码」,但本身没有加密。
两种修复方法
方法1:010Editor / WinHex 手动修复(通用)
1. 十六进制打开 zip 文件
2. 搜索特征串: 50 4B 01 02 (ZIP 目录文件头)
3. 往后数 第 9、10 字节(加密标志位)
- 把 01 00 改成 00 00
4. 保存,重新解压即可
方法2:工具一键修复(懒人首选)
1. ZipCenOp.jar(Java 工具,CTF 标配)
bash
java -jar ZipCenOp.jar r test.zip # r=修复伪加密
2. 在线工具:搜索 ZIP伪加密修复,上传一键处理
区分:局部加密(单个文件加密)≠ 伪加密,伪加密改位即可,真加密需要爆破密码。
三、考点2:压缩包密码爆破(真加密)
分 弱密码、字典爆破、掩码爆破、RAR专属爆破
1. ZIP 密码爆破(Kali fcrackzip)
(1)字典爆破(最常用)
bash
# 使用字典爆破
fcrackzip -D -p 字典.txt test.zip
# 常用参数
-D 使用字典模式
-p 指定字典文件
-u 只输出正确密码
自带弱口令字典路径: /usr/share/wordlists/rockyou.txt
(2)纯数字/简单字符爆破(暴力)
bash
# 纯数字 1~6 位暴力破解
fcrackzip -b -c 1 -l 1-6 -u test.zip
-b 暴力模式
-c 1 纯数字;-c a 小写字母;-c A 大写;-c ! 符号
-l 密码长度范围
2. RAR 密码爆破
RAR 加密强度高,优先用工具:
- rarcrack(Kali)
bash
rarcrack test.rar --type rar
- Windows:RAR Password Recovery、ARCHPR(图形化,速度快)
3. 通用技巧
- 题目提示、图片隐写、流量包内往往藏压缩包密码
- 优先尝试弱口令: 123456 、 ctf 、 flag 、 admin 、空密码
四、考点3:文件嵌套 / 多层压缩
现象
解压一层压缩包,里面还是 zip/rar/7z,多层套娃,层层解密。
做题流程
1. 逐层解压,记录每一层提示、注释、文件名
2. 每一层都检查:伪加密、注释、文件名、文件大小
3. 最后一层一般直接出 flag 文件(txt/图片)
坑点:某一层是伪加密,别直接爆破密码,先修复!
五、考点4:压缩包 + 文件拼接(图片+压缩包组合)
和图片隐写 binwalk 联动,经典组合题:
场景
一张图片 xxx.jpg ,尾部拼接了 ZIP/RAR,表面是图,实际内含压缩包。
操作
1. 用 binwalk 检测并提取
bash
binwalk xxx.jpg
binwalk -e xxx.jpg # 自动分离出内部压缩包
2. 对分离出的压缩包,再按上面规则:查注释 → 修伪加密 → 爆破密码 → 解压
六、考点5:分卷压缩包(多个 part 组合)
特征
文件: part1.zip 、 part2.zip 、 part3.zip … 分卷压缩包
解题规则
1. 所有分卷必须放在同一个文件夹
2. 直接打开 第一个分卷 part1,软件会自动读取后续分卷
3. 分卷本身也可能带密码、伪加密,正常排查即可
4. 缺失任意分卷 → 无法解压
七、考点6:文件名/文件内容隐写
1. 文件名藏密文
压缩包内大量乱码文件名、特殊字符、十六进制、Base64、摩斯码
- 把所有文件名拼接 → 二次解码(Base64、Hex、URL、栅栏等)
2. 空文件 / 特殊大小文件
- 大小为 0 的空文件:重点关注文件名、创建时间
- 多个相同大小文件:比对差异、异或、取特征位
3. 文件内容隐藏
解压出 txt/二进制文件,里面是:
- 明文 flag
- 编码字符串(Base64、Hex、ASCII)
- 二维码、点阵、盲文等图形密文
八、考点7:ZIP CRC32 碰撞(进阶考点)
原理
CRC32 是文件校验值,不同内容可以拥有相同 CRC 值。
题目一般给出:压缩包内文件 CRC 值 + 长度,利用 CRC 碰撞算出原始内容。
常见题型
1. 压缩包加密,只知道内部文件 CRC32 和文件长度
2. 用 CRC32 碰撞工具 跑对应字符串,得到内容/密码
常用工具: crc32collision 、在线 CRC 碰撞网站。
九、考点8:7Z 压缩包特殊考点
7Z 加密强度高于 ZIP,基本无伪加密,考点集中:
1. 全局注释、文件注释
2. 密码爆破(ARCHPR、7z 专用爆破工具)
3. 嵌套压缩、拼接文件
4. 7Z 分卷压缩
命令查看内容:
bash
7z l test.7z
十、CTF 压缩包隐写 标准做题流程(按顺序走,不踩坑)
拿到压缩包/疑似压缩包文件,按以下步骤排查:
1. file 查真实类型 → 排除后缀伪装
2. 查看压缩包注释(unzip -z / 7z l)
3. 尝试直接解压 → 报错需要密码:
- 第一步:判断是否 ZIP伪加密 → 修复后重试
- 第二步:确认为真加密 → 字典/暴力爆破密码
4. 解压后查看内部:
- 多层嵌套 → 逐层解压、逐层检查
- 异常文件名 → 提取文件名解码
- 空文件/特殊文件 → 分析特征
5. 若来源是图片/其他文件 → 用 binwalk 分离内嵌压缩包,重复以上流程
6. 最后进阶:CRC32 碰撞、文件异或、时间戳隐写
十一、常用工具汇总(Windows + Kali)
Kali 命令工具
- file :查文件类型
- unzip / 7z :查看、解压
- fcrackzip :ZIP 密码爆破
- rarcrack :RAR 爆破
- binwalk :分离拼接文件
Windows 图形工具
- 010Editor/WinHex:十六进制改位、修复伪加密
- WinRAR / 7-Zip:常规解压、看注释
- ARCHPR:ZIP/RAR 高强度密码爆破
- ZipCenOp.jar:一键修复 ZIP 伪加密
在线工具
- ZIP伪加密修复
- CRC32 加密/解密/碰撞
- 各类编码解码(Base64、Hex 等)