ctf-web-recon
$
npx mdskill add wgpsec/AboutSecurity/ctf-web-reconLocate CTF web attack vectors within 2-3 rounds.
- Identifies source leaks, backup files, and hidden paths.
- Analyzes HTTP headers and HTML comments for clues.
- Prioritizes high-value targets over exhaustive enumeration.
- Extracts actionable hints from response metadata.
SKILL.md
.github/skills/ctf-web-reconView on GitHub ↗
--- name: ctf-web-recon description: "CTF Web 挑战专用侦察方法。当面对 CTF 靶场目标需要快速发现攻击入口时使用。与真实渗透的 recon 不同——CTF 是单个应用、有意留线索、侦察应在 2-3 轮内完成。覆盖源码泄露、备份文件、隐藏路径、页面线索提取" metadata: tags: "ctf,recon,侦察,源码泄露,备份文件,robots,git,web,enumeration" category: "ctf" --- # CTF Web 侦察方法论 CTF 侦察和真实渗透的侦察本质不同: - 真实渗透:大量资产,需要枚举子域名、扫端口、做指纹 - CTF:**单个 Web 应用,出题者故意留了线索**,侦察的目标是找到这些线索 核心原则:**2-3 轮内完成侦察**,不要在侦察上花太多 rounds。 ## Phase 1: 侦察流程 ### 1.1 首页分析 用 `http_request` GET 首页,仔细检查响应: ### HTTP 响应头 - `Server` — 服务器类型和版本(Apache/Nginx/Express) - `X-Powered-By` — 后端语言(PHP/Express/ASP.NET) - `Set-Cookie` — Cookie 格式(PHPSESSID=PHP, connect.sid=Node, JSESSIONID=Java) - 非标准 Header — 出题者可能通过自定义 Header 给提示 ### HTML 内容 - `<!-- 注释 -->` — CTF 出题者常在注释里留提示(密码、路径、漏洞类型) - `<input type="hidden">` — 隐藏字段可能可以篡改 - `<form action="...">` — 表单提交地址暴露后端接口 - `<script src="...">` — JS 文件路径暴露项目结构 - 页面文字 — 有时提示就在页面内容里("Try harder", "Look deeper") ### 1.2 关键路径检查 按优先级依次检查(有发现就分析,不要机械地全部检查): ### 信息泄露路径 ``` /robots.txt — 最常见的提示位置,Disallow 的路径往往是关键 /.git/HEAD — Git 源码泄露(存在则用 githacker --brute 恢复完整仓库,含 stash/所有分支) /.svn/entries — SVN 泄露 /.DS_Store — macOS 目录文件泄露 /crossdomain.xml — Flash 跨域策略(可能暴露内部域名) /.env — 环境变量文件(数据库密码、API 密钥) /composer.json — PHP 依赖(暴露框架版本) /package.json — Node.js 依赖 ``` ### 备份文件 ``` /www.zip, /www.tar.gz, /backup.zip — 整站打包 /index.php.bak, /index.php~, /index.php.swp — 编辑器备份 /flag.txt, /flag, /flag.php — 直接读 flag(有时就这么简单) /.index.php.swp — Vim swap 文件 ``` ### 管理入口 ``` /admin, /admin.php, /login, /login.php /console, /dashboard, /phpmyadmin /api, /api/v1, /graphql ``` ### 1.3 JavaScript 分析 如果首页引用了 JS 文件,用 `http_request` 获取它们,搜索: - API 端点路径(`/api/`, `fetch(`, `axios.`) - 硬编码凭据(`password`, `token`, `secret`, `key`) - 隐藏功能(`admin`, `debug`, `test`) - 注释中的提示 **技巧**:压缩/混淆的 JS 不需要完全理解,搜索关键字符串即可。 ### 1.4 技术栈确认 通过前面的信息确认技术栈,这决定了后续的漏洞利用方向: | 线索 | 技术栈 | 常见漏洞 | |------|--------|----------| | `.php` 后缀, PHPSESSID | PHP | LFI, 反序列化, 文件上传 | | `express`, connect.sid | Node.js | 原型链污染, SSTI(EJS) | | JSESSIONID, `.jsp` | Java | 反序列化, JNDI, SpEL | | `_csrf_token`, `csrfmiddlewaretoken` | Python Django | SSTI(Jinja2) | | `session=eyJ` | Python Flask | Flask session 伪造 | ## Phase 2: 侦察补充 ### 2.1 不要做的事 - ❌ 不要对 CTF 目标做子域名枚举(只有一个应用) - ❌ 不要做大规模端口扫描(通常只有一个端口) - ❌ 不要花超过 3 轮在侦察上(线索不在侦察里就在功能点里) ### 2.2 技术指纹判断 - NoSQL/MongoDB 特征:尝试 `$gt`、`$ne` 等 NoSQL 注入操作符 ### 2.3 CTF 效率 - CTF 单应用:不做子域名枚举、不做大规模端口扫描