看题目名字可以知道,这一题考的是反序列化漏洞,那么要做这一题之前,需要补充一点知识
1、序列化函数:serialize(),简单理解就是把类实例化的代码转换成字符串,可以在url上赋值,会先调用 __sleep()魔术方法
2、反序列化函数:unserialize(),很明显,就是把字符串还原,会先调用__wakeup()魔术方法
3、反序列化漏洞,这个要先理解序列化后的字符串:
o:4:“xctf”:1:{s:4:“flag”;s:3:“111”;}
符串各部分简单释义:
O代表结构类型为“类”,4表示类名长度,接着是类名,属性(成员)个数
大括号内分别是:属性名类型,长度,名称,值类型,长度,值
反序列化漏洞的利用方式就是把属性个数改成多于原本的个数,这里就可以写成o:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}
好了,补充了这些知识之后
那么看一下题目:
题目只有一个类,那么我直接实例化他,然后序列化输出就可以了,代码如下:
class x