跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

攻防世界 MISC 进阶题:图片隐写与 UUencode 解密实战

攻防世界 MISC 进阶题 picture2 涉及图片隐写与编码转换。通过 binwalk 提取隐藏数据,利用 Python 脚本解码 Base64 获取二进制文件。修复 ZIP 头错误后,根据 Python 报错信息破解压缩包密码,最终经 UUencode 解码得到 Flag。

猫巷少女发布于 2025/1/20更新于 2026/6/517 浏览
攻防世界 MISC 进阶题:图片隐写与 UUencode 解密实战

前言

这道题目结合了图片隐写与多种编码转换技术。Uuencode 是一种将二进制信息转换为可打印字符的编码方案,常用于邮件传输,现在虽多被 MIME 取代,但在 CTF 中仍常见。解题过程涉及文件提取、Base64 解码、文件头修复以及密码破解。

解题思路

1. 初步分析

拿到附件是一张 PNG 图片。常规手段如 Winhex 和 Stegsolve 看不出明显问题,这时候需要借助 binwalk 进行深度扫描。

2. 文件提取

使用 binwalk 对图片进行分离提取,命令如下:

binwalk -e e4103617b4a6476fb7aa8f862f2ee400.png

执行后会在当前目录生成一个文件夹,里面包含提取出的隐藏数据。打开其中一个文本文件,会发现一段 Base64 编码的字符串:

S1ADBBQAAQAAADkwl0xs4x98WgAAAE4AAAAEAAAAY29kZePegfAPrkdnhMG2gb86/AHHpS0GMqCrR9s21bP43SqmesL+oQGo50ljz4zIctqxIsTHV25+1mTE7vFc9gl5IUif7f1/rHIpHql7nqKPb+2M6nRLuwhU8mb/w1BLAQI/ABQAAQAAADkwl0xs4x98WgAAAE4AAAAEACQAAAAAAAAAIAAAAAAAAABjb2RlCgAgAAAAAAABABgAAFvDg4Xa0wE8gAmth9rTATyACa2H2tMBUEsFBgAAAAABAAEAVgAAAHwAAADcAFtQeXRob24gMi43XQ0KPj4+IKh9qH2ofQ0KDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIjxweXNoZWxsIzA+IiwgbGluZSAxLCBpbiA8bW9kdWxlPg0KICAgIKh9qH2ofQ0KWmVyb0RpdmlzaW9uRXJyb3I6IKh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofSA8LSBwYXNzd29yZCA7KQ0KPj4+IAA=

3. Python 脚本解码

这段 Base64 数据实际上是一个压缩包的二进制内容。我们可以用简单的 Python 脚本来还原它:

import base64

t = "S1ADBBQAAQAAADkwl0xs4x98WgAAAE4AAAAEAAAAY29kZePegfAPrkdnhMG2gb86/AHHpS0GMqCrR9s21bP43SqmesL+oQGo50ljz4zIctqxIsTHV25+1mTE7vFc9gl5IUif7f1/rHIpHql7nqKPb+2M6nRLuwhU8mb/w1BLAQI/ABQAAQAAADkwl0xs4x98WgAAAE4AAAAEACQAAAAAAAAAIAAAAAAAAABjb2RlCgAgAAAAAAABABgAAFvDg4Xa0wE8gAmth9rTATyACa2H2tMBUEsFBgAAAAABAAEAVgAAAHwAAADcAFtQeXRob24gMi43XQ0KPj4+IKh9qH2ofQ0KDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIjxweXNoZWxsIzA+IiwgbGluZSAxLCBpbiA8bW9kdWxlPg0KICAgIKh9qH2ofQ0KWmVyb0RpdmlzaW9uRXJyb3I6IKh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofSA8LSBwYXNzd29yZCA7KQ0KPj4+IAA="
a = base64.b64decode(t)
with open('a', "bw") as f:
    f.write(a)

运行脚本后得到名为 a 的二进制文件。用 Winhex 打开查看,发现文件头是 4b 50 03 04,这看起来像 ZIP 格式,但标准 ZIP 头应该是 50 4b 03 04(PK\x03\x04)。这里字节顺序反了,导致无法直接识别为压缩包。

4. 文件头修复与解压

在 Winhex 中将开头的 4b 50 修改为 50 4b,并将后缀改为 .zip。再次尝试解压时,系统提示需要密码。

回到之前提取的文本文件中,有一行报错信息:

ZeroDivisionError: integer division or modulo by zero

这是 Python 2.7 的典型报错。根据这个提示,密码正是 integer division or modulo by zero。输入该密码成功解压出 code 文件。

5. 最终解密

Winhex 打开 code 文件,得到一串看似乱码的字符:

G0TE30TY[,C,X.$%&,C@Y,T5".#5%0C%"-#,Y04)&1C8Q-S,Q.49]

结合题目类型和之前的 Uuencode 介绍,这串字符实际上是经过 UUencode 编码的。使用在线 UUencode 解码工具处理即可得到最终的 Flag:

CISCN{2388AF2893EB85EB1B439ABFF617319F}

总结

本题主要考察了以下几个知识点:

  • binwalk:用于从图片中提取隐藏数据。
  • Python 脚本:用于 Base64 解码及文件写入。
  • Winhex:用于十六进制编辑,修复损坏的文件头。
  • UUencode:最后的编码转换形式。

整个流程环环相扣,关键在于识别出文件头的错误以及利用报错信息作为密码线索。

目录

  1. 前言
  2. 解题思路
  3. 1. 初步分析
  4. 2. 文件提取
  5. 3. Python 脚本解码
  6. 4. 文件头修复与解压
  7. 5. 最终解密
  8. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • PostgreSQL 动态分区裁剪技术:查询性能优化实战
  • 位运算算法实战:判断字符唯一、丢失数字与两数之和详解
  • Agent Symbolic Learning:首个实现 AI 自主进化的端到端符号化训练框架
  • 基于 Excel VBA 与大模型 API 实现用户反馈情感分析自动化
  • AMD 显卡 AI 绘画部署指南:ComfyUI 配置与性能优化
  • LeetCode 链表经典题目:移除、反转、中间节点、合并与回文结构
  • C++ 类与对象进阶:初始化列表、静态成员与编译器优化实战
  • 基于 Bright Data MCP Server 构建实时数据驱动的 AI 情报系统实战
  • 前后端分离架构深度解析:选型、优缺点与实战对比
  • Vue3 + TypeScript:Promise<string> 转 string 类型错误解析与异步处理
  • 机器人脑部药物递送三大技术路径的可转化性分析研究
  • EpicDesigner 快速上手指南:Vue3 拖拽式低代码设计器
  • Python 处理中文文件:解决 UTF-8 解码错误的 4 种实战方法
  • Python 数据类转换为 JSON 的三种方法
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调实践
  • Visual C++ Redistributable 运行时组件问题修复指南
  • C++ 字符序列处理详解
  • Git 本地核心操作:Commit 规范、Reset 回退与 Restore 撤销
  • Android Framework 源码解析与核心原理详解
  • 2024 年大模型行业应用十大典范案例解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online