最全的PHP反序列化漏洞的理解和应用

治疗湿疹北京医院 http://m.39.net/pf/a_8890894.html

php反序列化漏洞,又叫php对象注入漏洞,是一种常见的漏洞,在我们进行代码审计以及CTF中经常能够遇到。

01学习前最好提前掌握的知识

PHP类与对象PHP魔术方法serialize()与unserialize()02序列化与反序列化

PHP(从PHP3.05开始)为保存对象提供了一组序列化和反序列化的函数:serialize、unserialize。

serialize()

当我们在php中创建了一个对象后,可以通过serialize()把这个对象转变成一个字符串,用于保存对象的值方便之后的传递与使用。测试代码如下:

测试结果:

unserialize()

与serialize()对应的,unserialize()可以从序列化后的结果中恢复对象(object),我们翻阅PHP手册发现官方给出的是:unserialize—从已存储的表示中创建PHP的值。我们可以直接把之前序列化的对象反序列化回来来测试函数,如下:

03反序列化漏洞

由前面可以看出,当传给unserialize()的参数可控时,我们可以通过传入一个精心”构造的序列化字符串,从而控制对象内部的变量甚至是函数。

利用构造函数等

Magicfunction

php中有一类特殊的方法叫“Magicfunction”,就是我们常说的魔术方法这里我们着重


转载请注明:http://www.aierlanlan.com/tzrz/4533.html