web-反序列

题目:

wakeup()函数用法
wakeup()是用在反序列化操作中。unserialize()会检查存在一个wakeup()方法。如果存在,则先会调用__wakeup()方法。

测试结果:

序列化后为O:4:”xctf”:1:{s:4:”flag”;s:3:”111”;}

O代表结构类型为:类:4表示类名长度:接着是类名:属性(成员)个数
大括号内分别是:属性名类型;长度:名称:值类型:长度:值

wakeup()漏洞
__wakeup()漏洞就是与整个属性个数值有关。当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过
wakeup的执行。
如,我们提交O:4:”xctf”:2:{s:4:”flag”;s:3:”111”;},将其改为2,得到flag。

了解序列化和serialize与unserialize函数的应用

* 序列化数据,返回一个可存储的字符串,该函数有利于存储或传递PHP的值,同时不丢失其类型和结构
* serialize() 就是序列化一个数组或者对象什么的 吧他变成字符串的形式
* unserialize()就是把数据恢复

小结:
1、了解序列化和反序列化
2、了解php反序列化和__wakeup漏洞的利用