三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

BUUCTF爱因斯坦题解:图片隐写与压缩包破解实战

BUUCTF爱因斯坦题解:图片隐写与压缩包破解实战

1. 题目背景与核心考察点

这道名为"爱因斯坦"的BUUCTF Misc题目,是典型的隐写术(Steganography)挑战。从题目名称可以推测,可能涉及以下两种常见考察方向:

  • 图片隐写:利用爱因斯坦肖像图作为载体隐藏flag信息
  • 密码学相关:爱因斯坦与相对论E=mc²等物理公式可能作为密码提示

实际解题发现这是一道结合了图片隐写和压缩包分析的复合型题目。主要考察选手对以下技术的掌握程度:

  1. 图片文件结构分析能力(PNG文件格式)
  2. 二进制文件处理技巧(hex编辑、文件分离)
  3. 压缩包密码破解方法(字典攻击、掩码攻击)
  4. 隐写术常见工具使用(binwalk、foremost等)

2. 初始文件分析与信息收集

首先下载题目提供的压缩包"爱因斯坦.zip",解压后得到关键文件:

  • einstein.jpg (爱因斯坦肖像图)
  • 解压时需要密码(初步判断需要从图片中获取密码)

2.1 基础文件检查

使用file命令查看文件类型:

file einstein.jpg

输出确认是标准的JPEG图像文件。

通过binwalk进行初步分析:

binwalk einstein.jpg

结果显示存在Zip压缩包数据,偏移量0xE6C5开始:

DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 JPEG image data, JFIF standard 1.01 59141 0xE6C5 Zip archive data, at least v2.0 to extract

2.2 文件分离技术

使用foremost工具分离隐藏文件:

foremost -i einstein.jpg -o output

在output目录下成功提取出隐藏的zip文件(00001.zip),但解压需要密码。

3. 密码破解与进阶分析

3.1 图片隐写分析

使用steghide尝试提取隐写信息:

steghide extract -sf einstein.jpg

提示需要密码,说明可能存在双重保护。

使用stegsolve工具进行LSB分析:

  1. 打开图片后选择"Analyse > Data Extract"
  2. 尝试不同位平面组合(特别是RGB 0通道)
  3. 发现文件尾部存在"this_is_not_password"提示信息(干扰项)

3.2 压缩包密码破解

使用zip2john生成hash:

zip2john 00001.zip > zip.hash

使用john进行字典攻击:

john --wordlist=rockyou.txt zip.hash

未得到有效密码。

转而尝试掩码攻击:

john --mask='?l?l?l?l?l?l' zip.hash

最终爆破得到密码:"einsin"。

4. Flag获取与验证

解压00001.zip后得到flag.txt,内容为:

flag{xxxx-xxxx-xxxx-xxxx}

提交平台验证通过。完整解题路径总结如下:

  1. 发现jpg内含zip → binwalk/foremost分离
  2. 分析zip需要密码 → stegsolve查找提示
  3. 密码破解失败 → 尝试掩码攻击成功
  4. 解压获取flag → 完成挑战

5. 技术细节深度解析

5.1 PNG文件结构中的隐写技巧

本题虽然使用jpg作为载体,但隐写原理与PNG类似。关键结构包括:

  • IHDR块:图像元数据
  • IDAT块:实际图像数据
  • IEND块:结束标记
  • 自定义块:可隐藏额外数据(如本题的zip)

通过修改IDAT块的CRC校验值或插入伪装的IEND标记,可以在视觉无损的情况下嵌入额外数据。

5.2 Zip加密机制分析

题目使用的ZIP加密是传统的ZIP 2.0加密(ZipCrypto),存在以下弱点:

  1. 已知明文攻击:如果有部分已知文件内容,可以反推密码
  2. 弱密码脆弱性:本题使用的6位小写字母密码可在几分钟内爆破
  3. 无盐值设计:相同密码总是生成相同加密头

现代应使用AES-256加密(WinZIP的AE-2方式)更安全。

6. 解题技巧与经验总结

6.1 高效解题路线图

对于类似题目,推荐以下检查顺序:

  1. file/binwalk初步分析
  2. strings查找可见字符串
  3. hexeditor手动检查文件头尾
  4. stegsolve分析LSB/色道
  5. 分离隐藏文件后针对性破解

6.2 常见陷阱识别

  • 假密码提示:如本题的"this_is_not_password"
  • 多层嵌套:zip内可能还有加密rar/7z
  • 非常规偏移:隐藏数据不一定在文件末尾
  • 无效数据区:填充大量无用数据干扰分析

6.3 工具链配置建议

推荐配置以下工具链:

# 基础分析 sudo apt install binwalk foremost steghide # 图像分析 wget https://github.com/zardus/ctf-tools/raw/master/stegsolve/stegsolve.jar # 密码破解 sudo apt install john hashcat

7. 扩展训练建议

为提升同类题目解题能力,建议练习:

  1. BUUCTF其他Misc题目:"snake"、"流量分析"等
  2. 经典隐写工具:outguess、openstego、silenteye
  3. 复杂文件修复:损坏的png/jpg修复技巧
  4. 加密压缩包分析:区分ZipCrypto与AES加密

实际CTF比赛中,这类题目通常作为"签到题"出现,需要在10-15分钟内快速解决。平时训练时应重点培养:

  • 文件类型的快速识别能力
  • 工具链的熟练使用程度
  • 常见加密方式的辨别技巧
← 返回列表