PHP代码审计之反序列化漏洞

阅读量    4611 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

什么是反序列化?

序列化就是将对象转化为字节流,便于保存在文件,内存,数据库中;反序列化即将字节流转化为对象。

也就是把数据转化为一种可逆的数据结构,再把这种可逆的数据结构转化回数据,这就是序列化与反序列化。

 

反序列函数:

serialize() //  将一个对象转换成一个字符串

unserialize()  //将字符串还原成一个对象

 

漏洞原理:

PHP将所有以__ (两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以__为前缀。

常见的反序列化漏洞中出现的魔术方法及其触发条件:

__construct()当一个对象创建时被调用

__destruct()当一个对象销毁时被调用

__toString()当一个对象被当作一个字符串时使用

__sleep() 在对象在被序列化之前运行

__wakeup() 如果有,在反序列化之前调用

 

课程推荐:

《PHP代码审计之反序列化漏洞》,通过本课程您将学习到,反序列化漏洞对象注入代码审计、反序列化POP链构造基础审计、反序列化POP链构造之phpggc、session反序列化漏洞审计、MyuCMS源码phar反序列化漏洞审计、Typecho反序列化getshell审计、Yii2反序列化POP链挖掘审计,上述相关工具使用、实战代码分析、漏洞代码分析、漏洞复现、实例审计等内容。

视频地址:https://www.aqniukt.com/my/course/13996

识别二维码直通课程页面

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多