章节2:01-Java序列化和反序列化
01-Java序列化和反序列化
基础环境
JDK解压版:包含Java运行时环境
IDEA:开发工具
Maven:jar包依赖管理
Tomcat:HTTP服务器
Burp Suite:发送HTTP请求
Kali:启动相关服务
01 序列化和反序列化的含义和用途
Java序列化和反序列化
序列化主要使用场景
-
持久化内存数据
-
网络传输对象
-
远程方法调用(RMI)
……
JSON格式
02 Java序列化演示
Java序列化和反序列化
Person对象,实现Serializable接口
序列化格式
参考:
https://docs.oracle.com/javase/8/docs/platform/serialization/spec/serialTOC.html
https://docs.oracle.com/javase/8/docs/platform/serialization/spec/protocol.html#a10258
Java序列化和反序列化
序列化
java.io.ObjectOutputStream.writeObject()
反序列化
java.io.ObjectInputStream.readObject()
03 反序列化漏洞的出现
自定义反序列化
- 重写类的readObject()方法
- 反序列过程中会执行自定义的readObject()
利用思路
- 利用自定义的readObject()方法执行代码
- 寻找重写了readObject()方法的类
利用
有没有重写了readObject()的现成的类?
package sun.reflect.annotation;
AnnotationInvocationHandler
package javax.management;
BadAttributeValueExpException
……