攻防世界unserialize3题解

这篇博客深入探讨了PHP的序列化和反序列化概念,强调它们在数据传输和持久化存储中的作用。文章通过unserialize3这道题为例,解释了如何利用__wakeup()魔法函数进行反序列化漏洞利用,并指出当对象属性个数变化时,反序列化可能失败并使__wakeup()失效的关键点。
摘要由CSDN通过智能技术生成

unserialize3

看题目就知道这是一道反序列化问题,之前也遇到过,也深入理解过,但时间隔了这么久,难免会有些忘记,通过这道题来再次深入序列化与反序列化的问题。

0x00:那么到底什么是序列化,反序列化呢?

先来讲一点为什么要用序列化呢?他到底好在哪里呢?php序列化是为了什么呢?

当然有一点都知道就是为了传输数据更加方便(这种压缩格式化储存当然在数据传输方面更加简单方便),我们把一个实例化的对象长久地存储在了计算机的磁盘上,无论什么时候调用都能恢复原来的样子,这其实是为了解决 PHP 对象传递的一个问题,因为 PHP 文件在执行结束以后就会将对象销毁,那么如果下次有一个页面恰好要用到刚刚销毁的对象就会束手无策,总不能你永远不让它销毁,等着你吧,于是人们就想出了一种能长久保存对象的方法,这就是 PHP 的序列化,那当我们下次要用的时候只要反序列化一下就 ok 啦,是不是很方便?

 

序列化通俗来讲就是将对象转化为可以传输的字符串;

反序列化就是把那串可以传输的字符串再变回对象。

这里举几个简单的例子就能懂了:

序列化将对象转化为可传输的字符串:

<
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leng_tian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值