04 2024 档案
发表于 2024-04-24 18:42阅读:287评论:0推荐:1
摘要:前言 Resin是一个轻量级的、高性能的开源Java应用服务器。它是由Caucho Technology开发的,旨在提供可靠的Web应用程序和服务的运行环境。和Tomcat一样是个服务器,它和hessian在一个group里,所以有一定的联系 <dependencies> <dependency>
阅读全文 »
发表于 2024-04-23 19:12阅读:120评论:0推荐:0
摘要:前言 之前分析过Fastjson的getter链,忽略了toString链,现在补上,最终也是任意调用getter 攻击测试 package org.example; import com.alibaba.fastjson.JSONObject; import com.sun.org.apache.
阅读全文 »
发表于 2024-04-22 18:49阅读:536评论:1推荐:1
摘要:前言 SnakeYaml是Java中解析yaml的库,而yaml是一种人类可读的数据序列化语言,通常用于编写配置文件等。yaml真是到哪都有啊。 环境搭建 <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifact
阅读全文 »
发表于 2024-04-20 21:19阅读:520评论:1推荐:1
摘要:基础知识 命名空间和子命名空间 我们可以把namespace理解为一个单独的空间,事实上它也就是一个空间而已,子命名空间那就是空间里再划分几个小空间,举个例子: <?php namespace animal\cat; class cat{ public function __construct()
阅读全文 »
发表于 2024-04-18 20:48阅读:605评论:1推荐:0
摘要:前言 针对除Mysql的其它数据库的jdbc attack分析 H2 RCE 介绍 H2 是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中。H2 主要有如下三个用途: 第一个用途,也是最常使用的用途就在于可以同应用程序打包在一起发布,这样
阅读全文 »
发表于 2024-04-15 13:43阅读:418评论:0推荐:1
摘要:前言 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。使用它的开源项目有Hibernate、Spring等。之前有接触到过,但是没有深入了解,像之前学二次反序列化时,WrapperConnectionPoolDataSource就是C3P0
阅读全文 »
发表于 2024-04-14 20:02阅读:331评论:3推荐:2
摘要:前言 Kryo是一个快速序列化/反序列化工具,依赖于字节码生成机制(底层使用了ASM库),因此在序列化速度上有一定的优势,但正因如此,其使用也只能限制在基于JVM的语言上。 Kryo序列化出的结果,是其自定义的,独有的一种格式。由于其序列化出的结果是二进制的,也即byte[],因此像redis这样可
阅读全文 »
发表于 2024-04-13 17:31阅读:392评论:0推荐:1
摘要:前言 Groovy 是一种基于 JVM 的开发语言,具有类似于 Python,Ruby,Perl 和 Smalltalk 的功能。Groovy 既可以用作 Java 平台的编程语言,也可以用作脚本语言。groovy 编译之后生成 .class 文件,与 Java 编译生成的无异,因此可以在 JVM
阅读全文 »
发表于 2024-04-12 18:48阅读:777评论:1推荐:0
摘要:环境搭建 先搭建一个SpringMVC项目,参考这篇文章,或者参考我以前的spring内存马分析那篇文章 https://blog.csdn.net/weixin_65287123/article/details/136648903 SpringMVC路由 简单写个servlet package c
阅读全文 »
发表于 2024-04-12 12:48阅读:1305评论:0推荐:1
摘要:前言 Springboot一般都会自带JackSon这个依赖包,JackSon跟Fastjson有相同的功效 简单复现 package com.example.jakeson.demo; import java.io.IOException; import java.io.Serializable;
阅读全文 »
发表于 2024-04-11 18:24阅读:637评论:0推荐:0
摘要:RPC协议 RPC全称为Remote Procedure Call Protocol(远程调用协议),RPC和之前学的RMI十分类似,都是远程调用服务,它们不同之处就是RPC是通过标准的二进制格式来定义请求的信息,这样跨平台和系统就更加方便 RPC协议的一次远程通信过程如下: 客户端发起请求,并按照
阅读全文 »
发表于 2024-04-10 19:23阅读:434评论:0推荐:0
摘要:前言 简单介绍下二次反序列化,顾名思义,就是反序列化两次,其主要意义是绕过黑名单的限制或不出网利用,有些CTF题把一大堆关键类全都ban了,这就让人无从下手,二次反序列化就是为此而生的 SignedObject 原理 看构造函数,接受一个可序列化的对象,再进行一次序列化,简直不要太perfect 关
阅读全文 »
发表于 2024-04-09 18:45阅读:201评论:0推荐:0
摘要:环境搭建 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <de
阅读全文 »
发表于 2024-04-08 20:48阅读:644评论:0推荐:0
摘要:什么是Java Agent 我们知道Java是一种强类型语言,在运行之前必须将其编译成.class字节码,然后再交给JVM处理运行。Java Agent就是一种能在不影响正常编译的前提下,修改Java字节码,进而动态地修改已加载或未加载的类、属性和方法的技术。实际上,平时较为常见的技术如热部署、一些
阅读全文 »
发表于 2024-04-08 07:59阅读:533评论:0推荐:1
摘要:前言 BCEL加载类有一个特点,只可以加载jdk原生的类,其它框架的类,都会报错ClassnotFound的错误。但是,BCEL的ClassLoader在8u252后被删除了 注入流程分析 获取context 一种比较通用的获取context的方式 WebApplicationContext con
阅读全文 »
发表于 2024-04-07 18:42阅读:324评论:0推荐:0
摘要:环境搭建 踩了很多坑....,不过还好最后还是成功了 IDEA直接新建javaEE项目,然后记得把index.jsp删了,不然DispatcherServlet会失效 导入依赖: <dependencies> <dependency> <groupId>org.springframework</gr
阅读全文 »
发表于 2024-04-07 12:40阅读:236评论:0推荐:0
摘要:漏洞原理 Spring框架的JtaTransactionManager类中重写了readObject方法,这个方法最终会调用到JNDI中的lookup()方法,关键是里面的参数可控,这就导致了攻击者可以利用JNDI注入中的lookup()参数注入,传入恶意URI地址指向攻击者的RMI注册表服务,以使
阅读全文 »
发表于 2024-04-06 16:25阅读:331评论:1推荐:1
摘要:回顾JSP马 详情见:https://www.cnblogs.com/F12-blog/p/18111253 之前说的都是利用 jsp 注入内存马,但 Web 服务器中的 jsp 编译器还是会编译生成对应的 java 文件然后进行编译加载并进行实例化,所以还是会落地。 但如果直接注入,比如利用反序列
阅读全文 »
发表于 2024-04-02 18:19阅读:492评论:2推荐:0
摘要:前言 自己简单搭建一个Tomcat项目,IDEA里选择JavaEE,勾上web就行了 加个依赖(这样就能找到三个Context了: <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-cor
阅读全文 »
发表于 2024-04-01 17:25阅读:209评论:0推荐:0
摘要:什么是BCEL BCEL是位于sun包下的一个项目,是属于Apache Common的一个子项目 BCEL-LoadClass分析 demo package org.example; import com.sun.org.apache.bcel.internal.Repository; import
阅读全文 »