Java反序列化CommonsCollections篇-CC6(最好用的CC链) 环境搭建 JAVA版本JAVA 21 commons-collections 3.2.1 1234567<dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>commons 2024-05-25 JAVA #JAVA安全
Java反序列化CommonsCollections篇-CC1 环境搭建 JAVA版本8u65 commons-collections 3.2.1 1234567<dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-coll 2024-05-23 JAVA #JAVA安全
JAVA反序列化 为什么JAVA需要反序列化1. 数据持久化 序列化可以将 Java 对象转换为字节序列,并将其存储到文件中或数据库中,该字节包含对象的数据、对象的类型、对象的存储属性。这使得 Java 程序可以很容易地保存和加载数据,而无需每次都重新创建对象。例如,一个 Java 应用程序可以将用户数据序列化到文件中,以便在下次启动时加载。 2. 远程通信 序列化还可以用于在网络上传输 Java 对象。例如,一个 2024-05-21 JAVA #JAVA安全
反射 前言学习Java的反射机制是为了理解Apache Commons Collections中的反序列化漏洞做准备的。 反射概念反射是一种间接操作目标对象的机制,允许程序在运行时获取类的信息,并且在运行时动态地创建对象、调用方法、访问字段等等;对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的方法/访问属性。 实质就是得到一个Class对象后,反向获取Cl 2024-05-16 JAVA #JAVA安全
创建型-单例模式 饿汉式1234567891011public class Singleton { private static final Singleton instance = new Singleton(); //用于引用全局唯一的单例对象,在一开始就创建好 private Singleton() { //不允许随便new } public stat 2024-05-10 JAVA #JAVA设计模式
RULDNS链 URLDNS链优点 使⽤Java内置的类构造,对第三⽅库没有依赖 在⽬标没有回显的时候,能够通过DNS请求得知是否存在反序列化漏洞 利用链分析ysoserial 中URLDNS链 , 看这个利用链只涉及两个类HashMap和URL。 HashMap类HashMap自己实现了readObject()。 1234567for (int i = 0; i < mappings; i++) & 2024-05-09 JAVA #JAVA安全
创建型-建造者模式 前言12345678910111213141516public class Student { int id; int age; String name; String gender; String profession; List<String> awards; public Student(int id, int age, St 2024-05-08 JAVA #JAVA设计模式
创建型-抽象工厂模式 前言 工厂模式关注于创建单个对象,通过一个工厂类来实现。但是假如遇到需要创建一系列相关或相互依赖的对象的时候,就有些乏力了,而抽象工厂模式能很好的解决这个问题。 抽象工厂模式123456789101112public abstract class Fruit { //水果抽象类 protected final String name; protected Fruit(Str 2024-05-07 JAVA #JAVA设计模式
创建型-工厂模式 前言 为了写出更“优雅”的代码,遂准备来学习JAVA的设计模式。 以前从来没有写文章的习惯,发现学过的东西容易忘记,也可能是学的过于表面,不够深入,了解了费曼学习法,决定开始码文章,当作学习记录吧,也方便回顾。 设计模式 JAVA的设计模式分为三类,创建型模式(关注对象的创建机制)、结构性模式(关注类和对象之间的组合)、行为型模式(关注对象之间的通信以及责任的分配) 简单工厂模式12345 2024-05-03 JAVA #JAVA设计模式