java
文章平均质量分 89
Shanfenglan7
优秀是一种习惯。
展开
-
springmvc基础知识点学习
文章目录1. 常见注解1. @RequestMapping2. @ResponseBody3. @RequestBody4. @RequestParam5. @RestController6. @Controller7. @SessionAttributes2. Model类1. ModelAndView类2. Map类3. springmvc工作流1. 常见注解有点类似于提前编写好的一些函数,使用注解就是使用这些函数来实现自己的一些目的.1. @RequestMapping它是用来做映射的.@R原创 2022-03-31 17:53:01 · 358 阅读 · 0 评论 -
java代码审计-java基础-3
1. 通过注入读取spring datasource配置信息<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page import="org.springframework.context.ApplicationContext" %><%@ page import="org.springframework.web.context.support.WebApplicationConte原创 2022-03-18 19:49:26 · 5327 阅读 · 0 评论 -
java代码审计-java基础-2
文章目录1. 文件读取1. 文件读取常用的有java.io和java.nio,java.nio的实现是sun.nio.如果rasp监控了java.io里面的读文件的类,我们就可以使用java.nio来绕过监控并实现相同的功能.原创 2022-03-15 20:03:39 · 961 阅读 · 0 评论 -
java安全知识总结
cc1cc2shirofastjsonthinkphp内存马原创 2022-02-22 15:57:45 · 3299 阅读 · 0 评论 -
java代码审计-java基础-1
1. 基础知识jvmjava反射机制复习利用反射机制,可以调用类中protected属性的方法。想要创建一个类的对象或者说实例就必须将先将这个class文件加载到jvm中。Java中class的加载方式分为显式和隐式,显式即我们通常使用Java反射或者ClassLoader来动态加载一个类对象,而隐式指的是类名.方法名()或new类实例。显式类加载方式也可以理解为类动态加载,我们可以自定义类加载器去加载任意的类。Class.forName("类名")默认会初始化被加载类的静态属性和方法,如果不希原创 2022-02-14 18:40:36 · 866 阅读 · 0 评论 -
jackson CVE-2017-7525 漏洞复现
CVE-2017-7525 Jackson-databind 反序列化漏洞原理Jackson-databind 在设置 Target class 成员变量参数值时,若没有对应的 getter 方法,则会使用 SetterlessProperty 调用 getter 方法,获取变量,然后设置变量值。当调用 getOutputProperties() 方法时,会初始化 transletBytecodes 包含字节码的类,导致命令执行,具体可参考 java-deserialization-jdk7u21-ga原创 2021-11-29 13:23:36 · 1676 阅读 · 0 评论 -
jboss漏洞复现
文章目录什么是jboss1. JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)原理利用2. JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)原理利用参考文章什么是jbossjava中间件,类似于weblogic,webSphere等。可以理解成是一个加强版的可以实现EJB的tomcat。它的内部集成了tomcat对servlet处理的功能,而且支持EJB,不过weblogic的性能几乎全优于它,基本可以用weblogic代替。1. JBos原创 2021-11-23 13:03:29 · 1013 阅读 · 0 评论 -
struts2框架学习
1. struts2框架请求流程用户请求某个. action。执行web.xml中配置的过滤器对请求进行过滤,这个过滤器是StrutsPrepareAndExecuteFilter,上图中的FilterDispather已经被StrutsPrepareAndExecuteFilter代替。web.xml文件信息如下图,代表了无论什么请求都得通过名为strtus2的filter去过滤,而这个过滤器对应的文件是org.apache.struts2.dispacher.FilterDispatche原创 2021-11-21 13:46:08 · 1203 阅读 · 0 评论 -
tomcat常见漏洞复现
文章目录抓包爆破密码上传含有webshell的war包抓包账号密码在这里,格式是tomcat:123的base64编码。爆破密码上传含有webshell的war包上传一个war包的webshell:原创 2021-11-16 20:45:30 · 1225 阅读 · 0 评论 -
java agent内存马学习
文章目录1. 什么是java agent补充:一些重要的类ClassFileTransformerVirtualMachineCtMethod2. 利用premain函数实现java agent2.1 执行逻辑2.2 利用javaagent修改加载到jvm前被拦截的类3. 利用agentmain实现javaagent3.1 执行逻辑3.2 参考代码1. 实现连接指定jvm进程的代码:2. 实现agentmain4. 利用agentmain实现内存马4.1 修改spring boot中的Filter实现内存马原创 2021-11-12 14:28:50 · 2021 阅读 · 1 评论 -
java中javassist、ClassPool、CtClass、Apache CC2链学习
文章目录1. 什么是javassist2. 什么是ClassPool3. 什么是CtClass4. 写一个Class文件test.class5. 修改这个写好了的test.class7. 加载类并获取类中的私有变量6. 参考文章1. 什么是javassistjavassist是一个处理Java字节码的jar包,里面有很多类。2. 什么是ClassPool可以想象成一个容器,里面放着指定路径下的class文件,使用javassist对类进行操作的时候,必须先创建一个ClassPool。它也可以暂时存原创 2021-11-11 19:42:01 · 5462 阅读 · 0 评论 -
java中classloader学习
文章目录0. java相关环境变量:JAVA_HOMEPATHCLASSPATH1. 什么是classloader2. 一个类怎么被加载到jvm中的1. 三个加载器2. 加载顺序/委托加载机制3. 代码实现类的加载0. java相关环境变量:JAVA_HOME指的是你JDK安装的位置,一般默认安装在C盘,如C:\Program Files\Java\jdk1.8.0_91PATHpath路径中的可执行文件,在命令行输入名字后可直接执行,不需要加上绝对路径,例如javac、java等命令。原创 2021-11-10 19:10:26 · 974 阅读 · 0 评论 -
java内存马学习与理解
文章目录1. 前置知识1.1 java web 核心组件listenerfilterfilter的生命周期filter链servlet2. tomcat2.1 核心组件1. connector组件2. container组件1. 前置知识1.1 java web 核心组件首先我们得知道,java网站都一定会有一个web容器。listener本质是一个java类。作用是监听Application、Session和Request三大对象创建或者删除,然后根据监听的结果来执行提前编写的代码。可以简单原创 2021-11-08 23:04:47 · 6404 阅读 · 0 评论 -
mvc与struts2漏洞复现
文章目录1. 什么是mvc1.1 model1.2 controller1.3 view2. struts2漏洞原理2.1 OGNL2.2 expression2.3 root2.4 content3. S2-001的理解4. 其他参考文章1. 什么是mvcmvc分为三部分,model、view、controller,是一种软件设计典范。1.1 model负责数据处理,并将处理结果返回给view显示出来。1.2 controller负责接收view传递的数据,并决定将这些数据传递给哪一个mode原创 2021-10-16 22:47:24 · 853 阅读 · 0 评论 -
理解RMI、JRMP、JNDI、java反射
文章目录1. RMI2. JRMP3. JNDI4.实现的效果5. 利用方式终结参考文章1. RMIRMI是一种行为,一种跨越主机进行远程方法调用的行为。通俗点理解当前主机的一个java文件调用了远程某个主机上的某个java文件中的某个方法,这种行为就叫做RMI。我们模拟一种场景:远程主机上有一个类是cat。当前主机上通过RMI这种行为调用了远程主机上的类来创建一个对象,并进行后续使用。上面这种行为就是RMI。2. JRMP这是一个协议,用来定义RMI这行为过程中数据传输的规范。R原创 2021-04-15 17:58:42 · 2229 阅读 · 1 评论 -
java反序列化与Apache CC链、fastjson反序列化的理解与研究
文章目录1. 前言2. 为什么会存在序列化技术2. 序列化1. 前言java反序列化是将一个序列化文件或者序列化数据进行还原处理。一个被序列化的数据的2进制数据特征是以aced0005开头,有点类似于exe文件都有PE头一样,具体如下所示:序列化技术的出现,是为了方便数据保存与传输的。它将数据变成了字节的形式进行保存并便于通过socket进行传输。2. 为什么会存在序列化技术1、方便对象的保存2、方便对象在网络上传输网络上只能传输字节流数据,对象本是无法在网络上直接进行传输的。而序列化技术可原创 2021-04-15 13:34:43 · 1681 阅读 · 0 评论 -
java代码审计-基础语法篇
文章目录前言1. 基础语法2. 构造函数前言java是一个解释型的语言,可跨平台执行。一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作,每个java文件都是一个类,同一文件夹下可以互相调用其他文件下的类,不同文件夹下可以通过import命令进行导入。java中没有析构函数,finalize是用来回收内存的。1. 基础语法大小写敏感:Java 是大小写敏感的。类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写。原创 2021-04-12 12:19:24 · 442 阅读 · 0 评论 -
php反序列化漏洞
文章目录成因phpjava漏洞复现参考文章成因传给反序列化函数的参数用户可控。php测试代码<?phpclass sfl{ var $test= '123'; var $aa = 'z'; var $q;}$class1 = new sfl;$arr=array('tom','cody','ffffff');$class1_ser = serialize($class1);print_r('class======>'.$class1_ser.'<br>')原创 2021-04-08 17:46:42 · 565 阅读 · 0 评论