OneTrueJASH/ubuntu-terminal-ctf

GitHub: OneTrueJASH/ubuntu-terminal-ctf

一个以 Docker 镜像形式分发的游戏化 Linux 终端学习平台,通过 CTF 挑战帮助初学者在模拟环境中掌握 Ubuntu 基础命令。

Stars: 0 | Forks: 0

# Ubuntu 终端 CTF **10 个黑客主题挑战 + 一个 Boss 关卡**,打包为 Docker 镜像。旨在教初学者掌握基础 Ubuntu 终端备忘单上的所有命令——而无需他们安装 Ubuntu、配置 SSH,甚至不需要知道什么是 Docker。 每个挑战都有一个故事背景(查找后门、清除诱饵、搜索访问日志),并奖励他们一个 `FLAG{…}`,他们可以通过内置的 `ctf` 命令进行提交。 ## 面向学生 —— 开始入门(约 5 分钟) 你需要: - 一台 Mac 或 Linux 电脑 - [已安装 Docker](https://docs.docker.com/get-docker/) 打开终端(在 Mac 上:`Cmd+Space → 终端`;在 Linux 上:`Ctrl+Alt+T`)并运行: ### 1. 下载 CTF 镜像 ``` curl -LO https://github.com/OneTrueJASH/ubuntu-terminal-ctf/releases/latest/download/ubuntu-terminal-ctf.tar.gz ``` ### 2. 加载镜像并启动容器 ``` gunzip -c ubuntu-terminal-ctf.tar.gz | docker load docker run -d --name ctf -p 2222:22 ubuntu-terminal-ctf:latest ``` ### 3. 通过 SSH 登录容器 ``` ssh hacker@localhost -p 2222 ``` 出现提示时: - 输入 `yes` 以接受指纹(仅第一次需要) - 密码:**`hacker`** ### 4. 开始黑客挑战 一旦你成功登录: ``` ctf list # show all challenges ctf start 01 # open the first challenge's instructions ctf hint 01 # need a hint? ctf submit 01 FLAG{...} # turn in a flag ``` 依次完成 01 → 10,然后挑战 **关卡 11**(Boss)。 ## 你将学到什么 | 挑战 | 主题 | 命令 | |---|---|---| | 01 | 导航与隐藏文件 | `cd`, `ls -la`, `cat` | | 02 | 查找文件 | `find` | | 03 | 搜索文本 | `grep` | | 04 | 首行与末行 | `head`, `tail` | | 05 | 管道与计数 | `grep`, `wc`, `\|` | | 06 | 权限 | `chmod +x` | | 07 | 移动与重命名 | `mkdir`, `mv` | | 08 | 重定向 | `>`, `>>` | | 09 | 进程管理 | `ps`, `kill` | | 10 | 网络请求 | `curl` | | 11 | **BOSS** — 组合劫掠 | `ls -la`, `grep -r`, `head` + `tail` + `\|`, 组装 | ## 当你完成后 停止容器: ``` docker stop ctf ``` 稍后再次启动它(你的进度会被保存): ``` docker start ctf ssh hacker@localhost -p 2222 ``` 清除一切并重新开始: ``` docker rm -f ctf docker run -d --name ctf -p 2222:22 ubuntu-terminal-ctf:latest ``` ## 面向讲师/运营者 —— 从源码构建 如果你想修改挑战或重新构建镜像: ``` git clone https://github.com/OneTrueJASH/ubuntu-terminal-ctf.git cd ubuntu-terminal-ctf ./build.sh # builds the docker image ./run.sh # runs it locally on port 2222 ./export.sh # rebuilds the .tar.gz for distribution ``` ### 修改挑战 每个挑战都位于 `content/challenges/NN_topic/` 目录中: - `README.md` — 学生看到的内容 - `build.sh`(可选)— 在镜像构建时生成合成内容(日志、大海捞针等数据集) - 静态数据文件 添加新挑战: 1. 创建 `content/challenges/NN_yourname/README.md` 2. 将你的 flag 的 SHA-256 哈希值添加到 `content/flags.sha256` 中:`printf %s 'FLAG{your_flag}' | sha256sum` 3. 在 `content/hints.txt` 中添加一行提示 4. (可选)在 `content/checks/NN.sh` 处添加一个基于状态的检查器 5. 重新构建 `ctf list` 命令通过 globbing 自动发现挑战,因此框架会自动加载新挑战。 ### 安全说明 这是一个**学习沙盒**,而不是经过安全加固的生产级镜像。`hacker` 用户的密码很容易被猜到(`hacker`);不要将端口 2222 暴露到互联网上。请在学生的笔记本电脑上运行,或者在局域网盒子上的防火墙后面运行。容器内没有可用的 `sudo` ——除非 Docker 本身配置错误,否则学生无法逃逸到宿主机。 ### 文件结构 ``` . ├── Dockerfile # ubuntu:22.04 base + sshd + CLI tooling ├── build.sh # docker build ├── run.sh # docker run (local testing) ├── export.sh # docker save | gzip → tarball ├── README.md # this file ├── TERMINAL_CHEATSHEET.md # student companion reference ├── LICENSE └── content/ # everything baked into the image ├── start.sh # container entrypoint (starts sshd + bg services) ├── install.sh # one-shot setup during image build ├── motd # SSH login banner ├── bashrc-additions # PS1, aliases, login hook ├── welcome.md # /home/hacker/README.md inside the container ├── flags.sha256 # hashed flag answers (one line per challenge) ├── hints.txt # one-line hints per challenge ├── bin/ # ctf, submit, progress, launch_bg (decoy spawner) ├── checks/ # state-based validators (07, 08, 09) ├── challenges/ # one folder per challenge └── web/ # files served on :8080 (challenge 10) ``` ## 许可证 MIT — 请参阅 [LICENSE](./LICENSE)。为高中生而作。你可以拿走它、fork 它,发布你自己的版本。
标签:Cutter, Docker, 内存分配, 安全防御评估, 应用安全, 请求拦截