什么是反序列化?
序列化就是将对象转化为字节流,便于保存在文件,内存,数据库中;反序列化即将字节流转化为对象。
也就是把数据转化为一种可逆的数据结构,再把这种可逆的数据结构转化回数据,这就是序列化与反序列化。
反序列函数:
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
识别二维码直通课程页面
发表评论
您还未登录,请先登录。
登录