🌓

Java设计模式-工厂模式

来源:https://blog.csdn.net/ayunlong/article/details/130297293?spm=1001.2014.3001.5502 Java设计模式-工厂模式(Singleton Pattern) 工厂模式完成了对象创建过程的封装,对外屏蔽实现过程 一、什么是工厂模式工厂模式的出现是为了解决创建对象实例的问题,通常我们使...

阅读全文

Java设计模式-单例模式

来源:https://blog.csdn.net/ayunlong/article/details/130297205?spm=1001.2014.3001.5502 Java设计模式-单例模式(Singleton Pattern) 单例模式可以非常有效的节省系统开支 什么是单例模式?单例就是单个实例,在进程所分配的内存中仅能存在唯一一个对象。 单例模式就...

阅读全文

Java 设计模式六大原则

设计模式设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。 通俗来讲就是一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代...

阅读全文

RMI

RMI远程调用的时候,其核心就是远程调用其他主机上或者jvm上的类的相关方法,而远程调用过程中传输的数据内容是以序列化的形式传输的,必要的时候可能还会传输对象的引用等(当然也是以序列化的方式传输),传输的格式是基于JRMP协议的。 JRMP是 Java Remote Message Protocol 的缩写,java远程通信协议。主要就是为进程间、主机间ja...

阅读全文

CB链

CB链环境搭建123456789101112131415<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>...

阅读全文

CC链5

CC链5CC5的链 和CC1差不多,只不过 调用 LazyMap.get()用的是 TiedMapEntry.toString()触发的 我们来看一下 TiedMapEntry.toString() 这里会调用 getValue() 跟进 看一下 getValue函数内容 再找一找触发点,来看看哪里的readObject调用了 toString。 由于调...

阅读全文

CC链4

CC链4环境jdk 8u66 12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</v...

阅读全文

CC链3

CC链3前面介绍了CC1和CC6,这两条链子虽然前面的入口类不同 CC1入口类是AnnotationInvocationHandler CC6入口类是HashMap但是其触发恶意代码的方式是相同的,都是InvokerTransformer.transform()触发Runtime.getRuntime().exec()实现命令执行。 而在很多情况下,Ru...

阅读全文

Java类加载机制

Java基础-类加载机制javac原理javac是用于将源码文件.java编译成对应的字节码文件.class。其步骤是:源码——>词法分析器组件(生成token流)——>语法分析器组件(语法树)——>语义分析器组件(注解语法树)——>代码生成器组件(字节码) 类加载过程先在方法区找class信息,有的话直接调用,没有的话则使用类加载器...

阅读全文

CC链6

准备阶段实际上 CC6链子 又是CC1的一个变种 没有版本限制找到这个漏洞的人又开辟出 一个新的线路 通过 TiedMapEntry.hashcode() 去触发 CC1里的 LazyMap.get()CC6是最好用的CC利用链,因为CC6不限制jdk版本,只要commons collections 小于等于3.2.1,都存在这个漏洞。 这里我们是继续沿用的...

阅读全文