Java
文章平均质量分 84
Java
bfengj
vegetable web dog
展开
-
Log4j2-rce-学习
Log4j2-rce-学习前言当时漏洞出的时候在准备期末考试就没管,现在重新拾起来。。exppackage com.summer.test;import org.apache.logging.log4j.Logger;import org.apache.logging.log4j.LogManager;public class Test { private static final Logger log = LogManager.getLogger(); public st原创 2022-03-04 12:51:36 · 769 阅读 · 0 评论 -
2021-CISCN-fianl-ezj4va
2021-CISCN-fianl-ezj4va前言去年国赛决赛的0解Java,后来出现在了DASCTF八月挑战赛,当时不太会Java所以没有看,今天找个时间复现了一下。写的比较简单,具体可以看参考链接中的文章。代码审计访问/robots.txt得到文件名可以下载到源码。pom.xml:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"原创 2022-03-04 00:27:41 · 4808 阅读 · 0 评论 -
2022-卷王杯-happyFastjson
2022-卷王杯-happyFastjson前言昨天看了fastjson,因为最近比赛的fastjson出现的有点多。卷王杯Y4出了道fastjson的题目,考点是比较基础的东西,学习一波。分析import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.HashMap;import java.util.Map;public class FlagBean { private int原创 2022-03-02 22:41:55 · 1823 阅读 · 1 评论 -
SUSCTF2022的两道Java复现
SUSCTF2022的两道Java复现前言比赛的时候没有看,一是因为摸了整个寒假,Java是一点想不起来了。。。二就是因为队里的心心直接秒了。。不过这两道fastjson似乎都有一些奇奇怪怪的问题,复现的话从中学习一些东西就行了。baby gadget v1.0admin admin123登录后台后给了lib,然后有个fastjson反序列化的输入,根据题目意思是自己找链子但是似乎网上的链子也能打通:inputtext={"@type":"org.apache.xbean.propertyedi原创 2022-03-02 22:28:07 · 1028 阅读 · 0 评论 -
Tomcat-Session反序列化学习
Tomcat-Session反序列化学习简介CVE-2020-9484。要求:tomcat必须启用session持久化功能FileStoretomcat/lib或者WEB-INF/lib目录下的依赖存在可用的gadget在服务器上存在已知路径文件内容可控漏洞分析漏洞比较简单就直接提一下,具体的代码可以自己分析。当开启了session持久化功能FileStore的时候:<?xml version="1.0" encoding="UTF-8"?><!-原创 2022-03-02 13:05:50 · 1475 阅读 · 0 评论 -
[Java安全]fastjson学习
前言之前的文章的补充了,咕了半年再好好学学fastjson。初认fastjsonFastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。它关键的方法就是三个:将对象转换成JSON字符串:JSON.toJSONString将JSON字符串转换成对象:JSON.parse和JSON.parseObject()简单的写个类:原创 2022-03-01 21:03:20 · 1197 阅读 · 0 评论 -
[Java反序列化]C3P0反序列化
[Java反序列化]C3PO反序列化环境 <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency>什么是c3p0C3P0是一个开源的原创 2022-03-01 16:12:58 · 667 阅读 · 1 评论 -
[Java安全]绕过高版本JDK的JNDI注入学习
[Java安全]绕过高版本JDK的JNDI注入学习前言接近2个月没有更新博客了,并不是自己在学什么东西,而是玩了整个寒假。。。因为去年的一些事情,导致现在的自己很颓废,但是毕竟是开学了,还是要慢慢学习了。基本方法找到一个受害者本地CLASSPATH中的类作为恶意的Reference Factory工厂类,并利用这个本地的Factory类执行命令。利用LDAP直接返回一个恶意的序列化对象,JNDI注入依然会对该对象进行反序列化操作,利用反序列化Gadget完成命令执行。这两种方式都非常依赖受害原创 2022-03-01 14:34:25 · 943 阅读 · 1 评论 -
Tomcat Filter内存马
前言之前学了flask的内存马,一直都想学学Java的内存马,所以就学了Tomcat Filter内存马,感觉还是太菜了呜呜呜好难看不太懂。最近学Java写下的文章都不太想发出来了,因为自己本身就没搞懂,都是迷迷糊糊的,看着各种文章上面说是怎么怎么样,然后分析了一波,给出了POC和结论,我是除了会用POC其他一点都没看太懂,只能说自己还是太菜了呜呜呜。主要跟着天下大木头师傅的文章进行学习。POC注意命令执行那里放的是windows的,linux用注释里面的。<%@ page import="原创 2021-11-02 22:29:22 · 779 阅读 · 1 评论 -
[红明谷CTF 2021]JavaWeb
前言在复现强网拟态的那题Java,原来是今年红明谷的原题,所以到buuctf上复现了一下,熟悉一下攻击的流程,之后学习具体的技术细节。WP首先进入页面一看到那个500页面就知道是Spring或者SpringBoot了(还是不太了解,之后再去好好学学)。访问/login会提示/json,再访问/json又会302返回/login,很明显是需要登录得了,传点东西:username=1&password=1提示登录失败,但是cookie里带了rememberMe=deleteMe;,是个shi原创 2021-10-30 22:05:27 · 1671 阅读 · 1 评论 -
JDBC反序列化漏洞学习
前言这篇稍微学习一下JDBC反序列化的漏洞原理,不同的版本有些许的区别,但主要就是两种利用方式,主要还是了解其中的原理,后面的POC编写那块看的有点懵,没看太懂,就只能直接用着大师傅们的脚本了。ServerStatusDiffInterceptor利用ServerStatusDiffInterceptor我本地复现用的是: <dependency> <groupId>mysql</groupId> &l原创 2021-10-26 15:25:26 · 1306 阅读 · 0 评论 -
2021长城杯线下 Web-Work 复现
前言最近可以说是有许许多多的事情,各种奇奇怪怪的事情,还有一些别的事情。从7月末开始,一直到10月初,有的事情,也已经,彻底结束了叭。也是时候回到以前的生活,慢慢学习了。长城杯也是一段时间之前的比赛了,当时颜总把源码发我,我没有怎么看题,现在慢慢学习,也把这几个月的时间里错过的东西都慢慢补回来。是一道Java的代码审计题目,是SpringBoot。拿源码在本地搭建出来,弄好数据库之后开始代码审计。Writeup先看一下pom.xml:<?xml version="1.0" encoding原创 2021-10-26 00:00:13 · 989 阅读 · 0 评论 -
[Java安全]XMLDecoder反序列化学习(一)
前言上周五看了GKCTF的babycat那题,接触了XMLDecoder的漏洞,看了几天还是没看太明白。。。太菜了呜呜。。所以这是第一篇,暂时分析到这里,前面的处理XML的流程没看明白,光写篇文章理一下后面的部分。等以后再来填坑了。只是简单的记录自己的调试过程,非常失败,没搞太懂。利用利用就是,写一个这样的xml:<java> <object class="java.lang.ProcessBuilder"> <array class="jav原创 2021-09-07 01:17:00 · 921 阅读 · 2 评论 -
[Java安全]fastjson学习(一)
前言开始学习fastjson,TemplatesImpl利用链让我跟的脑子疼,还是太菜了,断点打到后面整个人都是懵的。初认fastjsonFastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。它关键的方法就是三个:将对象转换成JSON字符串:JSON.toJSONString将JSON字符串转换成对象:JSON.parse原创 2021-09-02 17:15:29 · 841 阅读 · 2 评论 -
[Java安全]JNDI注入学习
前言本来是在学习fastjson,发现用到了JNDI,所以先来学习一下JNDI。原理JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。目录服务是命名服务的一种自然扩展。两者之间的关键差别原创 2021-09-01 20:49:47 · 1132 阅读 · 2 评论 -
[Java反序列化]JDK7u21反序列化链学习
前言开始学习JDK7u21的原生链,和CC链的逻辑比起来难了不少呜呜。版本JDK7u21及其之前都可以。当然这个之前是广义的,因为比如JDK7在更新,不代表JDK6就没有在更新。所以相对来说的可以认为是,JDK7u21这个版本以及之前时间发布的所有Java版本都有问题,之后的JDK6可能在某一段时间仍有问题,具体也不考究了。 <properties> <maven.compiler.source>7</maven.compiler.source&原创 2021-08-30 23:14:14 · 796 阅读 · 2 评论 -
[Java反序列化]Shiro反序列化学习(二)
前言继续《Java安全漫谈》的学习。预备知识之前学习了Commons-BeanUtils1的反序列化链,之所以会学习这个链子,也提到了是因为shiro依赖了它。写个pom.xml的dependency(不用commons-collections): <dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shi原创 2021-08-30 09:50:31 · 470 阅读 · 1 评论 -
[Java反序列化]CommonsBeanutils1利用链学习
前言继续反序列化的学习。预备知识之所以会提到CommonsBeanutils的反序列化链,是因为shiro是依赖commons-beanutils的,当然这是接下来学习的东西的。根据名字就知道,类似Commons-Collections是对集合的封装和补充,commons-beanutils是应用于javabean的工具。至于什么是JavaBean,放一下维基百科的定义,很简单:有一个public的无参数构造函数。属性可以透过get、set、is(可替代get,用在布尔型属性上)方法或遵循特原创 2021-08-29 23:43:59 · 1707 阅读 · 0 评论 -
[Java-sec-code]PathTraversal学习
前言目前JavaWeb刚学到Servlet,看了一下接下来的东西,还剩下一大堆要学,脑子疼,照这种进度看下去得2-3个月才能看到SpringBoot,把SpringBoot看完就正式去全身心Java代审了。不过太浮躁了,暂时还是想学学Java代码审计,正好有个比较适合入门的Java安全项目:Java-sec-code。用SpringBoot写的,把许多的漏洞都给了个demo还有修复。正好我之前稍微接触过SpringBoot,勉强能看得懂,就也稍微跟着这个项目学习一下。其实主要还是长长见识,只是换一种方式看原创 2021-08-29 01:12:08 · 529 阅读 · 0 评论 -
[Java反序列化]CommonsCollections2利用链学习
前言学习自《Java安全漫谈 - 16.commons-collections4与漏洞修复》。学习了一波CC2。学完这个就继续去JavaWeb了。JavaWeb看个1星期就爬取背马原,看概率论了。预备知识之前所分析的CC链都是基于CommonsCollections3.2.1及其之前的版本。去maven仓库搜索一下的话,就会发现存在两个CommonsCollections:一个包名是org.apache.commons.collections4,另外一个是org.apache.commons.co原创 2021-08-28 00:46:48 · 568 阅读 · 1 评论 -
[Java反序列化]Shiro反序列化学习(一)
前言看了点Servlet就回来直接看《Java安全漫谈》了,赶紧学点东西,过几天开学回去背sb马原就学不了了。学习的是**《Java安全漫谈 - 15.TemplatesImpl在Shiro中的利用》**,因为之前刚把TemplatesImpl动态加载字节码还有它的应用CC3给学了,所以学习一下这篇文章。P神主要的还是结合CC6这个通用链,来对1.2.4及其之前的shiro存在的漏洞进行攻击,其中利用TemplatesImpl来对CC6进行改进。我个人感觉其实叫CC3在Shiro的应用更为确切,所以我也原创 2021-08-24 21:35:39 · 2476 阅读 · 1 评论 -
[Java反序列化]CommonsCollections3利用链学习
前言开始CC3链的学习,学完这个之后就暂时不再看Java的反序列化了,先去把JavaWeb给补一下,可能需要1-2个月的时间。再过2个星期开学了还要忙考试的事情,还有课程,还有很多的事情,到时候会更忙,只能趁着现在能多学一点是一点了。所以其实CC链的学习也并不完全,commons-collections4.0的代表链CC2还没有学,不过也不会咕太久,可能接下来哪天JavaWeb学烦了就来看看CC2解解压也是有可能的。分析跟着P神的文章学习很大的好处就是可以很明显的感觉到思考的过程,整个学习的路线是以原创 2021-08-18 14:57:31 · 701 阅读 · 0 评论 -
[Java安全]动态加载字节码学习笔记
前言开始学习P神的《Java安全漫谈 - 13.Java中动态加载字节码的那些方法》。涉及到了很多类加载器的知识,幸好我之前学习过了,因此理解这一块的内容非常的轻松。Java的字节码直接放一下P神的定义:所有能够恢复成一个类并在JVM虚拟机里加 载的字节序列,都在我们的探讨范围内。远程加载class文件建议先好好了解一下类加载器。之前我学习类加载器的时候也学习了:https://blog.csdn.net/rfrder/article/details/119456460直接放代码了:原创 2021-08-17 19:03:59 · 914 阅读 · 4 评论 -
[Java反序列化]CommonsCollections6利用链学习
前言继续跟着P神的《Java安全漫谈》来学习。前面学习了CC1,遇到的问题就是CC1用到了AnnotationInvocationHandler类,但是AnnotationInvocationHandler类的readObject()方法在8u71以后逻辑就发生了改变,不能再利用了,所以需要找一个可以解决高版本Java的利用链。因此也就开始了CC6的学习。CC6解决了高版本Java的限制,而且利用更加通用。总的来说,是在CC5(因为我偶然也学了CC5)的基础上,把前面的链部分又进行了通用性上的拓展。构原创 2021-08-16 18:13:41 · 1023 阅读 · 0 评论 -
[Java反序列化]CommonsCollections5利用链学习
前言奇奇怪怪的就把CC5给看了。在看一个师傅的CC1的文章的时候,发现他写的LazyMap链不太一样,我以为是CC1的新链,然后也学习了一波,然后查了一下发现是CC5。。。环境 <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId>原创 2021-08-16 15:41:56 · 851 阅读 · 0 评论 -
[Java反序列化]CommonsCollections1利用链学习(下)
前言白天学习了CommonsCollections1的TransformedMap链,感觉打开了新世界的大门,所以晚上学习了LazyMap链,感觉也没那么难理解,可能是因为我在看CC链之前已经把基础知识都给过了一遍叭,所以才没那么困难。环境<dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>com原创 2021-08-14 20:31:32 · 449 阅读 · 0 评论 -
[Java反序列化]CommonsCollections1利用链学习(上)
前言终于快入门了呜呜呜,开始学习CommonsCollections1的TransformedMap链。环境 <dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> &l原创 2021-08-14 15:18:40 · 801 阅读 · 0 评论 -
[Java反序列化]URLDNS链学习
前言经过前期的铺垫,终于要开始了Java反序列化链的学习。按照P神的说法,还是别那么急就从CC链入手,先从这个简单的URLDNS学起,之后再学习CC链。因为是第一次接触Java的反序列化,可能思路和想法之类的可能有不对的地方,也正常叭,就像我看着自己一开始写的文章一样,很多地方理解也都不太对,经过慢慢的学习就会慢慢进步的。ysoserial的URLDNS下载链接:https://github.com/frohoff/ysoserial我对于使用也是没太懂,不过现在还是学习嘛。原来pom.xm原创 2021-08-13 16:28:06 · 758 阅读 · 0 评论 -
Java 序列化和反序列化 学习笔记
前言开始学习Java反序列化的基础知识,主要学习的是Epicccal师傅的文章,总结的很棒。之后就要开始学习URLDNS和Commons-Collections了。希望到时候学习CC链不会卡我太久的时间。争取七夕之前把URLDNS的链可以结束。内容中概念部分主要也是摘录自Epicccal师傅的文章。自己的笔记会忽略掉很多的细节,只记录重要的东西,方便自己查阅,推荐想学习的话,可以把参考链接中的文章都看一遍。Java序列化和反序列化的一些基本概念Java 序列化就是把一个 Java Object原创 2021-08-12 17:06:41 · 635 阅读 · 0 评论 -
Java RMI 学习笔记
前言开始学习一下Java中RMI的相关知识。RMI是我目前为止学起来比较难的一块,主要的原因就是一我没学过计网,对于这种通信相对来说有点陌生,很多文章后面的抓包分析我也看不懂。二就是初学Java,很多东西不了解,也不太懂怎么去看底层的东西。三就是很多文章涉及到了攻击还有反序列化这方面,目前还没接触过,所以也看不太懂。因此目前更多的是了解,关于更多的细节我没有去接触,不好高骛远,等慢慢对Java接触的多了,再回来把这些基础更深入的了解一波。说简单一点就是,目前的学习,是从使用的角度来学习。以后再来从源码分原创 2021-08-11 20:35:56 · 577 阅读 · 0 评论 -
Java JDBC 学习笔记
前言开始JDBC的学习,学习自bilibili的《狂神说Java》,简要记录一下学习的东西,以及学习的过程中产生的疑惑以及通过查阅得到的解答。IDEA导入JDBC驱动的jar包因为还没学maven,只能这样导入jar包。从官网下载mysql的jdbc驱动,里面有mysql-connector-java-5.1.47.jar,我把它拉出来单独放在一个路径下。然后点IDEA里面的project structure:点那个加号,然后选jars...那个,然后把对应的jar包选中,然后点OK就行了。一原创 2021-08-10 16:32:29 · 282 阅读 · 0 评论 -
Java 命令执行 学习笔记
前言开始学习一下Java的命令执行,虽然都是一些很小的知识点,但是还是每个知识点都写篇博客总结一下。考虑到自己刚学Java,很多的东西都不太懂,太多的类没见过,不知道怎么用,很多概念不懂,就连学过的东西也一直在忘,所以这种学习新东西的过程中,我更多的还是把握住,主要的知识点。比如后面的看Runtime的exec方法的调用链,自己也看不懂细节上的东西,只要能把握住,整体的调用链是这样的,就可以了,更加细节的东西,等自己以后慢慢学习的深入了,再慢慢的回头看。RuntimeRuntime类,顾名思义就是运原创 2021-08-09 16:44:30 · 842 阅读 · 0 评论 -
Java 动态代理 学习笔记
前言学习一下Java的动态代理,简要记录一下学习的东西,内容大部分都直接摘抄自参考链接中的文章,将重点摘录了出来,以便遗忘的时候查阅。概念代理模式Java当中最常用的设计模式之一。其特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。而Java的代理机制分为静态代理和动态代理,而这里我们主要重点学习java自带的jdk动态代理机制。静态代理一个例子:package com.javalearn.summer.proxy;pub原创 2021-08-07 13:25:28 · 449 阅读 · 0 评论 -
Java ClassLoader 学习笔记
前言开始学习Java中的ClassLoader。简要的记录一下学习的东西,方便以后忘记的时候翻看。所有内容基本上都摘录自网上的各种教程。ClassLoader简介一个完整的 Java 应用程序由若干个 Java Class 文件组成,当程序在运行时,会通过一个入口函数来调用系统的各个功能,这些功能都被存放在不同的 Class 文件中。因此,系统在运行时经常会调用不同 Class 文件中被定义的方法,如果某个 Class 文件不存在,则系统会抛出 ClassNotFoundException 异常。原创 2021-08-06 15:38:26 · 620 阅读 · 2 评论 -
Java IO流 学习笔记
Java IO流 学习笔记前言开始简单的学习一下Java的IO流,整理一下学习的东西,仅供翻阅和复习方便,学习自廖雪峰的Java教程,内容全部摘抄。简介IO是指Input/Output,即输入和输出。以内存为中心:Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。IO流以byte(字节)为最小单位,因此也称为字节流。在Java中,InputStream代原创 2021-07-15 15:40:13 · 300 阅读 · 0 评论 -
Java集合学习笔记
Java集合学习笔记前言开始学习Java的集合,简要的记录一下学习到的东西,仅供自己查阅和复习方便。学习自廖雪峰的Java教程。集合简介Java标准库自带的java.util包提供了集合类:Collection,它是除Map外所有其他集合类的根接口。Java的java.util包主要提供了以下三种类型的集合:List:一种有序列表的集合,例如,按索引排列的Student的List;Set:一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set;Map:一种通过键值(key-原创 2021-07-13 21:17:40 · 868 阅读 · 1 评论 -
Java反射学习
Java反射学习前言学习一下Java的反射,学习了先知上面的文章还有P神的《Java安全漫谈》,简单的做一下知识点的整理。反射的概念反射是Java的特征之一,是一种间接操作目标对象的机制,核心是JVM在运行状态的时候才动态加载类,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的方法/访问属性。这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制。通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(C原创 2021-07-13 11:40:12 · 540 阅读 · 0 评论 -
Java基础学习笔记(六)
前言学习一下尚硅谷的注解,直接把b站尚硅谷的笔记拿过来了。枚举类暂时先放着,等以后用到了再深入学习一波。注解从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注解)。Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加 载, 运行时被读取, 并执行相应的处理。通过使用 Annotation, 程序员 可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代 码分析工具、开发工具和部署工具可以通过这些补充信息原创 2021-05-28 20:31:14 · 210 阅读 · 0 评论 -
Java基础学习笔记(五)
常用类接下来的内容开始学习尚硅谷的相关视频,记录下笔记(大多数都是直接摘抄B站的尚硅谷视频中的笔记,以便于以后自己的复习)StringString字符串,使用一对""引起来表示。String声明为final的,不可被继承。String实现了Serializable接口:表示字符串是支持序列化的。String实现了Comparable接口:表示String可以比较大小。String内部定义了final char[] value用于存储字符串数据。String代表不可变的字符序列。简称:不可变原创 2021-05-27 19:44:55 · 146 阅读 · 0 评论 -
Java基础学习笔记(四)
异常处理错误异常处理的任务就是将控制权从产生错误的地方转移到能够处理这种情况的错误处理器。在Java中,如果某个方法不能够采用正常的途径完成它的任务,可以通过另外一个路径退出方法。在这种情况下,方法并不返回任何值,而是抛出了一个封装了错误信息的对象。需要注意的是,这个方法将会立刻退出,并不返回正常值。此外,也不会从调用这个方法的代码继续执行,取而代之的是,异常处理机制开始搜索能够处理这种异常状况的异常处理器。异常对象都是派生于Throwable类的一个类实例。如果Java中内置的异常类不能满足需求,原创 2021-05-24 16:28:49 · 347 阅读 · 2 评论