返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP反序列化漏洞基础概要
  • 130
分享到

PHP反序列化漏洞基础概要

php开发语言安全 2023-09-06 13:09:22 130人浏览 泡泡鱼
摘要

目录 什么是反序列化漏洞? 序列化 serialize 反序列化 unserialize 常见魔法函数 反序列化漏洞防御 什么是反序列化漏洞? 反序列化又叫对象注入,漏洞产生是程序在处理对象、魔术函数以及序列化问

目录

什么是反序列化漏洞?

序列化 serialize

反序列化 unserialize

常见魔法函数

反序列化漏洞防御


什么是反序列化漏洞?

反序列化又叫对象注入,漏洞产生是程序在处理对象、魔术函数以及序列化问题时所导致的 。当传给unserialize()的参数可控时,可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。


序列化 serialize

对象的状态信息转换为可以存储或传输的形式的过程

序列化期间,对象将当前的状态写入到临时或持久型的存储区,将状态信息保存为字符串。

序列化只序列化对象,不序列化方法

class S{        public $test="pikachu";    }    $s=new S(); //创建一个对象    serialize($s); //把这个对象进行序列化    序列化后得到的结果是这个样子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}        O:代表object        1:代表对象名字长度为一个字符        S:对象的名称        1:代表对象里面有一个变量        s:数据类型        4:变量名称的长度        test:变量名称        s:数据类型        7:变量值的长度        pikachu:变量值

反序列化 unserialize

将序列化后的字符串还原成对象

反序列化的数据本质上来说时没有危害的,用户可控数据进行反序列化是存在危害的,反序列化的危害关键在于可控不可控

$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");    echo $u->test; //得到的结果为pikachu

常见魔法函数

        __construct()当一个对象创建时被调用        __destruct()当一个对象销毁时被调用        __toString()当一个对象被当作一个字符串使用        __sleep() 在对象在被序列化之前运行        __wakeup将在序列化之后立即被调用如何绕过 __wakeup()当 序列化的字符串中的 属性值 个数 大于 属性个数 就会导致反序列化异常,从而绕过 __wakeup()

反序列化漏洞防御

不要把用户的输入或者是用户可控的参数直接放进反序列化的操作中去

来源地址:https://blog.csdn.net/weixin_56470035/article/details/129718553

--结束END--

本文标题: PHP反序列化漏洞基础概要

本文链接: https://lsjlt.com/news/397087.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作