PHP反序列化漏洞

PHP反序列化漏洞

原资料参考: xiu博客

文章目录

序列化与反序列化

seriallization 序列化 : 将对象转化为便于传输的格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串。
deseriallization 反序列化:将序列化的数据恢复为对象的过程。

PHP反序列化函数

复制代码
serialize();    将对象序列化成字符串

unserialize();  将字符串反序列化回对象

序列化

对象转换成字符串,方便传输

创建类
复制代码
class Stu{

    public $name;

    public $age;

    public $sex;

    public $score;

}
创建对象(序列化)
复制代码
$stu1 = new Stu();

$stu1->name = "xiu";

$stu1->age = 18;

$stu1->sex = true;

var_dump($stu1);

echo "<hr />";

echo serialize($stu1);

反序列化

字符串转换成对象

O:object

反序列化漏洞
复制代码
以 __ 开头的函数,是PHP 中的魔术方法。

类中的魔术方法,在特定情况下会自动调用。即使魔术方法在类中没有被定义,也是真实存在的。

两个下划线

__construct()      在创建对象时自动调用

__destruct()       在销毁对象时自动调用

**__wakeup()       unserialize()时会自动调用这个函数**

**__sleep()**			  serialize()时会自动调用这个函数

例子

复制代码
<?php
    class animal{
        public $name;
        public $age;
        
        public function__sleep(){
            if(@$_GET['cmd' ]=="abc"){
            a() ;
    		}
   		 }
   	}
    $anl=new animal;
    
    $anl->name="dog";
    $anl->age=3;
    
    //var_dump($anl);
    @serialize ($anl);
?>

什么是反序列化漏洞?

序列化和反序列化本身是为了实现数据在网络上完整高效的传输,但是由于反序列化过程中,对象的魔术方法会自动调用,魔术方法本身调用了别的方法,最终呈现一种链式调用,直到执行任意的代码或者命令,

修改序列化后的数据,目的是什么

为了满足一定的条件以后实现链式调用

相关推荐
奇某人16 分钟前
【语法】【C+V】本身常用图表类型用法快查【CSDN不支持,VSCODE可用】
开发语言·vscode·markdown·mermaid
做一位快乐的码农31 分钟前
php程序设计之基于PHP的手工艺品销售网站/基于php在线销售系统/基于php在线购物商城系统
开发语言·php
@珍惜一生@1 小时前
Qt开源库
开发语言·qt·开源
Slaughter信仰1 小时前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第四章知识点问答补充及重新排版
java·开发语言·jvm
心灵宝贝1 小时前
Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)
java·开发语言·macos
secondyoung2 小时前
一文丝滑使用Markdown:从写作、绘图到转换为Word与PPT
开发语言·vscode·编辑器·powerpoint·markdown·visual studio·mermaid
雨枪幻。3 小时前
spring boot开发:一些基础知识
开发语言·前端·javascript
爱炸薯条的小朋友3 小时前
C#由Dictionary不正确释放造成的内存泄漏问题与GC代系
开发语言·opencv·c#
苏琢玉5 小时前
一个轻量的PHP+Vue的前后端加密方案,写给有类似需求的朋友
php·composer
m0_480502645 小时前
Rust 登堂 之 函数式编程(三)
开发语言·后端·rust