charindithjaindu/ctf-autopwn
GitHub: charindithjaindu/ctf-autopwn
针对 GZCTF 平台的全自动 CTF 竞赛解题工具,通过轮询题目并生成 AI solver 线程实现无人值守的自动分析与 flag 提交。
Stars: 0 | Forks: 0
# CTF AutoPwn
全自动 GZCTF CTF 解题工具。登录、监控题目、生成 AI solver、提交 flag——全程无人值守。
## 架构
```
You (one command)
│
├─► ctf_watcher.py ──poll 10s──► GZCTF API
│ │
│ ├─► [new challenge] ──► t3_manage.py spawn ──► T3 Code Thread (Opus 4.8)
│ │ │
│ │ ├─► download_attachment.py
│ │ ├─► analyze + solve
│ │ └─► submit_flag.py ──► GZCTF API
│ │
│ └─► [session expired] ──► auto re-login
│
└─► Session saved to ~/.config/ctf-autopwn/session.json
```
## 安装
```
git clone https://github.com/charindithjaindu/ctf-autopwn.git
cd ctf-autopwn
chmod +x install.sh
./install.sh
```
### 依赖
- **必需:** Python 3.10+、curl、git
- **必需:** T3 Code + `t3-manage` 技能(用于生成 solver 线程)
- **可选:** binwalk、tshark、foremost、nmap(供 solver 线程使用)
## 用法
### 1. 登录
```
python3 scripts/login.py https://ctf.example.com myuser mypass
```
会话将保存至 `~/.config/ctf-autopwn/session.json`(chmod 600)。
### 2. 获取 T3 Token
```
export T3_TOKEN="$(t3 auth session issue --base-dir ~/.t3 --ttl 1d --label ctf --token-only)"
```
### 3. 启动监控器
```
# 观看实时比赛(每 10s 轮询一次)
python3 scripts/ctf_watcher.py \
--url https://ctf.example.com/games/2/challenges \
--user myuser --pass mypass
# 等待比赛开始,然后自动观看
python3 scripts/ctf_watcher.py \
--url https://ctf.example.com/games/2/challenges \
--user myuser --pass mypass \
--wait-for-start
# 一次性操作:为所有当前未解决的题目生成实例
python3 scripts/ctf_watcher.py \
--url https://ctf.example.com/games/2/challenges \
--once
```
### 4. 手动提交 flag
```
python3 scripts/submit_flag.py --game-id 2 --challenge-id 11 --flag "Legion{flag_here}"
```
## 选项
| 标志 | 默认值 | 描述 |
|------|---------|-------------|
| `--url` | — | 比赛 URL(例如 `https://host/games/2/challenges`) |
| `--user` | — | GZCTF 用户名(启用自动重新登录) |
| `--pass` | — | GZCTF 密码 |
| `--poll-interval` | 10 | 轮询间隔(秒) |
| `--wait-for-start` | false | 阻塞直到比赛开始 |
| `--once` | false | 生成所有未解决的题目,然后退出 |
| `--model` | `global.anthropic.claude-opus-4-8[1m]` | 用于 solver 的 AI 模型 |
| `--instance` | `claudeAgent` | T3 provider 实例 |
| `--project` | `CTF - ` | T3 项目名称 |
## 会话管理的工作原理
1. `login.py` 通过 `POST /api/account/login` 进行身份验证并保存 cookie
2. `ctf_watcher.py` 将该 cookie 用于所有 API 调用
3. 遇到 HTTP 401 时,它会自动使用存储的凭据重新进行身份验证
4. 如果提供了 `--user`/`--pass`,`submit_flag.py` 也会处理 401 错误并重新登录
## 每个 Solver 线程获取的内容
每个生成的 T3 Code 线程将接收:
- 题目标题、类别、分数、ID
- 来自 GZCTF API 的完整 HTML 描述
- 附件下载命令
- 实例/目标 URL(如适用)
- 带有正确比赛/题目 ID 的 `submit_flag.py` 命令
- 独立工作的指令
## 在另一台机器上部署
新机器的最低要求:
1. **本代码仓库** — 执行 `git clone` 克隆
2. **T3 Code** — 安装并运行(`t3 serve` 或桌面应用)
3. **t3-manage skill** — T3 线程生成器(放置于 `~/.claude/skills/t3-code/t3-manage/`)
4. **Claude Code** — 必须在 PATH 中(T3 Code 会调用它)
5. **AWS Bedrock 或 Anthropic API 访问权限** — 在 T3 settings.json 中配置
```
# 在新机器上:
git clone https://github.com/charindithjaindu/ctf-autopwn.git
cd ctf-autopwn
./install.sh
# 在 ~/.t3/userdata/settings.json 中配置 T3 provider
# 然后:
export T3_TOKEN="$(t3 auth session issue --base-dir ~/.t3 --ttl 1d --token-only)"
python3 scripts/ctf_watcher.py --url --user --pass
```
## License
MIT
标签:AI解题, GZCTF, Python, 数字取证, 无后门, 网络调试, 自动化, 自动化脚本, 逆向工具