iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >【反序列化漏洞-01】序列化与反序列化概述
  • 725
分享到

【反序列化漏洞-01】序列化与反序列化概述

摘要

为什么要序列化 百度百科上关于序列化的定义是,将对象的状态信息转换为可以存储或传输的形式(字符串)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区(非关系型键值对形式的数据库Redis,与数组类似)。以后,可以通过从存储区中

为什么要序列化

百度百科上关于序列化的定义是,将对象的状态信息转换为可以存储或传输的形式(字符串)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区(非关系型键值对形式的数据库Redis,与数组类似)。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

  1. PHP中,每个类的定义都以关键字class开头,后面不仅跟着类名还跟着一对花括号,里面包含有类的属性与方法的定义

  1. 一个类可以包含有属于自己的属性(常量:值变量的值不会改变、变量)和方法(函数)。

  1. 由于类的实例化对象比较抽象,不方便用于传输和存储。

tips:类为class,对象是object;举例来说就是,动物为一个大类,大类之后再分小一类如猫猫或者狗狗;而具体的某个动物就为一个对象。一个对象就相当于一个变量,对象是一种语言结构。

简单来说,序列化就是把一个对象变成可以传输的字符串(字符串便于传输,只需要把字符串赋给变量即可)。在传递和保存对象时,为保证对象的完整性和可传递性,程序将对象转换为有序字符串,以保存在本地文件中,可以以特定的格式在进程之间跨平台、安全的进行通信。(比如从java平台传递到php平台)反序列化则根据字符串中保存的对象状态及描述信息,通过反序列化重建对象。

序列化的优点

  • 将对象转为字节流存储到硬盘上(实际上是存放在数据库,一般是redis数据库-键值对数据库),当JVM停机的话,字节流还会在硬盘上默默等待,等待下一次JVM的启动,把序列化的对象,通过反序列化为原来的对象。

  • 序列化后的二进制序列能够减少存储空间(永久性保存对象)。

  • 序列化成字符串形式的对象可以进行网络传输。

  • 通过序列化可以在进程间传递对象

实际上用Redis数据库作为缓存,一般用于存储序列化后的字符串,待字符串需要使用时,再反序列化为对象,方便调用。

PHP中的序列化与反序列化

反序列化漏洞并不是PHP特有,也存在于Java、python等语言之中,但其原理基本相通。

PHP反序列化漏洞也叫php对象注入,是一个非常常见的漏洞,这种类型的漏洞虽然有些难以利用,但一旦利用成功就会造成非常危险的后果。

漏洞的形成的根本原因程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果

序列化与反序列化的定义

  • 序列化:程序将对象状态转换为可存储或传输的字节序列的过程(即对象状态转换为可存储或者可传输的过程){序列化是对象转换为字符串的过程}

  • 反序列化:程序把存储或传输的字节序列恢复为对象的过程。{反序列化则是字符串转化为对象的过程}

  • 如果字符串客户端可控,就会造成WEB应用反序列化任意对象,在反序列化的过程中会触发一些可以执行的php代码,例如phpinfo

PHP中的序列化与反序列化,基本都是围绕serialize()unserialize()两个函数展开的。在介绍这两个函数之前,我们可以先看一个简单的例子。

序列化Demo

序列化会将一个抽象的对象转换为字符串。

  1. 我们可以写一个Demo来说明序列化的过程,首先创建一个类,代码内容如下:

  1. 类名是student,该类中有四个变量。接下来,我们可以将这个类实例化,也就是创建一个对象(new),并给对象中变量赋值。代码如下:

name = "wyy";$student1->sex = false;$student1->age = 20;$student1->score = 95;?>
  1. 最后我们使用serialize(),将$student1这个对象序列化成一个字符串。这样的字符串就很容易传输和存储了。如下:

name = "wyy";$student1->sex = false;$student1->age = 20;$student1->score = 95;// 创建对象2$student2 = new student();$student2->name = "xcc";$student2->sex = true;$student2->age = 25;$student2->score = 98;// 输出wyy和xcc的成绩echo $student1->name."'s score = ".$student1->score;// 进行换行echo "
";echo $student2->name."'s score = ".$student2->score;// 用var_dump输出对象echo "
";var_dump($student1);var_dump($student2);// 对对象进行序列化并输出echo "
";echo "序列化后采用echo输出
";echo serialize($student1);?>
  1. 打开浏览器访问该文件,显示如下,可以看到对象被序列化成字符串:

来源地址:https://blog.csdn.net/2301_76334474/article/details/129233884

--结束END--

本文标题: 【反序列化漏洞-01】序列化与反序列化概述

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【反序列化漏洞-01】序列化与反序列化概述
    为什么要序列化 百度百科上关于序列化的定义是,将对象的状态信息转换为可以存储或传输的形式(字符串)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区(非关系型键值对形式的数据库Redis,与数组类似)。以后,可以通过从存储区中...
    99+
    2023-09-06
    web安全 安全 反序列化 序列化 PHP反序列化漏洞 Powered by 金山文档
  • 【反序列化漏洞-02】PHP反序列化漏洞实验详解
    为什么要序列化 百度百科上关于序列化的定义是,将对象的状态信息转换为可以存储或传输的形式(字符串)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区(非关系型键值对形式的数据库Redis,与数组类似)。以后,可以通过从存储区中...
    99+
    2023-09-21
    序列化 反序列化 PHP反序列化漏洞 PHP魔术方法 网络安全 Powered by 金山文档
  • thinkphp 反序列化漏洞
    文章目录 配置xdebug反序列化漏洞利用链详细分析poc1(任意文件删除)poc2(任意命令执行) 补充代码 配置xdebug php.ini [Xdebug]zend_ext...
    99+
    2023-09-04
    apache php 开发语言 web安全 网络安全
  • PHP 反序列化漏洞
    PHP反序列化漏洞在实际测试中出现的频率并不高,主要常出现在CTF中。 PHP序列化概述 PHP序列化函数: serialize:将PHP的数据,数组,对象等序列化为字符串unserialize:将序列化后的字符串反序列化为数据,数组,对...
    99+
    2023-09-01
    php web安全
  • 反序列化漏洞(PHP)
    反序列化漏洞 0x01. 序列化和反序列化是什么 序列化:变量转换为可保存或传输的字符串的过程; 反序列化:把序列化的字符串再转化成原来的变量使用 作用:可轻松地存储和传输数据,使程序更...
    99+
    2023-09-03
    php web安全 安全
  • 序列化与反序列化
    序列化(pickling)   把变量从内存中变成可存储或传输的过程 反序列化(unpickling)   把变量内容从序列化的对象重新读到内存里的过程 序列化&反序列化的意义  在程序运行过程中,对象可在内存中被自由的修改  一...
    99+
    2023-01-31
    序列 化与 序列化
  • 反序列化漏洞详解
    目录 一、什么是序列化和反序列化 二、什么是反序列化漏洞 三、序列化函数(serialize) 四、反序列化(unserialize) ​五、什么是PHP魔术方法 六、一些常见的魔术方法 七、魔术方法的利用  八、反序列化漏洞的利用 1._...
    99+
    2023-09-02
    web安全 安全 php
  • PHP反序列化漏洞基础概要
    目录 什么是反序列化漏洞? 序列化 serialize 反序列化 unserialize 常见魔法函数 反序列化漏洞防御 什么是反序列化漏洞? 反序列化又叫对象注入,漏洞产生是程序在处理对象、魔术函数以及序列化问...
    99+
    2023-09-06
    php 开发语言 安全
  • Java序列化与反序列化
    目录Java 序列化与反序列化序列化APIObjectOutputStreamObjectInputStreamserialVersionUIDTransient (瞬态变量)实例理...
    99+
    2023-05-14
    Java序列化 Java反序列化
  • 浅谈phar反序列化漏洞
    目录 基础知识 前言 Phar基础 Phar文件结构 受影响的函数 漏洞实验 实验一 实验二 过滤绕过 补充 基础知识 前言 PHP反序列化常见的是使用unserilize()进行反序列化,除此之外还有其它的反序列化方法,不需要用到un...
    99+
    2023-09-09
    web安全 网络安全 php
  • phpmyadmin scripts/setup.php 反序列化漏洞
    文章目录 0x01 影响版本 0x02 漏洞复现 0x03 补充知识点: ...
    99+
    2023-09-03
    php 开发语言 linux
  • thinkphp5.0.24反序列化漏洞分析
    thinkphp5.0.24反序列化漏洞分析 文章目录 thinkphp5.0.24反序列化漏洞分析 具体分析 反序列化起点 toArray ge...
    99+
    2023-09-03
    安全 php web安全 数据库 开发语言
  • [Java反序列化]—Shiro反序列化(一)
    环境配置:  IDEA搭建shiro550复现环境_普通网友的博客-CSDN博客 漏洞原理: Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对remem...
    99+
    2023-09-03
    java 开发语言
  • php反序列化漏洞之pop链
    目录 POP链简介 pop面向属性编程: pop chain pop链利用技巧 1、在pop链中出现的方法: 2、反序列化中为了避免信息丢失,可以使用大写S,支持字符串的编码 3、深浅copy 4、利用php伪协议 POP键构造复现: 例...
    99+
    2023-09-29
    安全 web安全
  • ThinkPHP v6.0.13 存在反序列化漏洞
    漏洞描述 ThinkPHP 是一个免费开源的,轻量级的PHP开发框架。 ThinkPHP 6.0.13版本中存在反序列化漏洞,攻击者可通过精心设计的 payload 在 Psr6Cache 组件中通过...
    99+
    2023-09-02
    apache 安全 php
  • TP 5.0.24反序列化漏洞分析
    前言 很久没发过文章了,最近在研究审计链条相关的东西,codeql,ast,以及一些java的东西很多东西还是没学明白就先不写出来丢人了,写这篇tp的原因呢 虽然这个漏洞的分析文章蛮多了,但是还是跟着...
    99+
    2023-08-31
    php 安全 web安全
  • PHP序列化和反序列化
    一.什么是序列化和反序列化 php类与对象 类是定义一系列属性和操作的模板,而对象,就是把属性进行实例化,完事交给类里面的方法,进行处理。 `。尝试构造payload: ...
    99+
    2023-08-31
    php 开发语言
  • JavaIO之序列化与反序列化详解
    目录1、什么是序列化与反序列化?2、为什么要做序列化?3、Java 怎么进行序列化?总结1、什么是序列化与反序列化? 序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存...
    99+
    2022-11-13
  • C#实现XML序列化与反序列化
    目录一、使用 System.Xml.Serialization类1、定义元数据2、简单序列化与反序列化3、集合的序列化与反序列化4、在不能更改数据的情况下,可以用代码重载 XmlAt...
    99+
    2022-11-13
  • 协议,序列化,反序列化,Json
    文章目录 协议序列化和反序列化网络计算器protocol.hppServer.hppServer.ccClient.hppClient.cclog.txt通过结果再次理解通信过程 Json...
    99+
    2023-09-01
    json 网络 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作