运送违规物资:php反序列化

admin 2025年4月9日23:58:43评论6 views字数 1353阅读4分30秒阅读模式

 【当然实际上,现在更加常见的是java的序列化漏洞,包括各种模板的漏洞居多】

序列化与反序列化的作用

  • 序列化
    :将一个对象的状态转换为可以存储或传输的字符串形式。
  • 反序列化
    :将序列化后的字符串还原为原始对象。
也就是打包物资 和 拆解物资的过程。
serialize() 序列化(输出是序列化的内容)unserualize() 反序列化(括号中是序列化的内容)
下面是一段简单的php序列化,反序列化代码:
class User {    public $name;    public $age;    public function __construct($name$age) {        $this->name = $name;        $this->age = $age;    }}$user = new User("Alice"25);$serialized = serialize($user); // 序列化对象echo $serialized// 输出类似 O:4:"User":2:{s:4:"name";s:5:"Alice";s:3:"age";i:25;}$unserialized = unserialize($serialized); // 反序列化var_dump($unserialized); // 还原为 User 对象
当攻击者能够控制传递给 unserialize() 的数据时,他们可以通过构造恶意的序列化字符串来触发代码执行、文件操作或其他危险行为。这种攻击通常依赖于 PHP 的魔术方法(Magic Methods)
下面是一些魔术方法:
__construct  对象创建时调用 【序列化创建时候不会调用】__destruct   对象销毁时调用__toString   对象被当作字符时调用__call       调用不存在的方法的时候调用_inwoke      对象当作函数的时候调用__wakeup     反序列化时自动调用,里面一般是防火墙如果要突破__wakeup,把参数的数量+1(使反序列化异常)
在某些情况下,如果开发者在使用 unserialize() 时没有严格验证输入数据,则可能导致安全漏洞,称为 反序列化漏洞
本质:强行不让程序执行正常的业务逻辑,进入其他的类,进一步执行其他类里面的带有安全隐患的函数;或者填入违规的参数执行危险命令eval system
private 序列化之后:      %00类名%00属性名称protected 序列化之后:  %00*%00属性名称{s:4:"name";s:6:"xiaoli";s:3:"sex";s:6:"female";s:3:"age";i:17;}不进行private protected 的结果:O:6:"people":3:{s:4:"name";s:8:"xiaoming";s:3:"age";i:10;s:3:"job";s:7:"student";}进行private protected 的结果:O:6:"people":3:{s:4:"name";s:8:"xiaoming";s:6:"*age";i:10;s:11:"peoplejob";s:7:"student";}

原文始发于微信公众号(week网安热爱者):运送违规物资:php反序列化

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月9日23:58:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   运送违规物资:php反序列化https://cn-sec.com/archives/3932465.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息