PolarD&N(WEB简单全解)
字数 2189 2025-08-30 06:50:27

CTF Web题目全解与知识点总结

目录

  1. 基础爆破技巧
  2. 命令执行绕过
  3. 文件上传漏洞
  4. SSTI模板注入
  5. PHP反序列化
  6. XSS跨站脚本
  7. 目录扫描与信息收集
  8. 代码审计技巧
  9. JWT攻击
  10. Session文件包含
  11. 其他技巧

基础爆破技巧

验证码爆破

  • 当验证码不可见或提示"验证码不重要"时,可尝试爆破
  • 常见验证码如"0000"、"1234"等简单组合
  • 使用Burp Suite的Intruder模块进行爆破

密码爆破

  • 发现password.txt等敏感文件时,使用字典爆破
  • 注意响应长度异常的条目,可能是正确密码
  • 常用字典:rockyou.txt、常见弱口令字典

路径爆破

  • 使用dirsearch、gobuster等工具扫描目录
  • 常见敏感文件:robots.txt、flag.php、upload.php等
  • 注意状态码200和403的区别

命令执行绕过

常见过滤绕过

  1. 空格绕过

    • ${IFS}
    • %09(tab)
    • <<>
  2. 关键词过滤

    • 斜杠绕过:c\at/bi\n/sh
    • 双写绕过:systsystemem
    • 替代函数:passthru()替代system()
  3. 特殊字符绕过

    • 使用[代替_c[md=ls
    • 使用变量拼接:a=c;b=at; $a$b flag

命令执行函数

  • system():执行系统命令并输出
  • passthru():直接输出命令结果
  • shell_exec():返回命令输出的字符串
  • 反引号:`command` 等同于shell_exec

文件上传漏洞

常见绕过方式

  1. 后缀名绕过

    • 双写:pphphp
    • 大小写:PhP
    • 特殊后缀:.phtml.php5
  2. Content-Type绕过

    • 修改为image/jpeg
  3. 文件头绕过

    • 添加GIF头GIF89a

利用流程

  1. 上传webshell(如<?php @eval($_POST['cmd']);?>
  2. 使用蚁剑/冰蝎连接
  3. 查找flag文件(通常在/var/www//tmp/等目录)

SSTI模板注入

检测方法

  • 输入{{7*7}}看是否返回49
  • 输入{{''.__class__}}测试Python环境

常用Payload

{{''.__class__.__base__.__subclasses__()}}  # 列出所有子类
{{cycler.__init__.__globals__.os.popen('cat /flag').read()}}  # Jinja2执行命令

修复方案

  • 禁用危险过滤器
  • 使用沙盒环境

PHP反序列化

魔术方法

  • __wakeup():反序列化时触发
  • __destruct():对象销毁时触发
  • __toString():对象被当作字符串时触发

利用链构造

  1. 寻找危险方法(如eval()system()
  2. 通过魔术方法触发
  3. 示例:
class Evil {
    public $cmd = "system('ls');";
}
$obj = new Evil();
echo serialize($obj);

修复方案

  • 避免反序列化用户输入
  • 使用hash_hmac验证数据完整性

XSS跨站脚本

常见绕过

  1. 标签过滤绕过

    • 双写:<scr<script>ipt>
    • 大小写:<ScRiPt>
  2. 事件处理器

    • ``
  3. 编码绕过

    • HTML实体编码
    • JS Unicode编码

常用Payload

<script>alert(document.cookie)</script>

修复方案

  • 输入过滤与输出编码
  • CSP策略

目录扫描与信息收集

常用工具

  • dirsearch
  • gobuster
  • nmap

常见敏感文件

  • robots.txt
  • .git/
  • phpinfo.php
  • backup.zip

信息收集点

  1. 页面源代码注释
  2. JS文件中的API端点
  3. HTTP头信息
  4. Cookie中的敏感信息

代码审计技巧

关键函数

  • eval():直接执行PHP代码
  • assert():断言函数可执行代码
  • preg_replace()/e修饰符可执行代码
  • unserialize():反序列化漏洞

危险配置

  • allow_url_include=On
  • display_errors=On

审计流程

  1. 寻找用户输入点
  2. 跟踪输入流向
  3. 检查过滤是否充分
  4. 尝试绕过过滤

JWT攻击

攻击方式

  1. 修改算法:改为none算法
  2. 密钥爆破:使用弱密钥
  3. 修改claims:如将user:guest改为user:admin

工具

  • jwt.io:在线解码
  • jwt_tool:本地破解工具

修复方案

  • 使用强密钥
  • 验证算法
  • 设置合理过期时间

Session文件包含

利用条件

  1. 知道session存储路径
  2. 能控制session内容
  3. 有文件包含漏洞

常见路径

  • /var/lib/php/sess_PHPSESSID
  • /tmp/sess_PHPSESSID

利用步骤

  1. 获取PHPSESSID
  2. 向session写入PHP代码
  3. 包含session文件执行代码

其他技巧

MD5 0e绕过

  • 已知0e开头的MD5:
    • 240610708 → 0e462097431906509019562988736854
    • QNKCDZO → 0e830400451993494058024219903391

特殊绕过

  1. 数组绕过

    • param[]=xxx可能绕过某些检查
  2. 正则回溯绕过

    • 超长字符串导致正则引擎崩溃

UA伪造

  • 修改User-Agent绕过设备检测
  • 示例iPhone UA:
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1

XFF头伪造

  • 添加X-Forwarded-For: 127.0.0.1绕过IP限制

以上总结了CTF Web题目中的常见漏洞类型和解题技巧,涵盖了从基础到进阶的各种知识点。在实际应用中,需要根据题目环境灵活组合这些技术,并注意最新的绕过方法和防御措施。

CTF Web题目全解与知识点总结 目录 基础爆破技巧 命令执行绕过 文件上传漏洞 SSTI模板注入 PHP反序列化 XSS跨站脚本 目录扫描与信息收集 代码审计技巧 JWT攻击 Session文件包含 其他技巧 基础爆破技巧 验证码爆破 当验证码不可见或提示"验证码不重要"时,可尝试爆破 常见验证码如"0000"、"1234"等简单组合 使用Burp Suite的Intruder模块进行爆破 密码爆破 发现password.txt等敏感文件时,使用字典爆破 注意响应长度异常的条目,可能是正确密码 常用字典:rockyou.txt、常见弱口令字典 路径爆破 使用dirsearch、gobuster等工具扫描目录 常见敏感文件:robots.txt、flag.php、upload.php等 注意状态码200和403的区别 命令执行绕过 常见过滤绕过 空格绕过 : ${IFS} %09 (tab) < 、 <> 关键词过滤 : 斜杠绕过: c\at 、 /bi\n/sh 双写绕过: systsystemem 替代函数: passthru() 替代 system() 特殊字符绕过 : 使用 [ 代替 _ : c[md=ls 使用变量拼接: a=c;b=at; $a$b flag 命令执行函数 system() :执行系统命令并输出 passthru() :直接输出命令结果 shell_exec() :返回命令输出的字符串 反引号: `command` 等同于shell_ exec 文件上传漏洞 常见绕过方式 后缀名绕过 : 双写: pphphp 大小写: PhP 特殊后缀: .phtml 、 .php5 Content-Type绕过 : 修改为 image/jpeg 文件头绕过 : 添加GIF头 GIF89a 利用流程 上传webshell(如 <?php @eval($_POST['cmd']);?> ) 使用蚁剑/冰蝎连接 查找flag文件(通常在 /var/www/ 、 /tmp/ 等目录) SSTI模板注入 检测方法 输入 {{7*7}} 看是否返回49 输入 {{''.__class__}} 测试Python环境 常用Payload 修复方案 禁用危险过滤器 使用沙盒环境 PHP反序列化 魔术方法 __wakeup() :反序列化时触发 __destruct() :对象销毁时触发 __toString() :对象被当作字符串时触发 利用链构造 寻找危险方法(如 eval() 、 system() ) 通过魔术方法触发 示例: 修复方案 避免反序列化用户输入 使用 hash_hmac 验证数据完整性 XSS跨站脚本 常见绕过 标签过滤绕过 : 双写: <scr<script>ipt> 大小写: <ScRiPt> 事件处理器 : `` 编码绕过 : HTML实体编码 JS Unicode编码 常用Payload 修复方案 输入过滤与输出编码 CSP策略 目录扫描与信息收集 常用工具 dirsearch gobuster nmap 常见敏感文件 robots.txt .git/ phpinfo.php backup.zip 信息收集点 页面源代码注释 JS文件中的API端点 HTTP头信息 Cookie中的敏感信息 代码审计技巧 关键函数 eval() :直接执行PHP代码 assert() :断言函数可执行代码 preg_replace() : /e 修饰符可执行代码 unserialize() :反序列化漏洞 危险配置 allow_url_include=On display_errors=On 审计流程 寻找用户输入点 跟踪输入流向 检查过滤是否充分 尝试绕过过滤 JWT攻击 攻击方式 修改算法 :改为 none 算法 密钥爆破 :使用弱密钥 修改claims :如将 user:guest 改为 user:admin 工具 jwt.io:在线解码 jwt_ tool:本地破解工具 修复方案 使用强密钥 验证算法 设置合理过期时间 Session文件包含 利用条件 知道session存储路径 能控制session内容 有文件包含漏洞 常见路径 /var/lib/php/sess_PHPSESSID /tmp/sess_PHPSESSID 利用步骤 获取PHPSESSID 向session写入PHP代码 包含session文件执行代码 其他技巧 MD5 0e绕过 已知0e开头的MD5: 240610708 → 0e462097431906509019562988736854 QNKCDZO → 0e830400451993494058024219903391 特殊绕过 数组绕过 : param[]=xxx 可能绕过某些检查 正则回溯绕过 : 超长字符串导致正则引擎崩溃 UA伪造 修改User-Agent绕过设备检测 示例iPhone UA: XFF头伪造 添加 X-Forwarded-For: 127.0.0.1 绕过IP限制 以上总结了CTF Web题目中的常见漏洞类型和解题技巧,涵盖了从基础到进阶的各种知识点。在实际应用中,需要根据题目环境灵活组合这些技术,并注意最新的绕过方法和防御措施。