Skip to content

Latest commit

 

History

History
34 lines (21 loc) · 1.24 KB

SerialVersionUID.md

File metadata and controls

34 lines (21 loc) · 1.24 KB

0x1 引子

SerialVesionUID不一致导致反序列化漏洞利用失败也算是实战中比较常见的问题了,面试也会经常提及。

0x2 代码分析

反序列化的调用栈

initNonProxy:595, ObjectStreamClass (java.io)
readNonProxyDesc:1829, ObjectInputStream (java.io)
readClassDesc:1713, ObjectInputStream (java.io)
readOrdinaryObject:1986, ObjectInputStream (java.io)
readObject0:1535, ObjectInputStream (java.io)
readObject:422, ObjectInputStream (java.io)
main:18, SerializableDemo2 (serialVersionUID)
  • java.io.ObjectStreamClass#initNonProxy

image

对serialVersionUID做了比较,如果发现不相等,则直接抛出异常。

  • java.io.ObjectStreamClass#getSerialVersionUID

image

在没有定义serialVersionUID的时候,会调用computeDefaultSUID 方法,生成一个默认的serialVersionUID。

0x3 解决方案