JAVA反序列化漏洞

JAVA反序列化漏洞

原文资料 :xiu--》xiu博客

文章目录

idea

类继承

复制代码
public class Person {
    public int age;
    public String name;
    public void talk(){
    System.out.println("Person 说话了");
}
public class Student extends Person{
    public int score;
    public void talk(){
    System.out.println("Student说话了");
}
public class Test {
    public static void main (String[] args) {
    Student stul = new Student();
    stul.talk();
}

数据前五个字节

rO0AB java序列化base64编码数据

aced 16进制java序列化

复制代码
序列化:
ObjectOutputStream --> writeObject()
反序列化: 
ObjectInputStream --> readObject()  

反序列化漏洞

person类
复制代码
import java.io.I0Exception;
import java.io.0bjectInputStream;
import java.io.Serializable;

public classPerson implements Serializable {

    public int age;
    public String name;
    private void readobject (ObjectInputStream in)throws IOException, ClassNotFoundException {

    Runtime.getRuntime().exec("calc");
    // 默认的反序列化操作
    in.defaultReadObject();
    }
}
Test类
复制代码
import java.io.*;

public class Test {
    public static void main (String[] args) throws IOException,  ClassNotFoundException {
   
        Person p=new Person();
        p.age=18;
        p.name="xiu";
        serialize (p,"xiu.bin");
        System.out.println("反序列化结果:"+
        deserialize("xiu.bin"));
     }
     
    public static void serialize (Object obj, string filePath) throws IOException {
    
        try ( FileOutputStream file0ut = new File0utputStream(filePath);
        	  Object0utputStream objectOut = new Object0utputStream(fileOut)
        	){ objectOut.write0bject(obj);}
    }
    
    public static Object deserialize(String filePath) throws IOException, ClassNotFoundException {
    try (FileInputstream fileIn = new FileInputstream(filePath);
        ObjectInputstream objectIn = new ObjectInputstream(fileIn)) {
            return objectIn.read0bject();
        }
    }
}

什么是反序列化漏洞

PHP的反序列化和java的反序列化是两种不同的类型,序列化和反序列化本身没有漏洞点,只是为了实现数据的完整高效的传输,

PHP反序列漏洞是由于类里面的魔术方法调用了某个函数,该危险函数又调用了别的函数,最终执行到了危险函数的位置

JAVA反序列化漏洞是由于开发者重写了readObject方法,该readObject方法方法调用了别的方法,最终执行到了例如Transfrom方法的危险方法

相关推荐
OPEN-F11 分钟前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试
阿里嘎多学长11 分钟前
2026-08-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
野生技术架构师14 分钟前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端
其实防守也摸鱼20 分钟前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全
AI人工智能+电脑小能手21 分钟前
大白话说Java设计模式-28-模板方法模式(业务实战篇)
java·设计模式·模板方法模式·spring源码·订单系统·代码复用
奥莱维24 分钟前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库
Logintern0931 分钟前
装饰器和洋葱模式的区分
开发语言·python·架构
工业一体机老司机33 分钟前
Linux工业一体机自启动服务配置:systemd服务单元编写与开机优化实战
java·linux·服务器
冻柠檬飞冰走茶1 小时前
《数据结构实验指导-C++语言版》 在顺序表 list 中查找元素 x
开发语言·数据结构·c++·算法·list
Brilliantwxx1 小时前
【C++】 高阶数据结构图(1)并查集
开发语言·数据结构·c++