ctf-web

ctf-web

热门

提供CTF挑战中的Web利用技术。当目标主要是HTTP应用程序、API、浏览器客户端、模板引擎、身份流程或智能合约前端/后端攻击面时使用,包括XSS、SQLi、SSTI、SSRF、XXE、JWT、认证绕过、文件上传、请求走私、OAuth/OIDC、SAML、原型污染及类似的Web漏洞。不要用于原生二进制内存破坏、独立可执行文件逆向工程、磁盘或内存取证,或纯密码分析,除非Web漏洞仍然是获取flag的主要路径。

2723Star
328Fork
更新于 2026/7/10
SKILL.md
readonly只读
name
ctf-web
description

Provides web exploitation techniques for CTF challenges. Use when the target is primarily an HTTP application, API, browser client, template engine, identity flow, or smart-contract frontend/backend surface, including XSS, SQLi, SSTI, SSRF, XXE, JWT, auth bypass, file upload, request smuggling, OAuth/OIDC, SAML, prototype pollution, and similar web bugs. Do not use it for native binary memory corruption, reverse engineering of standalone executables, disk or memory forensics, or pure cryptanalysis unless the web flaw is still the main path to the flag.

CTF Web利用

将此技能用作Web密集型挑战的路由和执行指南。第一遍保持简短:映射应用程序,确认信任边界,然后才深入详细的技术笔记。

前提条件

Python包(所有平台):

pip install sqlmap flask-unsign requests

Linux(apt):

apt install hashcat jq curl

macOS(Homebrew):

brew install hashcat jq curl

Go工具(所有平台,需要Go):

go install github.com/ffuf/ffuf/v2@latest

手动安装:

  • ysoserial — GitHub,需要Java(Java反序列化payload)

附加资源

  • sql-injection.md - SQL注入技术:认证绕过、UNION提取、过滤器绕过、二阶SQLi、截断、竞争辅助泄露、INSERT ON DUPLICATE KEY UPDATE密码覆盖、innodb_table_stats WAF绕过
  • server-side.md - PHP类型混淆、php://filter LFI、Python str.format遍历、SSTI(Jinja2、Twig、ERB、Mako、EJS、Vue.js、Smarty)、SSRF(Host头、DNS重绑定、curl重定向、未转义点正则、SNI FTP走私、mod_vhost_alias)、PHP hash_hmac NULL
  • server-side-2.md - XXE(基本、OOB、DOCX上传)、通过X-Forwarded-For的XML注入、PHP变量变量、PHP uniqid可预测文件名、顺序正则替换绕过、命令注入(换行、黑名单、sendmail CGI、多条形码、git CLI)、GraphQL注入(内省、批处理、插值)
  • server-side-exec.md - 直接代码执行路径、上传到RCE、反序列化相关执行、LaTeX注入、头和API滥用
  • server-side-exec-2.md - 更多执行链:SQLi碎片化、路径解析器技巧、多语言上传、包装器滥用、文件名注入、BMP像素webshell与文件名截断
  • server-side-deser.md - Java/Python/PHP反序列化和竞争条件手册、PHP SoapClient CRLF SSRF通过反序列化
  • server-side-advanced.md - 高级SSRF、遍历、归档、解析器、框架和现代应用服务器问题、Nginx别名遍历
  • server-side-advanced-2.md - Docker API SSRF、Castor/XML、Apache表达式读取、解析器差异、Windows路径技巧、恶意MySQL服务器文件读取
  • server-side-advanced-3.md - 第3部分(CSAW/35C3/ASIS/PlaidCTF 2018):WAV多语言上传、多斜杠URL path.startswith绕过、Xalan XSLT math:random()种子猜测、SoapClient _user_agent CRLF方法走私、gopher:///无主机URL方案绕过、SSRF凭据泄露通过攻击者指定的出站URL
  • server-side-advanced-4.md - 第4部分:WeasyPrint SSRF/文件读取(CVE-2024-28184)、MongoDB regex/$where盲注、Pongo2 Go模板注入、ZIP PHP webshell、basename()绕过、wget CRLF SSRF→SMTP、Gopher SSRF到MySQL盲SQLi、React Server Components Flight RCE(CVE-2025-55182)、AMQP/TLS拦截通过sslsplit+arpspoof、CairoSVG XXE、Bazaar仓库重建
  • client-side.md - XSS、CSRF、缓存投毒、DOM技巧、管理员机器人滥用、请求走私、付费墙绕过
  • client-side-advanced.md - CSP绕过、Unicode技巧、XSSI、CSS泄露、浏览器规范化怪癖、postMessage空源绕过
  • auth-and-access.md - 认证/授权绕过、隐藏端点、IDOR、重定向链、子域名接管、AI聊天机器人越狱
  • auth-and-access-2.md - 第2部分(2018年时期):std::unordered_set桶碰撞认证绕过、nodeprep.prepare Unicode同形异义用户名碰撞、SRP A=0/A=N认证绕过、ArangoDB AQL MERGE权限提升
  • auth-jwt.md - JWT/JWE操作、弱密钥、头注入、密钥混淆、重放
  • auth-infra.md - OAuth/OIDC、SAML、CORS、CI/CD密钥、IdP滥用、登录投毒
  • node-and-prototype.md - 原型污染、JS沙箱逃逸、Node.js攻击链
  • web3.md - Solidity和Web3挑战笔记
  • cves.md - CVE驱动的技术,可匹配挑战横幅、头、依赖泄露或版本字符串
  • field-notes.md - 长篇利用笔记:SQLi、XSS、LFI、JWT、SSTI、SSRF、命令注入、XXE、反序列化、竞争条件、认证绕过和多阶段链的快速参考

何时切换

  • 如果目标是原生二进制、自定义VM或固件映像,首先切换到/ctf-reverse
  • 如果HTTP漏洞只给你代码执行,而难点变成内存损坏或seccomp逃逸,切换到/ctf-pwn
  • 如果“Web”挑战实际上涉及JWT数学、自定义MAC或密码学原语,切换到/ctf-crypto
  • 如果Web挑战涉及分析日志、PCAP或从Web服务器恢复工件,切换到/ctf-forensics
  • 如果挑战需要在利用前从公共Web源、DNS记录或社交媒体收集情报,切换到/ctf-osint

第一遍工作流程

  1. 识别真实边界:仅浏览器、仅后端、混合应用或认证流程。
  2. 在模糊测试前,为每个主要功能捕获一个正常请求/响应对。
  3. 从JS包、响应头、路由和替代方法中枚举隐藏功能。
  4. 分类可能的漏洞家族:注入、授权、解析器不匹配、上传、信任代理、状态机或客户端执行。
  5. 首先构建最小的证明:泄露、绕过或原语。将完整的利用链留到后面。

快速启动命令

# 侦察
curl -sI https://target.com
ffuf -u https://target.com/FUZZ -w wordlist.txt
curl -s https://target.com/robots.txt

# SQLi快速测试
sqlmap -u "https://target.com/page?id=1" --batch --dbs

# JWT解码(不验证)
echo '<token>' | cut -d. -f2 | base64 -d 2>/dev/null | jq .

# Cookie解码(Flask)
flask-unsign --decode --cookie '<cookie>'
flask-unsign --unsign --cookie '<cookie>' --wordlist rockyou.txt

# SSTI探测
curl "https://target.com/page?name={{7*7}}"
curl "https://target.com/page?name={{config}}"

# 请求检查
curl -v -X POST https://target.com/api -H "Content-Type: application/json" -d '{}'

首先要回答的问题

  • flag可能在浏览器、API响应、本地文件、数据库行还是内部服务中?
  • 应用程序是否信任模板、重定向、文件路径、头、序列化对象或后台作业中的用户控制数据?
  • 是否有多个解析器相互矛盾:代理与应用、URL解析器与获取器、清理器与浏览器、序列化器与过滤器?
  • 能否将漏洞转化为更小的原语:读取一个文件、伪造一个令牌、调用一个内部端点、触发一次机器人访问?

高价值侦察检查

  • 在猜测API表面之前,先阅读HTML、内联脚本和打包的JS。
  • 比较UI提交的内容和后端接受的内容;可选的JSON字段通常解锁隐藏路径。
  • 尽早检查明显的元数据和辅助路径:/robots.txt/sitemap.xml/.well-known//admin/debug/.git//.env
  • 在有趣的路由上尝试替代动词和内容类型:GETPOSTPUTPATCHTRACE、JSON、表单、multipart、XML。
  • 将文件上传、PDF/导出、webhook、OAuth回调和管理员机器人功能视为可能的利用倍增器。

快速模式映射

常见链形状

  • 侦察 -> 隐藏路由 -> 认证绕过 -> 内部文件读取 -> 令牌或flag
  • XSS或HTML注入 -> 管理员机器人 -> 特权操作 -> 秘密泄露
  • 遍历或上传 -> 配置/源码泄露 -> 秘密恢复 -> 会话伪造
  • SSRF -> 元数据或内部API -> 凭据泄露 -> 代码执行
  • SQLi或NoSQL注入 -> 凭据绕过 -> 第二阶段模板或上传滥用

深入笔记

一旦确认挑战确实是Web密集型并且需要长篇利用目录,使用field-notes.md

  • 侦察、SQLi、XSS、遍历、JWT、SSTI、SSRF、XXE和命令注入快速笔记
  • 反序列化、竞争条件、文件上传到RCE和多阶段链示例
  • Node、OAuth/SAML、CI/CD、Web3、机器人滥用、CSP绕过和现代浏览器技巧
  • CVE形状的手册和仍然出现在现代CTF中的旧挑战模式

常见flag位置

  • 文件:/flag.txt/flag/app/flag.txt/home/*/flag*
  • 环境:/proc/self/environ、进程命令行、调试配置转储
  • 数据库:名为flagflagssecret的表或种子挑战内容
  • HTTP:自定义头、存档响应、隐藏路由、管理员导出
  • 浏览器:隐藏DOM节点、data-*属性、内联状态对象、源码映射