CTF实战分享 | RWZIP
字数 1288 2025-08-19 12:42:14

CTF中ZIP压缩包题目分析与实战技巧

一、ZIP文件基础结构

ZIP文件由三个主要部分组成:

  1. 压缩源文件数据区

    • 头文件标记:50 4B 03 04
    • 解压文件所需pkware版本:14 00
    • 全局方式位标记(判断有无加密):00 00
    • 压缩方式:08 00
    • 最后修改文件时间:5A 7E
    • 最后修改文件日期:F7 46
  2. 压缩源文件目录区

    • 目录中文件文件头标记:50 4B 01 02
    • 压缩使用的pkware版本:1F 00
    • 解压文件所需pkware版本:14 00
    • 全局方式位标记(判断伪加密):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
    • ZIP文件注释长度:00 00

二、CTF中ZIP压缩包常见题型

  1. 利用进制转换隐藏信息
  2. 作为冗余信息或隐藏信息藏在其他文件中(通常是图片)
  3. 简单密码爆破
  4. 字典爆破/掩码攻击
  5. 伪加密
  6. 明文攻击
  7. CRC32碰撞
  8. 文件修复
  9. 冗余信息拼接
  10. 注释隐藏密码

三、实战案例分析:RWZIP题目

工具准备

  • Winhex
  • 010 Editor
  • Bandizip

解题步骤

  1. 初步检查

    • 下载题目提供的压缩包文件
    • 使用普通压缩工具(如360压缩)打开,发现flag.txt文件提示损坏
    • 尝试用WinRAR保留损坏文件打开,提示需要密码
    • 使用Bandizip打开检查
  2. 十六进制分析

    • 使用010 Editor打开压缩包
    • 检查文件头标记和关键字段
    • 展开flag.txt文件信息部分进行分析
    • 对照压缩源文件数据区结构逐项检查
  3. 异常发现

    • 在CRC校验部分发现全为0,明显异常
    • 使用010 Editor直接修改异常部分
    • 保存修改后的文件
  4. 密码恢复

    • 使用Bandizip的密码恢复功能
    • 注意:普通版仅支持4位数密码,专业版支持6位
    • 导入压缩包文件
    • 使用默认设置开始密码恢复(示例中仅用4秒恢复密码)
  5. 最终解密

    • 使用恢复的密码解压文件
    • 打开flag.txt文件
    • 对内容进行字母反转操作获取最终flag

四、关键技巧总结

  1. 伪加密识别:检查全局方式位标记(00 00表示无加密,特定值可能表示伪加密)
  2. CRC校验验证:异常的CRC值(如全0)可能提示文件被修改
  3. 工具选择:Bandizip比普通压缩工具能更好地处理损坏文件
  4. 密码恢复:短密码可快速爆破,复杂密码需要字典或掩码攻击
  5. 十六进制编辑:010 Editor等工具可直接修改ZIP文件结构

五、扩展知识

  1. ZIP文件注释:可能隐藏密码或提示信息
  2. 冗余数据:检查文件末尾是否有附加数据
  3. 组合攻击:伪加密+CRC碰撞等组合题型
  4. 时间戳分析:修改时间可能包含隐藏信息

通过掌握这些知识和技巧,能够有效解决CTF竞赛中大多数ZIP压缩包相关的题目。

CTF中ZIP压缩包题目分析与实战技巧 一、ZIP文件基础结构 ZIP文件由三个主要部分组成: 压缩源文件数据区 头文件标记: 50 4B 03 04 解压文件所需pkware版本: 14 00 全局方式位标记(判断有无加密): 00 00 压缩方式: 08 00 最后修改文件时间: 5A 7E 最后修改文件日期: F7 46 压缩源文件目录区 目录中文件文件头标记: 50 4B 01 02 压缩使用的pkware版本: 1F 00 解压文件所需pkware版本: 14 00 全局方式位标记(判断伪加密): 00 00 压缩方式: 08 00 最后修改文件时间: 5A 7E 最后修改文件日期: F7 46 压缩源文件目录结束标志 目录结束标记: 50 4B 05 06 当前磁盘编号: 00 00 目录区开始磁盘编号: 00 00 本磁盘上纪录总数: 01 00 目录区中纪录总数: 01 00 目录区尺寸大小: 59 00 00 00 目录区对第一张磁盘的偏移量: 3E 00 00 00 ZIP文件注释长度: 00 00 二、CTF中ZIP压缩包常见题型 利用进制转换隐藏信息 作为冗余信息或隐藏信息藏在其他文件中(通常是图片) 简单密码爆破 字典爆破/掩码攻击 伪加密 明文攻击 CRC32碰撞 文件修复 冗余信息拼接 注释隐藏密码 三、实战案例分析:RWZIP题目 工具准备 Winhex 010 Editor Bandizip 解题步骤 初步检查 下载题目提供的压缩包文件 使用普通压缩工具(如360压缩)打开,发现flag.txt文件提示损坏 尝试用WinRAR保留损坏文件打开,提示需要密码 使用Bandizip打开检查 十六进制分析 使用010 Editor打开压缩包 检查文件头标记和关键字段 展开flag.txt文件信息部分进行分析 对照压缩源文件数据区结构逐项检查 异常发现 在CRC校验部分发现全为0,明显异常 使用010 Editor直接修改异常部分 保存修改后的文件 密码恢复 使用Bandizip的密码恢复功能 注意:普通版仅支持4位数密码,专业版支持6位 导入压缩包文件 使用默认设置开始密码恢复(示例中仅用4秒恢复密码) 最终解密 使用恢复的密码解压文件 打开flag.txt文件 对内容进行字母反转操作获取最终flag 四、关键技巧总结 伪加密识别 :检查全局方式位标记( 00 00 表示无加密,特定值可能表示伪加密) CRC校验验证 :异常的CRC值(如全0)可能提示文件被修改 工具选择 :Bandizip比普通压缩工具能更好地处理损坏文件 密码恢复 :短密码可快速爆破,复杂密码需要字典或掩码攻击 十六进制编辑 :010 Editor等工具可直接修改ZIP文件结构 五、扩展知识 ZIP文件注释 :可能隐藏密码或提示信息 冗余数据 :检查文件末尾是否有附加数据 组合攻击 :伪加密+CRC碰撞等组合题型 时间戳分析 :修改时间可能包含隐藏信息 通过掌握这些知识和技巧,能够有效解决CTF竞赛中大多数ZIP压缩包相关的题目。