小迪web自用笔记61
S9代表的是类型,反序列化结构。
wekup()反序列化漏洞。
要理解这个执行顺序和 __wakeup 的赋值逻辑,需结合PHP反序列化的生命周期分析:
1. PHP反序列化的方法执行顺序
当对一个对象进行**反序列化( unserialize )**时,PHP会按照以下顺序触发魔术方法:
- 第一步:调用 __wakeup() → 这是PHP的机制,用于在对象反序列化后做初始化、重置等操作。
- 后续才会触发其他逻辑(如对象的属性访问、 __destruct() 等)。
2. 为什么 username 会被 __wakeup 赋值?
在你提供的代码中, __wakeup() 方法里明确写了 $this->username = 'guest'; 。
当这个类的对象被反序列化时,PHP会自动调用 __wakeup() 方法,因此 username 会被赋值为 'guest' ——这是PHP反序列化机制对 __wakeup 的强制触发逻辑。
简单总结:PHP反序列化时会优先执行 __wakeup 方法,所以这个赋值是因为 __wakeup 在反序列化流程中被自动调用了。
是的,在PHP中,当对一个对象进行反序列化( unserialize )操作时,会自动调用该对象类中的 __wakeup() 方法——这是PHP反序列化机制的固有逻辑,用于在对象反序列化后执行初始化、状态重置等操作。
各种各样的绕过。
把反序列化中的admin过滤成黑客。
这一道题目怪的很,同时验证你的用户名与ViP,但是你一旦输入admin的你就把admin变成黑客。