浅谈php反序列化

新手可以先看这篇了解php反序列化。
PHP的反序列化和POP链利用 - 腾讯云

pop链的构造思路

针对于php魔术方法的触发条件而言,入口点通常会是wakeup,destruct,construct。

至于如何构造完整的pop链,可以从正向和反向两种思路进行处理。

可以看这篇博文感受反向推导的快感。
php反序列化学习 pop链构造 - CSDN

魔术方法的触发要点可以看这篇
PHP反序列化研究 - 知乎

触发某对象中的魔术方法,通常是基于对该对象的操作。

对不同类型的属性赋值

构造pop链中,对非public类型的属性赋值时,可以使用构造函数__construct()进行赋值,并且序列化后存有非public类型的属性是会产生不可见字符的,在PHP 在线工具 | 菜鸟工具能够观察到,可以使用 urlencode() 直接进行编码操作。

找到pop链的终点

终点通常是获取flag或者是执行命令。

当没有发现明显的终点时,要注意构造出命令执行等操作的形式。