- 1 序列化与反序列化基础
- 2 漏洞基本原理
- 3 Java 反射
- 4 DNSURL gadget 分析
- 1 背景介绍
- 2 CommonsCollections 1 Gadget 分析
- 3 CommonsCollections 6 Gadget 分析
- 4 CommonsCollections 2&&4 Gadget 分析
- JDK 7U21 Gadget
- 1 原理
- 2 构造
- 3 调用链
- 4 总结
- 1 Java 动态加载字节码
- 2 CommonsCollections 3 Gadget 分析
- 3 CommonsCollections 5 Gadget 分析
- 4 CommonsCollections 7 Gadget 分析
- 反序列化攻击涉及到的相关协议
- 1 RMI
- 2 JNDI
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2 构造
现在的思路就是通过反序列化调用 equalsImpl
, equalsImpl
是一个私有方法,在 AnnotationInvocationHandler#invoke
中被调用:
InvocationHandler
是一个接口,只有一个方法就是 invoke
。
前面的文章提到过,在使用 java.reflect.Proxy
动态绑定一个接口时,如果调用该接口中任意一个方法,会执行到 InvocationHandler#invoke
。执行 invoke
时,被传入的第一个参数是这个 proxy
对象,第二个参数是被执行的方法名,第三个参数是执行时的参数列表。
而 AnnotationInvocationHandler
就是一个 InvocationHandler
接口的实现,它的 invoke
方法:
可见,当方法名等于 equals
,且仅有一个 Object
类型参数时,会调用到 equalImpl
方法。 所以,现在的问题变成,找到一个方法,在反序列化时对 proxy
调用 equals
方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论