PHP内核层如何处理反序列化漏洞的解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4426个文字,预计阅读时间需要18分钟。
前言:在学习PHP的过程中,我发现有些PHP特性理解起来有些困难,比如PHP中的魔术引号、MD5漏洞、反序列化绕过、__wakeup等方法。我不想拘泥于表面现象,而是想探究PHP内核到底是如何实现的。
以下是对上述内容的简化
在学习PHP时,我发现一些特性如魔术引号、MD5漏洞等不易理解。我不满足于表面,更想了解PHP内核的实现原理。
前言
在学习PHP的过程中发现有些PHP特性的东西不好理解,如PHP中的00截断,MD5缺陷,反序列化绕过__wakeup等等。本人不想拘泥于表面现象的理解,想探究PHP内核到底是怎样做到的。
下面是将用CTF中常用的一个反序列化漏洞CVE-2016-7124(绕过魔法函数__wakeup)为例,将此次调试PHP内核的过程分享出来。包括从内核源码调试环境的搭建,序列化与反序列化内核源码分析到最后的漏洞分析整个部分。(推荐:PHP教程)
一、一个例子引发的思考
我们可以首先看本人写的小例子。
根据上图我们先介绍下PHP中的魔法函数:
我们先看下官方文档对几个常用魔法函数的介绍:
这里稍作总结,当一个类被初始化为实例时会调用__construct,当被销毁时会调用__destruct。
本文共计4426个文字,预计阅读时间需要18分钟。
前言:在学习PHP的过程中,我发现有些PHP特性理解起来有些困难,比如PHP中的魔术引号、MD5漏洞、反序列化绕过、__wakeup等方法。我不想拘泥于表面现象,而是想探究PHP内核到底是如何实现的。
以下是对上述内容的简化
在学习PHP时,我发现一些特性如魔术引号、MD5漏洞等不易理解。我不满足于表面,更想了解PHP内核的实现原理。
前言
在学习PHP的过程中发现有些PHP特性的东西不好理解,如PHP中的00截断,MD5缺陷,反序列化绕过__wakeup等等。本人不想拘泥于表面现象的理解,想探究PHP内核到底是怎样做到的。
下面是将用CTF中常用的一个反序列化漏洞CVE-2016-7124(绕过魔法函数__wakeup)为例,将此次调试PHP内核的过程分享出来。包括从内核源码调试环境的搭建,序列化与反序列化内核源码分析到最后的漏洞分析整个部分。(推荐:PHP教程)
一、一个例子引发的思考
我们可以首先看本人写的小例子。
根据上图我们先介绍下PHP中的魔法函数:
我们先看下官方文档对几个常用魔法函数的介绍:
这里稍作总结,当一个类被初始化为实例时会调用__construct,当被销毁时会调用__destruct。

