[Java反序列化]URLDNS链分析
Posted Y4tacker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java反序列化]URLDNS链分析相关的知识,希望对你有一定的参考价值。
结果
成功触发
分析
利用链(来自ysoserial)
* HashMap.readObject()
* HashMap.putVal()
* HashMap.hash()
* URL.hashCode()
生成链
为了可以debug我们这样填写程序参数
我们采用回溯法去分析,是getHostAddress, 解析了域名,而调用这个的函数为URLStreamHandler下的hashCode
再往上发现hashMap的 hash方法,可以调用其他类的hashCode函数
这个也能被put函数简单的调用
因此整个调用链就出来了, 需要生成一个URLStreamHandler的对象,将其作为hashMap的key值,反序列化
但是这个是一个抽象类不能直接实例化,需要实现这个类,只能用该类的子类
当然还有个值得注意的地方就是,这里需要改为-1
利用流程
反序列化调用HashMAp的readObject方法
key不为null所以进入hashcode方法
之前设置了hashcode为-1,进入了URLStreamHandler的hashcode方法
最后
在URLStreamHandler中,调用了 getHostAddress, 解析了域名
参考链接
https://zhuanlan.zhihu.com/p/149416105
https://www.cnblogs.com/v1ntlyn/p/13549991.html
以上是关于[Java反序列化]URLDNS链分析的主要内容,如果未能解决你的问题,请参考以下文章