学到weblogic和一些调用链的细节的时候,发现反序列化底层理解还是非常重要的,因为很多绕过手法和黑名单的禁用都是根据底层来进行的
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 |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
小瑟斯
发表于 1个月前
涨知识了
评论列表
加载数据中...
muhan
发表于 1个月前
涨知识了
评论列表
加载数据中...
董柯岩
发表于 1个月前
1
评论列表
加载数据中...
fupanc
发表于 1个月前
学习了
评论列表
加载数据中...