渗透测试之PHP反序列化
- 1. PHP反序列化
-
- 1.1 什么是反序列化操作? - 类型转换
- 1.2 常见PHP魔术方法?- 对象逻辑(见图)
-
- 1.2.1 construct和destruct
- 1.2.2 construct和sleep
- 1.2.2 construct和wakeup
- 1.2.2 INVOKE
- 1.2.2 toString
- 1.2.2 CALL
- 1.2.2 get()
- 1.2.2 set()
- 1.2.2 isset()
- 1.2.2 unset()
- 1.3 为什么会出现安全漏洞?
- 1.4 反序列化漏洞如何利用?- POP链构造
- 1.5 CTFSHOW-训练链构造
-
- 1.5.1 254-对象引用执行逻辑
- 1.5.2 255-反序列化变量修改1
- 1.5.3 256-反序列化参数修改2
- 1.5.4 257-反序列化参数修改&对象调用逻辑
- 1.5.5 258-反序列化参数修改&对象调用逻辑&正则
- 1.5 PHP-属性类型-共有&私有&保护
-
- 1.5.1 对象变量属性:
- 1.5.2 序列化数据显示
- 1.6 PHP-绕过漏洞-CVE&字符串逃逸
-
- 1.6.1 CVE-2016-7124(__wakeup绕过)
- 1.6.2 字符串逃逸
- 1.7 PHP-原生类Tips-获取&利用&配合
-
- 1.7.1 生成原生类
- 1.7.2 本地Demo-xss
- 1.7.3 CTFSHOW-259
- 1.8 反序列化链项目-PHPGGC&NotSoSecure
-
- 1.8.1 NotSoSecure
- 1.8.2 PHPGGC
- 1.9 反序列化框架利用-ThinkPHP&Yii&Laravel
-
- 1.9.1 [安洵杯 2019]iamthinking Thinkphp V6.0.X 反序列化
- 1.9.2 CTFSHOW 反序列化 267 Yii2反序列化
- 1.9.3 CTFSHOW -反序列化 -271 -Laravel反序列化
- 1.10 Thinkphp 反序列化链分析
1. PHP反序列化
1.1 什么是反序列化操作? - 类型转换
- PHP & JavaEE & Python(见图)
序列化:对象转换为数组或字符串等格式
反序列化:将数组或字符串等格式转换成对象
serialize() //将对象转换成一个字符串
unserialize() //将字符串还原成一个对象