如何解决Java 反序列化小工具 - 为什么这个 ysoserial 有效负载使用反射来设置 TiedMapEntry?
我开始研究 Java 反序列化小工具。我从著名的 Apache Common Collections 小工具开始,研究了 @matthias_kaiser
的小工具链。
有人可以解释以下内容吗?
-
为什么
TiedMapEntry
是通过 Java 反射设置而不是仅使用HashSet#add()
方法?例如,HashSet hashSet = new HashSet(); hashSet.add(tiedMapEntry);
-
我尝试了上述方法,但遇到了
Caused by: java.io.NotSerializableException: java.lang.ProcessImpl
异常,这让我相信序列化过程中可能会出现问题。 -
有什么方法可以找出可能出了什么问题?关于调试的任何提示以及在哪里查看?
-
任何关于马蒂亚斯如何找出反射“黑客”或他的思维过程的想法? (我也会尝试联系他和其他人)。
如果有其他提示(特别是在调试方面),请分享,因为这将极大地帮助我理解这个漏洞和其他漏洞。
解决方法
-
如果您将
TiedMapEntry
添加到HashSet
,则调用hashCode()
会触发TiedMapEntry.getValue()
,后者在 {{1} 上调用get()
}.这将触发 Transformer 执行,这在那时不是您想要的。 -
1) 的副作用
-
使用调试器并在方法
上设置断点LazyMap
-
通过阅读实现代码并使用合适的 IDE(IDEA、Eclipse)进行调试
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。