[持续更新] CTF-Web Guide

看到Lunatic大佬的

大受震撼。大丈夫当如是也!这种长篇的持续更新文章似乎可以更全面的记录遇到题目时要有的思路,或查找一些偏门的考点。仆诚以著此篇,希望我能写出一个好的Guide…

前言 (Preface)

  • 前言:本篇旨在提供全面的ctfweb题目分析讲解和思路的提供,无论是新手学习和老手速查都十分适合0v0

第一章:工欲善其事 (The Toolkit)

这部分介绍基础环境,同时强调工具的重要性。

基础知识储备

这部分是地基,不需要写太深,但要列出“必知必会”。

  1. 协议与架构
    • HTTP/HTTPS 协议:请求头(Headers)、响应码(Status Codes)、常用方法(GET/POST/PUT/HEAD/OPTIONS)。
    • Web 架构:前端(HTML/JS/CSS)与后端(PHP/Java/Python/Go)的交互流程,MVC 模式,API 接口(RESTful/GraphQL)。

Web工具

  1. 常用工具
    • 抓包与测试Burp Suite(核心、抓包/重放/爆破)、Yakit(中文版bp)
    • 信息收集Dirsearch(目录扫描)、Nmap(端口扫描)
    • 浏览器插件HackBar(快速发包)、Wappalyzer(指纹识别)
    • Linux环境VMware/WSL2 Kali(用来执行shell/linux工具)
    • 远程控制Antsword(连接木马),冰蝎,哥斯拉
    • IDEPhpStorm(做php反序列化),IDEA(做java)
    • 自动注入SQLmap(sql注入点自动查找),fenjing(焚靖|自动构建SSTIpayload,绕过waf一把梭)
    • AI助手:帮你想思路,构建payload和脚本

第二章:信息收集 (Information Gathering)

Web 题的第一步永远是把题目“看光”。

敏感文件泄露

  • robots.txtsitemap.xml

1. 管理类文件

1.1 robots.txt
  • 作用:搜索引擎爬虫协议文件,告诉爬虫哪些路径不应抓取。

  • 渗透思路:黑名单信息含涉密路径、后门、管理后台、备份等,非常容易疏忽泄露。

  • 例子

    Disallow: /admin
    Disallow: /hidden/flag.txt
    
1.2 sitemap.xml
  • 作用:网站内容地图,列出所有可爬网址。
  • 渗透思路:直接暴露未公开子目录,配合robots.txt查询价值极高。
1.3 .env
  • 作用:各类Web框架常用环境变量文件。
  • 渗透:很多JWT密钥、数据库连接信息、邮箱API等一览无遗,PHP、Laravel、Node.js尤其常见。

2. 源码和仓库泄露

2.1 .git/
  • 作用:Git版本库目录。
  • 渗透:若未做严格防护可直接遍历和还原完整源码。使用 GitHack.pygithound等工具,一键还原全部源码+敏感信息。
2.2 .svn/、.hg/
  • 作用:分别对应Subversion、Mercurial代码管理目录。
  • 渗透:同理可还原源代码及全部提交历史。
2.3 .DS_Store
  • 作用:Mac下目录索引文件。
  • 渗透:泄露完整目录结构(可见文件名),辅助发现“隐藏文件”“Flag”。
2.4 www.zip、code.tar.gz、source.bak
  • 作用:习惯性手工备份或源码打包,上传或备份遗留。
  • 渗透:敏感备份/打包文件常规文件: www.zipweb.zipbackup.zipsite.bakindex.php.baksrc.rarbak.tar.gz

3. 编辑器临时/自动备份文件

3.1 Vim/Emacs交换备份
  • .swp/.swo
  • 例:index.php.swp
  • 用途与危害:Vim自动生成的内存交换文件。利用strings等命令可恢复大量源码或明文密码。
3.2 Emacs临时文件
  • 例:index.php~, #index.php#
3.3 其它常见临时/备份扩展
  • .bak.old.backup.save.tmp.temp
  • 典型案例index.php.bakconfig.php.old,甚至flag.php.save

4. 常见渗透/CTF技巧总结

  1. 爆破路径字典:用字典工具快速遍历敏感路径 典例:dirsearch, ffuf, gobuster
  2. 尝试访问源码与备份文件:如index.php.bak,几乎等同于源码泄露。
  3. 下载解压源码包或查看仓库提交历史:发现历史密码、后台路径、flag等。
  4. 扫描.git, .svn, .hg:直接还原项目全部文件、操作commit,甚至逆推出未上线flag。
  5. 编辑器遗留文件源码复原:如vim .swp 文件,用strings或专用工具还原内容,常获flag。
  • 源码泄露:www.zip.git.svn.hg.DS_Store
  • 备份文件:index.php.bakvim 交换文件 (.swp)。
  1. 指纹识别
    • 判断操作系统(Linux/Windows)、中间件(Apache/Nginx/IIS/Tomcat)、数据库类型。
    • CMS 识别(WordPress, Discuz, Typecho 等)。
  2. 其他
    • PHPinfo 页面分析(查看 disable_functions、开启的扩展)。
    • 社工与 OSINT(如果有涉及)。

第三章:核心漏洞 - 注入篇 (Injection Attacks)

CTF Web 的半壁江山。

  1. SQL 注入 (SQLi):
    • 基础:Union 注入, Boolean 盲注, Time 盲注。
    • 进阶:报错注入, 堆叠注入 (Stacked Queries)。
    • 技巧:WAF 绕过 (空格变体、编码绕过), NoSQL 注入 (MongoDB)。
  2. 命令执行 (RCE/Command Injection):
    • 常见触发函数 (system, exec, etc.)。
    • 无回显 RCE (DNSLog 外带)。
    • 字符限制绕过 (利用通配符、环境变量拼凑命令)。
  3. 代码执行 (Code Execution):
    • eval(), assert() 的滥用。
  4. 模板注入 (SSTI):
    • Python (Jinja2, Flask), PHP (Smarty), Java (Thymeleaf)。
    • 利用链构造与沙箱逃逸。

第四章:核心漏洞 - 文件操作篇 (File Operations)

  1. 文件包含 (LFI/RFI):
    • PHP 伪协议 (php://filter, php://input, zip://, phar://)。
    • 日志包含 GetShell。
  2. 文件上传 (File Upload):
    • 前端检测绕过。
    • MIME 类型、文件头检测绕过。
    • 黑名单/白名单绕过 (大小写、双后缀、00截断)。
    • 竞争条件 (Race Condition) 上传。
    • 解析漏洞 (Apache/Nginx/IIS 特性)。

第五章:客户端与认证安全 (Client-side & Auth)

  1. XSS (跨站脚本攻击):
    • 反射型、存储型、DOM 型。
    • CSP (内容安全策略) 绕过技巧。
    • XSS Bot 题目解法 (Admin 访问恶意链接)。
  2. CSRF & SSRF:
    • SSRF (服务端请求伪造):攻击内网、Redis 未授权访问、Gopher 协议利用。
  3. 认证与逻辑漏洞:
    • 弱口令与爆破。
    • JWT (Json Web Token) 攻击 (空加密算法、密钥爆破、修改头部)。
    • IDOR (越权访问)。
    • 密码找回逻辑漏洞。

第六章:语言特性与反序列化 (Language Specifics)

针对不同后端语言的特性(Trick),是 CTF Web 的精髓。

  1. PHP 奇技淫巧:

    • 弱类型比较 (== vs ===, MD5 碰撞)。
    • 变量覆盖 (extract, parse_str)。
    • PHP 反序列化:魔术方法 (__construct, __wakeup, __destruct), POP 链构造, Phar 反序列化。
    • 原生类利用 (SoapClient, SplFileObject)。
  2. Python Web :

    • SSTI (模板注入):Jinja2, Tornado, Mako。利用 __class__, __mro__, __subclasses__ 寻找利用链。

    • Pickle 反序列化:手写 opcode,利用 __reduce__

    • PyJail (沙箱逃逸)。

    • 格式化字符串漏洞。

  3. Java 安全:

    • Java 反序列化 (ysoserial 工具, CommonsCollections 利用链, Fastjson, Jackson, Log4j2)
    • 表达式注入:SPEL, OGNL。
    • Spring Boot Actuator配置不当。
    • WebLogic, Shiro, Struts2 历史漏洞复现。
    • 内存马 (Memory Shell) 概念。
  4. Node.js:

    • 原型链污染 (Prototype Pollution)。
    • JS 弱类型与 VM 沙箱逃逸。

第七章:高阶技巧与新趋势 (Advanced & Modern Web)

  1. XML 外部实体注入 (XXE):
    • 读取文件、内网探测。
    • 无回显 XXE (Blind XXE)。
  2. HTTP 协议攻击:
    • HTTP 请求走私 (Request Smuggling)。
    • HTTP 头注入 (CRLF Injection)。
  3. Web Cache:
    • 缓存投毒 (Cache Poisoning)。
  4. Web 密码学
    • Padding Oracle Attack。
    • Hash 长度扩展攻击。
    • 伪随机数预测 (mt_rand)。
  5. 区块链/Web3:
    • 智能合约漏洞 (重入攻击、整数溢出)

第八章:解题战术总结 (Strategy & Mindset)

  1. WAF 绕过通用思路:编码、分块传输、利用解析差异。
  2. 提权与后渗透 (简略):拿到 Shell 后如何找 Flag (/flag, 环境变量, phpinfo(), SUID 提权)。
  3. 如何从 0 到 1 复现题目:利用 Docker 搭建环境的重要性。
  4. 题目怎么入手?(一看源码,二看功能,三抓包,四扫目录)。
  5. 卡住了怎么办?(回顾基础,去翻博客,报错信息,猜出题人意图)。
  6. 如何写好 Writeup?(不仅是答案,更是思路的记录)。

结语 (Conclusion)

  • 推荐的学习平台 (BuuCTF, HackTheBox, PortSwigger,NSSCTF,CTF+)。
  • 鼓励多看 Writeup (WP) 并复盘。