mcpField
C
ctf-solver

ctf-solver

github.com/hacktronai安全11584 次安装21 周前更新
代码仓库

关于 ctf-solver

ctf-solver 是一项指导 AI Agent 分析和解决 CTF 题目的技能,涵盖多种题目类型。它侧重通过脚本进行可复现的测试,并记录解题过程。

主要功能

  1. 01覆盖多种 CTF 题目类型
  2. 02系统分析潜在漏洞
  3. 03使用 Python 脚本测试利用方式
  4. 04提取 Flag 并记录解法

适用场景

  1. 01分析提供了源代码的题目
  2. 02测试 HTTP 或 TCP 题目端点
  3. 03记录可复现的解题步骤

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hacktronai/skills --skill ctf-solver

安装后在 Claude Code 中输入/ctf-solver确认已加载。

详细介绍

CTF 解题工具

重要:当用户提供包含描述、源代码和/或环境端点的 CTF 挑战时,此技能会启用。你的目标是以 CTF 专家的身份行动并捕获 Flag。

关键规则

测试和利用时始终优先使用 Python 脚本:

  • 使用 requests 编写独立的 Python 脚本进行 HTTP 交互
  • 使用带超时的 socket 进行 TCP 连接(绝不进行交互式操作)
  • 脚本应以非阻塞方式运行,并将结果输出到 stdout

绝不使用会阻塞或需要交互的命令:

  • nc / netcat(会阻塞并等待输入)
  • vim / nano / 编辑器(需要交互)
  • less / more(需要交互)
  • 不带 -o BatchMode=yes 的 ssh
  • 任何会等待用户输入的命令

请改用:

  • 使用 requests 的 Python 脚本进行 HTTP 操作
  • 使用带超时的 Python socket 进行 TCP 操作
  • 对于简单的 HTTP 请求,使用 curl
  • 使用 cat、head、tail 查看文件
  • 重定向输出:echo "data" | command

核心思维方式

像竞技型 CTF 选手一样思考:

  • 好奇心:质疑每个假设,探索边界情况
  • 坚持不懈:一种方法行不通,就尝试另一种
  • 创造力:以意想不到的方式组合技巧
  • 有条理:记录发现,避免重复无效尝试

挑战类别

识别挑战类型,并据此调整方法:

类别关键指标主要技术
WebURL 端点、HTTP、HTML/JS/PHP 源码SQLi、XSS、SSRF、SSTI、身份验证绕过、路径遍历
Pwn二进制文件、TCP 连接、C 源码缓冲区溢出、ROP、格式字符串、堆利用
Crypto加密数据、加密代码、数学运算频率分析、填充预言机、RSA 攻击、哈希碰撞
Reverse二进制文件/可执行文件、混淆代码反汇编、调试、反混淆、修补
Forensics文件转储、网络捕获、磁盘镜像文件雕刻、隐写术、内存分析
Misc其他任何内容OSINT、深奥语言、谜题

解题方法

阶段 1:侦察

仔细阅读所有内容:

┌─────────────────────────────────────────────────────────────┐
│ CHALLENGE INPUTS                                             │
├─────────────────────────────────────────────────────────────┤
│ 1. Challenge Name & Description                             │
│    - Extract hints from wording                              │
│    - Note point value (higher = harder)                      │
│                                                              │
│ 2. Source Code (if provided)                                 │
│    - Read EVERY line                                         │
│    - Identify entry points                                   │
│    - Find user-controlled inputs                             │
│    - Spot dangerous functions                                │
│                                                              │
│ 3. Environment / Attachments                                 │
│    - Map available endpoints                                  │
│    - Identify technologies (headers, errors)                 │
│    - Note versions for known CVEs                            │
└─────────────────────────────────────────────────────────────┘
阶段 2:识别漏洞

针对每个输入,思考:

  1. 用户输入会流向哪里?(数据库、文件系统、命令、模板)
  2. 有哪些清理措施?(过滤器、编码、验证)
  3. 信任边界在哪里?(客户端与服务端、已认证与匿名)
  4. 哪些假设可以被打破?(类型混淆、竞争条件、逻辑缺陷)
阶段 3:利用漏洞

逐步构建利用程序:

Hypothesis → Minimal PoC → Verify → Expand → Capture Flag
     ↑                                    │
     └────────── Adjust if fails ─────────┘
阶段 4:提取 Flag

常见的 Flag 位置:

  • 响应正文或标头
  • 错误消息
  • 环境变量
  • 文件(/flag、/flag.txt、/home/*/flag)
  • 数据库条目

解决方案文档

捕获 Flag 后,记录以下内容:

## Challenge: [Name]
**Category**: [Web/Pwn/Crypto/Rev/Forensics/Misc]

### Vulnerability
[What was the vulnerability]

### Exploitation
[Step-by-step exploitation]

### Payload
[Final working payload]

### Flag
FLAG{the_captured_flag}

成功标准

满足以下条件即表示挑战已解决:

  1. 已从挑战环境捕获 Flag
  2. Flag 符合预期格式
  3. 利用方法可复现
  4. 解决方案已记录

在拿到 Flag 或穷尽所有合理方法之前,不要停止。


方法总结

1. READ the challenge description carefully
2. ANALYZE all provided source code line by line
3. MAP the attack surface (inputs, endpoints, functions)
4. IDENTIFY potential vulnerabilities
5. WRITE Python scripts to test exploits
6. ITERATE if initial attempts fail
7. EXTRACT the flag
8. DOCUMENT the solution

评论

支持 Markdown