ctf-web-recon

$npx mdskill add wgpsec/AboutSecurity/ctf-web-recon

Locate 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 单应用:不做子域名枚举、不做大规模端口扫描
More from wgpsec/AboutSecurity