随笔分类 - Java自学之路
摘要:Java有三种代理模式:静态代理、动态代理和cglib代理。 代理模式是一种设计模式 , 提供了对目标对象额外的访问方式 , 即通过代理对象访问目标对象. 举个例子 , 存在一个 对象A , 但是开发人员不希望程序直接访问 对象A , 而是通过访问一个中介对象B来间接访问 对象A , 以达成访问 对
阅读全文
摘要:JVM中提供了三层的ClassLoader: Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。 ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。
阅读全文
摘要:前面学习了cc链,它被广泛应用与提供Java反序列化接口的攻击中。 今天来学一下RMI,Remote Method Invocation 这里没有单独写注册中心,把注册中心直接就写到服务端里面了 这是我画的一个图来方便理解他的底层原理 简单地在本地实现一个RMI服务的启动 首先是写一个RMITest
阅读全文
摘要:0x01环境搭建 首先在maven项目的pom文件下导入yaml的依赖 这里是1.27版本的,这里的jdk我用的是11,用1.8的没成功会抛异常 来跟着写一个实例来了解一下yaml 先写一个testSnake类 然后用yaml将该类实例对象给序列化,这里用的是dump()方法 输出结果: !!意思是
阅读全文
摘要:jscmd rce 了解一下 ScriptEngineManager:是一个工厂的集合,可以通过name或者tag的方式获取某一个脚本的工厂,并且生成一个脚本的ScriptEngine. ScriptEngine engine=new ScriptEngineManager().getEngineB
阅读全文
摘要:有一直在写cors漏洞,但是一直没有去真正的利用他,今天就来学习记录一下利用。 0x01前置知识 就简单提一下 Access-Control-Allow-Origin: 可以写出哪些域名能访问本站的资源 Access-Control-Allow-Credentials:字段不是必选字段,它的值是一个
阅读全文
摘要:任意文件读取 漏洞url在: http://localhost:7869/path_traversal/vul?filepath=e:/flag.txt 可以直接访问到flag文件 来看看vul此处的代码 这里是调用getImgBase64方法 跟进这个方法 可以看到仅仅判断了改路径是否存在和不是目
阅读全文
摘要:先来看看这个靶场sql注入的位置 简单的一个闭合单引号就能探测出了注入 那么来看看源码 可以看到jdbc_sqli_vul函数直接传入的username就拼接到了sql中,然后取执行返回信息,没有做任何防护。 jdbc_sqli_sec 再来看看安全的查询函数 这里用到了PreparedStatem
阅读全文
摘要:在cc1链中的poc有着这样一段 Transformer[] transformers = new Transformer[] { //通过ConstantTransformer类的transform方法获取一个对象类型 new ConstantTransformer(Runtime.class),
阅读全文
摘要:Java里面的Map是一个抽象接口,有一些类实现的该接口比如HashMap、TreeMap等 HashMap 是一个散列表,存储的内容是靠键值对来映射的(key-value)。 基本认识 HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度, 最多允许一条
阅读全文
摘要:interface&&implement 龙哥说这两个都是接口的意思,interface是名词可以理解成一个抽象类,用来定义一些方法体和属性 而implement则是动词,可以理解成对interface的实现。 这里写一个interface抽象接口类MyInterface package inter
阅读全文
摘要:00x1环境搭建 --jdk 1.8 --用maven在pom文件中添加cc库依赖 添加上下面: <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</a
阅读全文
摘要:借此来学习idea远程调试与分析。 该漏洞主要是WebLogic Server WLS组件造成的远程命令执行漏洞,是由wla-wsat.war触发的。 可以触发该漏洞的URL: http://192.168.255.128:7001/wls-wsat/CoordinatorPortType http
阅读全文
摘要:补充之前所写的反射,当我们知道反射所去调用的方法名字,传参等 直接使用getmethod()方法去调用 如果不知道呢?可以用数组来直接反射获取所有的方法,然后在做判断输出各个方法名字 调用getMethods() 也可以获取到方法所需要的参数,这里写了一个GetMethods类来实现: packag
阅读全文
摘要:Java的反射机制可以说是让其能够具有容易移植的方便,也是Java语言的特点之一。 在反序列化调用链子中经常能看到反射的使用,今天就来学习一下: 反射的使用 这里写一个demo,正常调用这个Study类 package reflect; public class Study { private in
阅读全文
摘要:getter和setter 先来看一下Java中的getter和setter方法, 简单来说就是调用setter方法设置变量的值,调用getter方法来获取变量的值。 体现了Java三大特性之一封装 用private去修饰一个变量,然后再用setter方法去设置该变量的值,然后在用getter方法去
阅读全文
摘要:1.ClassLoader Java是依赖JVM实现的跨平台开发,程序运行前需要先编译class文件, Java类初始化的时候会调用java.lang.Classloader来加载字节码, 然后ClasssLoader调用JVM的native方法来定义一个java.lang.Class实例。 2.J
阅读全文
摘要:最开始的hello world //一个源文件只能申明一个public class类 //空白符会被忽略掉 public class hello { int myrule = 0; //成员变量(实例变量) 对象销毁便不存在 可以理解成对象初始化的变量 static int class_rule =
阅读全文