eeeeeeeeeeezunserialize

题目描述

image-20211002114245428

相关知识点

魔术函数

1.constuct()构造函数

通常实例化完一个对象之后,都要对该对象的属性进行初始化!在实例化一个对象的时候,PHP系统会自动的调用一个名字叫作construct()的方法,我们把这个方法叫作“构造方法”!

其中,构造方法可以没有参数!

2.destruct()析构方法

与构造方法是一对,构造方法是在一个对象“出生”的时候由系统自动调用的,而析构方法是在一个对象“消失”的时候由系统自动调用的!

析构方法的名字叫destruct();注意里面不能有任何的参数!

3.clone()克隆

触发时机:是在克隆一个对象的时候,对新对象进行初始化的工作

4.autoload()自动加载类

当调用不存在的类的时候自动调用!

5.tostring()

当将对象当成字符串使用的时候自动调用

6.invoke()

当将对象当成函数使用的时候自动调用

7,set()

当对无法访问的属性赋值时自动调用(比如:类外调用私有属性)

8.get()

当对获取无法访问的属性值的时候自动调用

9.unset()

当销毁无法访问的属性的时候自动调用

10.isset()

当判断无法访问的属性是否存在的时候自动调用

11.call()

当调用无法访问的普通方法时自动触发

12.callststic()

当无法通过静态方法访问时自动触发

13.__sleep()

执行serialize()时,先会调用这个函数

14.__wakeup()

执行unserialize()时,先会调用这个函数

POP链

在二进制利用时,ROP 链构造中是寻找当前系统环境中或者内存环境里已经存在的、具有固定地址且带有返回操作的指令集,而 POP 链的构造则是寻找程序当前环境中已经定义了或者能够动态加载的对象中的属性(函数方法),将一些可能的调用组合在一起形成一个完整的、具有目的性的操作。二进制中通常是由于内存溢出控制了指令执行流程,而反序列化过程就是控制代码执行流程的方法之一,当然进行反序列化的数据能够被用户输入所控制。