反序列化漏洞的利用方式(上)
发布时间:2022-03-31 19:52:15 455
相关标签: # php# 漏洞# 脚本# 技术# 安全漏洞
一、今天的代码审计题目是反序列化漏洞,那我们先说说序列化serialize, 序列化是将变量或对象转换成字符串的过程
###### __construct,当生成一个类的时候会自动调用这个函数
二、代码16行用new test()生成一个类的对象$man,然后执行serialize这个$man对象,那我们这个生成序列化后必定会生成一串字符串以方便传输和保存如上图例,我们的test类成员有name,age,height 。还有一个构造函数__construct,当生成一个类的时候会自动调用这个函数
2代码16行用new test()生成一个类的对象$man,然后执行serialize这个$man对象,那我们这个生成序列化后必定会生成一串字符串以方便传输和保存
3.执行这个程序后输出反序列化后的字符串,O表示对象,4表示有4个字符,3表示这个类有三个参数
第一个参数s:字符串,4:4个字符,name:变量名 值:s:字符串,3:3个字符,BOb:变量值
后面的变量也是按照这个方式解析变量和值
三、我们知道了序列化的字符串还得了解下序列化调用的魔术方法
魔术方法是以__双下划线开头的函数,例如:
__construct 生成一个类对象时自动调用
__sleep 序列化时自动调用
__wakeup 反序列化时自动调用
__string 输出字符串时自动调用
__desctruct 调用的类执行结束后自动调用
反序列化是将字符串转换成变量或对象的过程
如上图是把已经序列化的函数字符串变成反序列化,然后我们把它输出来
反序列化漏洞
sleep,那么反序列化会调用一个那么我们现在进入反序列化漏洞的讲解,序列一个类会调用一个魔术函数sleep,那么反序列化会调用一个 __wakeup函数
如果该类接收用户提交的参数,例如危险的代码phpinfo()等,那么即可成功执行我们的代码,自动调用__wakeup魔术函数,如图下
我们的代码已经成功被执行
这个小例子主要帮助想了解反序列化漏洞的初学者,更高级的利用技巧稍后发布
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报