目录
[Java反序列化]10、反序列化漏洞基础
反序列化漏洞的基本逻辑
反序列化漏洞的要求
- 入口类:
- 可序列化
- 可重写readObject
- 接受任意对象作为参数
- 过程中的O类
- 可序列化
- 属于集合类型/接受任意对象/接受Map
- 末端方法
- 可以执行需要执行的操作
序列化和反序列化代码
//序列化操作
public static void Serialize(Object obj) throws Exception {
// 对象输出流
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj"));
// 使用 writeObject 序列化对象
oos.writeObject(obj);
// 刷新
oos.flush();
// 关闭流
oos.close();
}
//序列化后的二进制文件会被保存到文件输出流指定的路径。
// 反序列化操作
public static void Deserialize() throws Exception {
// 对象输入流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj"));
// 使用 readObject() 反序列化
Object obj = ois.readObject();
// 使用对象
System.out.println(obj);
// 关闭流
ois.close();
//反序列化需要借助文件输入流读取指定路径的二进制文件。
}
}
Comments | 2 条评论
博主 1
555
博主 1
555