jdtherobot/steganography-ctf
GitHub: jdtherobot/steganography-ctf
一套自包含的隐写术与密码学 CTF 教育练习项目,包含四道经过端到端验证的挑战,配有参与者文件、运行者攻略、浏览器实验环境和自动化测试。
Stars: 0 | Forks: 0
# 隐写术 CTF
这是一个包含四个挑战的夺旗赛练习,涵盖了隐写术、密码学、文件雕刻 (file carving)、元数据取证以及 x86-64 虚拟内存。这里的每一个挑战、图像、payload 和谜题都是由作者创建并拥有的。它的构建旨在作为一个真实的练习来运行——并经过了端到端的验证:所有四个挑战都有自动化的解题测试,仅凭玩家文件即可解开。
## 两个文件夹
| 文件夹 | 面向人群 | 包含内容 |
|---|---|---|
| **[`participant/`](participant/)** | 玩家 | 四个挑战文件 + 无剧透的简报、工具清单以及可玩的仓库游戏。**这是你要交给参与者的文件夹**——直接下载或原样复制即可。 |
| **[`facilitator/`](facilitator/)** | 运行者 | Flag、完整的通关攻略、分级提示阶梯、管理/房间设置、确定性重建脚本、自动化解题测试、存档溯源以及验证报告。 |
其设计的工作流程是:**组织者将 `participant/` 的内容提供给参与者**,然后使用 `facilitator/` 来开展活动——分阶段发布提示、排查死胡同,并核对答案。
## 挑战项目
| # | 标题 | 你要做什么 | 依赖于 |
|---|---|---|---|
| 1 | Photo Day lvl 2 | 从 JPEG 的 EXIF 注释中提取加密的 blob;密码已在邮件正文中泄露。 | — |
| 2 | Stegosaurus 1 | 使用字典破解 steghide 密码短语,并提取隐藏的文档。 | — |
| 3 | Stegosaurus 2 — Warehouse | 通过 x86-64 页表将虚拟地址转换为物理货架,然后破解四方密码 (four-square cipher)。 | 挑战 2 |
| 4 | Stegosaurus 3 | 雕刻多 payload 的 JPEG,破解一个压缩包,恢复隐藏在量化表中的 AES 密钥,并揭开三层加密。 | — |
挑战 3 的密码输入是你在挑战 2 中恢复文档的第 9 行,因此**必须先完成 2 再做 3**。
## 快速开始
**游玩方式:** 下载 [`participant/`](participant/),打开 `participant/README.md`,并使用 `participant/PLAYER_TOOLKIT.md` 检查你的工具。你会用到 `exiftool`、`openssl`、`binwalk`、`steghide`、`python3` 以及常用的 `file`/`dd`/`xxd`/`unzip`。
**在本地运行网站**(包含指南和仓库游戏,与其发布时的形式完全一致):
```
bash deploy/pages/build.sh # builds deploy/pages/dist/
cd deploy/pages/dist && python3 -m http.server 8000
# → http://localhost:8000
```
**浏览器内的实验环境**(可选——一个在浏览器中运行的 32 位 Linux 终端,无需安装):
```
cd browser-lab && python3 -m http.server 8001 # → http://localhost:8001
```
请使用真实的服务器,而不是直接打开 HTML 文件;游戏和实验环境依赖于某些浏览器 API,这些 API 会被 `file://` 协议阻止。
## 验证其有效性
```
make test-challenges # solves all four from the participant files and asserts each flag
make scan-secrets # checks no answers leaked into participant/
make build-challenges # deterministically rebuilds the challenge distributions
```
所有四个解题测试均通过,仓库游戏包含 27 个断言的浏览器测试,并且浏览器实验环境的工具链已在一个真实的 32 位容器中通过在其中解决挑战 2 和 4 得到了验证。详情请见 [`facilitator/VALIDATION_REPORT.md`](facilitator/VALIDATION_REPORT.md)。
## 仓库结构
```
participant/ what players get — challenges, briefings, toolkit, warehouse game
facilitator/ answers, walkthroughs, hint ladders, rebuild + solver tests, provenance
browser-lab/ in-browser 32-bit Linux lab (v86) + image build recipe + feasibility proof
deploy/ static-site bundle for publishing, and lab hosting configs
build/ archive inventory, secret-scan gate, shared build config
```
这些挑战是根据最初一次运行的存档重建的。该存档是不可变的,并且保存在此仓库之外;每一个规范文件都可以在 [`facilitator/ARCHIVE_PROVENANCE.md`](facilitator/ARCHIVE_PROVENANCE.md) 中通过 SHA-256 追溯到该存档,包括哪些修订被拒绝了以及原因。
## 学术用途
这是一个经过授权的、自包含的教育练习,仅在提供的本地文件上运行。它不会触及第三方系统、在线服务或真实的凭据;密码恢复仅适用于故意嵌入的 CTF 秘密,并使用作者提供的字典。完整声明:[`facilitator/ACADEMIC_USE.md`](facilitator/ACADEMIC_USE.md)。
标签:取证, 后端开发, 多模态安全, 安全培训, 安全测试工具, 密码学, 手动系统调用, 教学演练, 数据可视化, 逆向工具, 隐写术