标签:ali des 自动 wak 字符 否则 技术 img 根据
1.先了解一下什么是序列化和反序列化
当在php中创建了一个对象后,可以通过 serialize() 函数把这个对象转变成一个字符串,保存对象的值方便之后的传递与使用。
与 serialize() 相反的就是反序列化函数 unserialize() ,它可以将一个字符串转变为相对应的php对象。
在序列化过程中会用到的函数:
从序列化到反序列化这几个函数的执行过程是:
先调用__construct()->__sleep->__wakeup()->__toString ()->__destruct()
2.实验步骤:
打开后通过代码发现是创建一个类
public属性序列化后格式为:数据类型:属性名长度:"属性名";数据类型:属性值长度:"属性值"
我们试着将其序列化:得到 O:4:"xctf":1:{s:4:"flag";s:3:"111";}
wakeup()漏洞就是与整个属性个数值有关。
当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过wakeup的执行。
我们要反序列化xctf类的同时还要绕过wakeup方法的执行否则 将会输出bad requests
我们构造 O:4:"xctf":2:{s:4:"flag";s:3:"111";}
拿到flag。
标签:ali des 自动 wak 字符 否则 技术 img 根据
原文地址:https://www.cnblogs.com/darklee/p/12625292.html