DNSLog:9a2K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3y4W2P5h3g2Q4x3X3g2A6L8H3`.`.
Java序列化payload生成:459K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5H3L8$3k6G2i4K6u0r3c8r3g2K6N6$3W2F1k6H3`.`.
JDK1.8
1. 先在DNSLog平台获得一个域名:
2. 使用Deswing工具生成URLDNS的序列化文件:
3. 编写一段反序列化代码:
4. 执行后查看产生了DNSLog记录:
先来看反序列化后产生的是一个HashMap类型的对象,其中key为URL类型,value是一个String:
在Java反序列化中,如果目标对象定义了readObject方法,则ObjectInputStream在调用readObject方法时,也会反射调用目标对象的readObject方法。
既然我们这里反序列化出的是一个HashMap对象,那我们找找HashMap是否定义了该方法:
果然有,进入这个方法,将断点打到1397行:
这里调用了hash方法,跟进去:
继续调用key.hashCode(),跟进去:
前文提到HashMap对象的key是URL类型,所以这里是调用到了URL的hashCode方法,该方法的逻辑是:如果hashCode不等于-1,则直接返回,否则再调用handler的hashCode方法。点到hashCode的定义处可见其初始值为-1,所以这段逻辑也可理解为:如果hashCode是一个初始化值-1,则需要调用handler的hashCode方法为其赋值,如果不是-1,说明已经赋过值了,直接返回。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
guduzhe 除了触发dns的查询请求,有其他什么危害么
米龙·0xFFFE dnslog的作用是可以在域名前添加自定义前缀,这个前缀可以是命令执行结果,比如`whoami`.xxx.io,也可用于sql注入,比如select load_file(concat('\\\\',d ...
guduzhe 你说的这个是sql注入,场景不一样
米龙·0xFFFE 不一定非得sql注入,我意思是可以用于信息收集
Met三二 这就是探测用的...你这看来还没学会啊。。就开始瞎说了
米龙·0xFFFE 具体要探测什么,麻烦说详细些
Met三二 探测反序列用的,而且urldns也和执行命令没有关系吧。`whoami`.xxx.io这和urldns链没关系啊。看来你应该是刚学java吧。。