unserialize3 反序列化

参考blog
攻防世界 web进阶 unserialize3 题目
unserialize3 反序列化_第1张图片

unserialize3 反序列化_第2张图片
运行得到
在这里插入图片描述
unserialize3 反序列化_第3张图片
重点关注被序列化的对象属性个数

当序列化字符串当中属性个数值大于实际的属性个数时,就会导致反序列化异常,从而跳过__wakeup函数

与序列化和反序列化的魔术方法主要是:

__construct()	//当一个对象创建时被调用
__destruct() 	//对象被销毁时触发
__wakeup() 	//使用unserialize时触发
__sleep() 	//使用serialize时触发
__toString() 	//把类当做字符串时触发
__get() 	//用于从不可访问的属性读取数据
__set() 	//用于将数据写入不可访问的属性

unserialize3 反序列化_第4张图片
可以看出 这是反序列化 即 字符串转换成原来的变量
而序列化 是 变量变成字符串

所以
unserialize3 反序列化_第5张图片
获取xctf类的序列化结果,再测试下是否返回反序列化的结果,然后把属性值改为2即可,通过code传递,最后返回flag。

你可能感兴趣的:(攻防世界)