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

