BlackBossX/Byte2Code-Session01-Challenge

GitHub: BlackBossX/Byte2Code-Session01-Challenge

一个用于 Linux 教学工作坊的迷你 CTF 平台,集成了自动化账户创建、SSH 挑战任务部署和实时提交监控仪表板。

Stars: 0 | Forks: 0

Byte2Cloud Logo

Byte2Cloud — Workshop Dashboard

一个用于 Byte2Cloud Linux Workshop 的实时提交监控仪表板。
讲师可以实时观看各团队通过 SSH/SCP 上传他们的答案。

Dashboard UI

## 概述 本仓库包含了端到端运行 Byte2Cloud Linux workshop 所需的一切: 1. **Workshop 设置** — 创建 25 个团队账户,包含任务文件和提交目录。 2. **SSH 修复** — 为所有团队账户启用基于密码的 SSH 登录。 3. **提交仪表板** — 一个用于实时监控团队提交状态的 Web 仪表板,提供两种版本: - **Python 独立服务器** — 零依赖,可在任何机器上运行。 - **Nginx + PHP 服务器** — 适用于专用 Ubuntu 服务器的生产级部署。 ## 仓库结构 ``` byte2cloud-scoreboard/ │ ├── setup_byte2cloud.sh ← Main workshop setup script (run first) ├── fix_ssh.sh ← Enables SSH password login for teams │ ├── images/ ← Screenshots │ └── UI.png ← Dashboard UI screenshot │ ├── python-server/ ← Standalone Python dashboard (no nginx needed) │ ├── server.py ← Python HTTP server (serves UI + API) │ ├── index.html ← Dashboard frontend (HTML/CSS/JS) │ ├── setup-service.sh ← Installs server as a systemd background service │ └── README.md ← Python server specific documentation │ ├── nginx-php-server/ ← Production Nginx + PHP dashboard │ ├── index.html ← Dashboard frontend (HTML/CSS/JS) │ ├── submissions.php ← JSON API: scans all team submission folders │ ├── download.php ← Secure file download endpoint │ ├── nginx-workshop.conf ← Nginx virtual host configuration │ ├── install.sh ← Full automated installation script for Ubuntu │ ├── workshop-dashboard.tar.gz ← Pre-packaged archive of web files │ └── README.md ← Nginx/PHP server specific documentation │ └── logos/ ├── Byte2Cloud.png └── byte2cloud_main.png ``` ## 第一步 — Workshop 服务器设置 在服务器上以 root 身份运行此命令**一次**,以创建所有 25 个团队账户、任务文件和提交目录。 ``` sudo bash setup_byte2cloud.sh ``` ### 此脚本的功能 | 步骤 | 操作 | |---|---| | 1 | 创建一个 `missionfiles` Linux 组 | | 2 | 创建 25 个团队账户(`team01`–`team25`),密码为 `Byte2Cloud@2026` | | 3 | 将一条秘密信息编码为 base64,并将其拆分为 4 个片段 | | 4 | 在 `/opt/mission/` 下创建任务目录树 | | 5 | 写入 4 个片段以及一份供学生阅读的 `README.txt` 简报 | | 6 | 设置权限,使团队可以读取但不能修改片段 | | 7 | 在 `/opt/submissions/teamXX/` 创建各团队的提交文件夹,并附带 `~/submissions` 符号链接 | | 8 | 写入限定范围的 `sudoers` 规则,使团队只能使用 `sudo cat` 查看片段 4 | | 9 | 运行验证检查并打印摘要 | ### 设置完成后的服务器目录布局 ``` /opt/mission/ ├── README.txt ← Mission brief for students ├── archives/2024/logs/ │ └── fragment_1.frag ← Visible fragment (chmod 444) └── hidden/ └── .fragment_2.frag ← Hidden fragment (chmod 444) /var/mission/secrets/ ├── .fragment_3.frag ← Hidden fragment (chmod 444) └── .fragment_4.frag ← Root-only fragment (chmod 700, needs sudo) /opt/submissions/ ├── team01/ ← Team's private upload folder (chmod 700) ├── team02/ └── … team25/ /home/teamXX/ └── submissions → /opt/submissions/teamXX/ ← Symlink for easy SCP ``` ## 第二步 — 启用 SSH 密码登录(如有需要) 如果团队无法使用其密码登录,请运行: ``` sudo bash fix_ssh.sh ``` 这会安全地编辑 `/etc/ssh/sshd_config`,将针对 `team*` 账户的 `PasswordAuthentication yes` 启用,然后重启 SSH 服务。系统会自动创建原始配置的备份。 ## 第三步 — 运行提交仪表板 在以下两种服务器选项中选择**其一**。 ### 选项 A:Python 独立服务器 *(推荐 — 无依赖)* **适用场景:** 你希望在任何机器(Linux/Mac)上运行仪表板,而无需安装 Nginx 或 PHP。 ``` cd python-server/ python3 server.py ``` 从其他计算机访问: ``` http://:8080 ``` **将其作为永久后台服务运行(开机自启):** ``` sudo bash python-server/setup-service.sh ``` | 命令 | 操作 | |---|---| | `sudo systemctl status workshop-dashboard` | 检查服务是否正在运行 | | `sudo systemctl stop workshop-dashboard` | 停止服务 | | `sudo systemctl restart workshop-dashboard` | 重启服务 | | `sudo journalctl -u workshop-dashboard -f` | 查看实时日志 | ### 选项 B:Nginx + PHP 服务器 *(生产级)* **适用场景:** 你正将其部署在专用的 Ubuntu 24.04 服务器上(例如 DigitalOcean droplet)。 ``` sudo bash nginx-php-server/install.sh ``` 这将安装 Nginx 和 PHP-FPM,将所有 Web 文件部署到 `/var/www/workshop/`,设置 bind-mount 以便 Web 服务器能够读取提交文件夹,配置防火墙,并启动所有服务。 访问仪表板地址: ``` http:// ``` ## 仪表板功能 | 功能 | 详情 | |---|---| | **自动刷新** | 通过 AJAX 每 5 秒获取新数据 — 无需重新加载页面 | | **提交计数器** | 实时统计所有 25 个团队的提交总数 | | **活跃团队** | 显示至少提交过一个文件的团队数量 | | **最近上传** | 高亮显示最近 5 分钟内上传的文件 | | **排行榜** | 按提交次数对团队进行排名,并配有动画进度条 | | **搜索与筛选** | 按团队筛选文件表格或按文件名搜索 | | **安全下载** | 直接从仪表板 UI 下载任何提交的文件 | | **导出 CSV** | 将所有提交数据导出为 `.csv` 文件 | | **浅色 / 深色模式** | 在深色(默认)和浅色主题之间切换 | | **倒计时环** | 可视化的倒计时器,显示距离下次刷新的秒数 | ## Workshop 任务 — 运作方式 学生通过 SSH 登录到服务器,并按照 `README.txt` 的任务简报进行操作: 1. **查找 4 个 base64 片段**,这些片段隐藏在服务器文件系统中,需使用 Linux 命令(`ls -la`、`find`、`sudo cat`)。 2. **使用安全拷贝将片段 SCP 到他们的本地机器**。 3. **合并并解码**片段:`cat frag1 frag2 frag3 frag4 | base64 -d > message.txt` 4. **从解码后的信息中提取秘密代码词**。 5. **提交他们的答案**,方法是通过 SCP 将一个文本文件上传到 `~/submissions/`。 ``` # SSH 登录服务器 ssh team01@ # 密码: Byte2Cloud@2026 # 阅读任务简报 cat /opt/mission/README.txt ``` ## 快速参考 | 任务 | 命令 | |---|---| | 设置 workshop(运行一次) | `sudo bash setup_byte2cloud.sh` | | 修复 SSH 密码登录 | `sudo bash fix_ssh.sh` | | 启动 Python 仪表板 | `python3 python-server/server.py` | | 将 Python 仪表板安装为服务 | `sudo bash python-server/setup-service.sh` | | 安装 Nginx/PHP 仪表板 | `sudo bash nginx-php-server/install.sh` | | 以团队身份连接 | `ssh team01@` (密码: `Byte2Cloud@2026`) | | 提交答案 | `scp answer.txt team01@:~/submissions/` |
标签:CTF平台, SSH/SCP, 后端开发, 实时计分看板, 应用安全, 教学实验平台, 自动化运维脚本, 逆向工具