Java反序列化和php反序列化的区别

news/2024/11/28 19:30:33/

文章目录

  • PHP反序列化漏洞
    • 反序列化漏洞
    • 什么是反序列化漏洞?
    • 修改序列化后的数据,目的是什么?
  • Java反序列化漏洞
    • 反序列化漏洞

PHP反序列化漏洞

序列化存在的意义是为了传输数据/对象,类是无法直接进行传输的。通过序列化后转换为字符串或json等格式进行传输。

反序列化漏洞

​ 以__开头的函数,是PHP中的魔术方法。是为了更快的响应。
​ 类中的魔术方法,在特定情况下会自动调用。即使魔术方法在类中没有被定义,也是真实存在的。
两个下划线

  • __construct():在创建对象时自动调用
  • __destruct():在销毁对象时自动调用
  • __wakeup():unserialize()时会自动调用这个函数==(反序列化)==
  • __sleep():serialize()时会自动调用这个函数==(序列化)==

​ 反序列化漏洞不能通过黑盒测试查找到;只能通过白盒测试,也就是代码审计

​ 反序列化漏洞攻击者是不可控反序列化中的任何过程的,反序列化的代码是开发者自己写的,攻击者看不到。

image-20230915095921589

什么是反序列化漏洞?

​ 序列化和反序列化本身是为了实现数据在网络上完整高效的传输,但是由于反序列化过程中,对象的魔术方法会自动调用,魔术方法本身调用了别的方法,最终呈现一种链式调用,直到执行任意的代码或者命令。反序列化漏洞中危险函数执行的时候参数对我们来说可控,反序列化才能成立。所以反序列化漏洞的利用条件非常苛刻。

反序列化的时候实现了函数的链式调用,在这个链式调用的函数里有一个漏洞点,并且可以控制这个漏洞点的参数

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

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

Java反序列化漏洞

反序列化形成的原因:链式调用

序列化,反序列化类中的方法:

序列化:
ObjectOutputStream --> writeObject()
反序列化:
ObjectInputStream --> readObject()

反序列化漏洞

​ PHP的反序列化和java的反序列化是两种不同的类型,序列化和反序列化本身没有漏洞点只是为了实现数据的完整高效的传输;
​ PHP反序列化漏洞是由于类里面的魔术方法调用了某个函数,该函数又调用了别的函数最终执行到了危险函数的位置;
JAVA反序列化漏洞是由于开发者重写了readObject方法,该readObject方法调用了别的方法,最终执行到了例如Transfrom方法的危险方法。


http://www.ppmy.cn/news/1121376.html

相关文章

QT--day5

注册 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QPushButton> #include<QLineEdit> #include<QLabel> #include <QMessageBox> #include<QString> #include<QSqlDatabase> …

操作系统篇之虚拟内存

虚拟内存是什么? 虚拟内存是计算机操作系统中的一种技术&#xff0c;它将每个进程的内存空间划分成若干个固定大小的页&#xff0c;并通过页面映射技术将这些页与物理内存或磁盘上的页面文件进行交换 虚拟内存能干什么? 扩展了实际物理内存容量&#xff1a;虚拟内存使得每个…

pycharm 让控制台里的链接可以点击

前言 如果细心就会发现pychram控制台里一些链接是可以点击的,另外一些不行,那么如果让输出的链接可以点击如何做呢? 解决 输出的i链接会在控制台里可以点击,并且点击会在本地直接打开 如果打印的是网址则可以直接点击 print(file:///{}.format(i))print(https://www.baid…

电池厂提供excel电池曲线zcv到mtk电池曲线zcv转换

#encoding:utf8 #电池厂提供excel电池曲线zcv到mtk电池曲线zcv转换 import pandas as pd import openpyxl import math # 读取Excel文件 df pd.read_excel("a55-zcv.xlsx") for j in range(0,10): if(j<3): offset0 #T0~T2 if(j3): offset…

多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

手游模拟器长时间运行后,游戏掉帧且不恢复

1&#xff09;手游模拟器长时间运行后&#xff0c;游戏掉帧且不恢复 2&#xff09;FrameBuffer Fetch无论哪种模式在确定支持的手机上显示全紫 3&#xff09;协程中yield return CoFunction()和yield return StartCoroutine(CoFunction())的区别 这是第353篇UWA技术知识分享的推…

记一次hyperf框架封装swoole自定义进程

背景 公司准备引入swoole和rabbitmq来处理公司业务。因此&#xff0c;我引入hyperf框架&#xff0c;想用swoole的多进程来实现。 自定义启动服务封装 <?php /*** 进程启动服务【manager】*/ declare(strict_types1);namespace App\Command;use Swoole; use Swoole\Proce…

靶场练习——SDcms文件上传漏洞靶场

文章目录 前言一、寻找网站后台页面1、点击请登录&#xff0c;查看URL2、修改URL参数&#xff0c;找到后台登录页面 二、登录后台管理系统1、不能使用爆破2、使用弱口令登录 三、寻找文件上传点四、上传文件操作1、上传普通的图片文件&#xff0c;查看数据包2、尝试上传PHP文件…