关联:PHP安全总览反序列化基础

绕过 O: 过滤

有些题目会过滤序列化字符串里的 O:,阻止直接反序列化对象。这个笔记记录几种常见绕法,建议和 反序列化基础绕过wakeup 一起看。

1. O:+6

部分 PHP 版本或场景中,对对象长度标记的解析可以接受带 + 的形式,例如把 O:6:"Class" 改成 O:+6:"Class",从而绕过简单字符串匹配。

2. 放入数组

如果过滤只针对字符串开头或固定位置,可以把对象放进数组中,让序列化结果从 a: 开头。

serialize(array($a));

3. C 开头绕过

可以参考 绕过wakeup 里提到的 C 开头序列化格式绕过。核心是让过滤规则只盯 O: 时,改用其他可触发对象逻辑的序列化形式。

注意

  • 这类绕过强依赖 PHP 版本和目标类是否支持对应序列化格式。
  • 不要只记 payload,要在题目里确认过滤发生在反序列化前还是存储前。