java反序列化底层探究

nn0nkey   ·   发表于 2024-10-08 21:38:00   ·   技术文章

java反序列化底层探究

前言

学到weblogic和一些调用链的细节的时候,发现反序列化底层理解还是非常重要的,因为很多绕过手法和黑名单的禁用都是根据底层来进行的

DEMO

import java.io.*;
public class Main {
    public static class Demo implements Serializable {
        transient String name;
        public Demo(String name) {
            this.name = name;
        }
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            Demo demo = new Demo("nn0nkey");
            ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("panda.out"));
            outputStream.writeObject(demo);
            outputStream.close();
            ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("panda.out"));
            inputStream.readObject();

        }
    }
}

反序列化分析

一般我们就知道反序列化会调用readobject方法,现在就好好分析一下readobject干了啥

首先判断是不是重载类型的,如果不是调用Object obj = readObject0(false);去恢复对象

readObject0方法会对不同的类型进行不同的处理,我这里是object类型的

readOrdinaryObject(unshared)我们继续看看是怎么处理的

内部调用ObjectStreamClass desc = readClassDesc(false);去读取我们的序列化流的描述信息,跟进

更多内容已被隐藏
主题内容你需要付费可见 (点击购买) 售价:5 金币
用户名金币积分时间理由
Track-魔方 100.00 0 2024-11-05 20:08:24 本月首次发表一篇有效文章奖励 100
Track-魔方 700.00 15 2024-11-05 20:08:16 深度 300 普适 200 可读 200

打赏我,让我更有动力~

4 条回复   |  直到 1个月前 | 162 次浏览

小瑟斯
发表于 1个月前

涨知识了

评论列表

  • 加载数据中...

编写评论内容

muhan
发表于 1个月前

涨知识了

评论列表

  • 加载数据中...

编写评论内容

董柯岩
发表于 1个月前

1

评论列表

  • 加载数据中...

编写评论内容

fupanc
发表于 1个月前

学习了

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.