自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(136)
  • 收藏
  • 关注

转载 [Java反序列化]—SnakeYaml反序列化

SnakeYaml是一个完整的YAML1.1规范Processor,用于解析YAML,序列化以及反序列化,支持UTF-8/UTF-16,支持Java对象的序列化/反序列化,支持所有YAML定义的类型。题目中添加了添加authc拦截器,/admin/*的请求会被拦截,但存在绕过如/admin/*/后边加个斜杠"\",即可绕过,所以访问/admin/hello/即可。,首先获取要调用的类名也就是SPI1,通过反射获取该类,接着通过newInstance进行实例化,并retrun返回。

2022-11-20 12:36:56 2213 2

原创 Windows 2012 Server VMtools安装过程

Windows 2012 Server自身存在一些bug,安装vmtools时遇到了很多问题,做一个简单记录。

2022-11-13 22:50:56 2264 4

原创 [Java反序列化]—Jackson反序列化

DefaultTyping类型描述说明属性的类型为Object属性的类型为Object、Interface、AbstractClass属性的类型为Object、Interface、AbstractClass、ArrayNON_FINAL所有除了声明为final之外的属性其实原理上很简单,就是在Jackson进行反序列化时执行了构造器和setter方法,造成恶意代码执行,但其实这种方式也只是本地调试了解原理用,并不适合作为实际攻击方式,真正的攻击还要看其它Jackson的调用链。

2022-11-12 00:29:10 6885

转载 [Java反序列化]—C3P0反序列化

文章首发于先知社区:https://xz.aliyun.com/t/11830

2022-11-11 13:44:40 1449

原创 [HECTF 2022]—Web WirteUp

HECTF 2022

2022-11-08 23:21:00 777

原创 [Java代码审计]—文件上传漏洞

multipart/form-data这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。可以与equlas对比来看,s1和s2只有大小写不同,如果用equals则返回false,equalsIgnoreCase返回true。上述都是no waf的文件上传方式,若不做任何防御的情况下,可以实现任意文件上传,造成文件上传漏洞。可以将图片存放到不可访问的路径,例如:Servlet的WEB-INF下,默认情况是访问不到的。通过上述任意方法,上传jsp马。

2022-11-05 10:16:00 4257 1

原创 [祥云杯 2022]ezjava

比赛中卡在了内存马上,了解完Controller和Interceptor内存马后,再来复现一下。

2022-11-04 09:26:13 1106 1

原创 [Java安全]—Interceptor内存马

Interceptor内存马

2022-11-03 12:28:22 468

原创 [Java安全]—Controller内存马

Controller内存马

2022-11-02 08:42:49 635

原创 [Java基础]—I/O流

顾名思义处理字符的,所以只能处理文本文件,对于非文本文件只能用字节流的方式。其中fis.read()是指一次读取一位字母的ascii码,所以使用时应该通过循环+char转型的方式逐位读取。但是如果用fis.read(byte[] b)的方式,则是将数据存入b中。缓冲流相对于给前边节点流的方式又进行了一层封装,开发中效率更高。不同分为:字节流(8bit)、字符流(16bit)通过FileReader()获取的,也就是字符流。获取的,也就是字节流,明显这时候如果再用。不同分为:输入流、输出流。

2022-10-31 21:58:39 707 2

原创 SpringBoot 基础配置

需要通过@ConfigurationProperties(“datasource”)来获取配置文件的属性。通过Environment类型数据,并集合getProperty即可。此时就可以直接运行了,若想设置端口可以添加配置文件。定义mydataSource类的数据并输出。配置时可以勾选所需要的依赖。的方式引用定义的属性。

2022-10-29 21:13:28 323

原创 [SSM框架]—SpringMVC

SSM最后一节—SpringMVC之前就已经了解过PHP的MVC模式,现在是Spring,原理上都是想通的,所以就不记MVC介绍了PHP MVC框架初探_Sentiment.的博客-CSDN博客_phpmvc框架打包方式改成war,会自动生成web模块依赖web.xmlurl-patten中/和/*的区别:创建配置文件配置文件的命名规则:±servlet.xmlSpringMVC-servlet.xml测试HelloWorld启动一个tomcat环境,默认路径设为/SpringMVC@Reques

2022-10-19 15:04:27 1258

原创 [JavaWeb]——三大组件

AddServlet.javaadd.htmlweb.xml单击添加,添加成功前边添加数据时,其实遇到一些问题,当添加中文名称时会出现乱码的情况,所以需要手动设置一下编码格式设置成UTF-8即可GETGET方式麻烦一些,由于tomcat默认使用的是ISO-8859-1编码,所以需要先获取此编码的字节,之后再转换成UTF-8继承关系继承关系相关方法javax.servlet.Servlet接口:javax.servlet.GenericServlet抽象类:javax.servlet.ht

2022-10-10 09:11:54 1330 4

转载 [Java安全]—Spring4Shell

最近一直在学Java开发补基础,好久没看安全了,正好才学完Spring,所以接着了解了一下自动绑定问题 —— Spring4shell。

2022-10-09 15:45:12 1309

原创 [JavaWeb]—前端篇

标签作用测试效果标签作用测试效果测试效果标签样式表类样式表ID样式表ID样式 尽量保持唯一不要重复使用位置分类嵌入式样式表优先级下边两种样式内部样式表外部样式表从外部调用样式测试也可以用外部样式,将style标签以及包含的内容换成外部链接即可border 边框通过border属性可以对边框各属性进行设置可以通过一个border属性设置各属性值若只想对其中一遍设置可以用border-top/left/right//bottommargin 间距通过margin属性可以对各边进行间距

2022-10-02 15:38:11 1658 3

原创 [Java安全]—Mybatis注入

Mybatis注入留在了Spring后,因为感觉用Spring搭建web端后再进行注入比较贴合实际一些。

2022-09-30 09:24:12 2721

原创 [SSM框架]—Spring入门

IOC:是一种把对象的创建和对象之间的调用过程,交给spring管理,从而减低耦合度的一种面向对象的设计方式DI:是ioc的另一种表表达形式;即组件以一些预先定义好的方式(例如:setter方法)接收来自于容器的资源注入。相对于ioc而言,这种表述更直接简单地说IOC就是一种反转控制的思想,而DI是对IOC的一种具体实现spring的ioc容器就是ioc思想的一个落地产品的实现。ioc容器中管理的组件叫做bean。在创建bean之前,首先需要创建ioc容器。spring提供了ioc容器的两种实现方式Bean

2022-09-26 00:09:10 634 2

原创 SSM练习

每个周上课都布置个作业,正好当做练习题做一个记录。

2022-09-24 15:08:00 2272

原创 Docker进阶篇

接上篇,继续学习docker进阶一些的内容。

2022-09-23 08:45:58 2338

原创 Docker基础篇

查看docker中的所有网络。

2022-09-22 14:55:12 2875 3

原创 [SSM框架]—Mybatis入门

Releases · mybatis/mybatis-3 (github.com)apache-maven:Maven – Download Apache MavenMySQL版本:MySQL 5.7MyBatis 版本: MyBatis 3.5.10设置好maven选项新建个maven项目,修改打包方式:jar ,pom.xml加上即可依赖创建个数据库在resources中创建核心文件mysq

2022-09-12 14:01:57 3812 2

转载 [Java安全]—Agent内存马

在JVM中运行中,类是通过classLoader加载.class文件进行生成的。在类加载.class文件生成对应的类对象之前,我们可以通过修改.class文件内容,达到修改类的目的。而在 jdk 1.5之后引入了 java.lang.instrument 包,通过 java.lang.instrument 提供的对字节码进行操作的一系列api,而使用这些api开发出的程序就可以称之为java agent。agent内存马就是利用上述特性修改特定的类或者方法,从而实现恶意方法的注入。Ja...

2022-08-17 18:35:11 4009 1

原创 [Java安全]—Tomcat Servlet内存马

浅学下Servlet内存马

2022-07-24 19:59:27 1522

转载 [Java安全]—Tomcat Filter内存马

Servlet 有自己的过滤器filter,可以通过自定义的过滤器,来对用户的请求进行拦截等操作。经过 filter 之后才会到 Servlet ,那么如果我们动态创建一个 filter 并且将其放在最前面,我们的 filter 就会最先执行,当我们在 filter 中添加恶意代码,就会进行命令执行,这样也就成为了一个内存 Webshell,所以就需要我们想办法在最前方注册一个恶意的filter并执行。先看一个正常的demofilter.java运行后成功触发之后再看几个会用到的类:接下来我们来分析一下

2022-07-17 12:32:18 3509

原创 [Java安全]—Tomcat Listener内存马

内存马,也被称为无文件马,是无文件攻击的一种常用手段。而无文件攻击呢顾名思义就是不利用shell文件进行攻击,但这里的无文件并不是真的意义上的“无文件”,而是一种攻击思路,是将恶意文件内容以脚本形式存在计算机中的内存、注册表子项目中或者利用系统合法工具以逃避安全检测的方法。servlet-api类○ listener型○ filter型○ servlet型spring类○ 拦截器○ controller型Java Instrumentation类○ agent型顾名思义就是监听器,他能够监听一些事件从而来达

2022-07-14 17:16:06 3290

原创 [Java安全]—weblogic常见漏洞

本来想跟一些T3反序列化的,奈何本地环境怎么都起不起来先复现一下常见漏洞吧。。。Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和 数据库应用的Java应用服务器。Vulhub - Docker-Compose file for vulnerability environment启动环境后访问,进入后台弱口令直接登录weblogic常用弱口令: htt

2022-07-11 08:14:47 3501

原创 [Java安全]—log4j2 rce复现

自漏洞爆出已经半年多了,可当时还是个java啥都不懂的菜鸡所以也没能及时复现,现在捡起来复现下21年席卷整个安全圈的log4j2漏洞log4j 是 javaweb 的日志组件,用来记录 web日志 去指定下载文件的url 在搜索框或者搜索的 url 里面加上${jndi:ldap://127.0.0.1/test} ,log4j 会对这串代码进行表达式解析,给 lookup 传递一个恶意的参数指定,参数指的是比如 ldap 不存在的资源 $ 是会被直接执行的。后面再去指定下载文件的 url,去下载我们的恶意

2022-07-09 11:19:02 1322

转载 [Java安全]—JNDI注入

文章首发于Secin:浅析JNDI注入其实应该先学JNDI再学fastjson的,但是JNDI投稿去了,所以就先发了fastjsonTrail: Java Naming and Directory Interface (The Java™ Tutorials) (oracle.com)The JNDI Tutorial (oracle.com)JNDI (Java Naming and Directory Interface) 是一个应用程序设计的 API,为开发人员提供了查找和访问各种命名和目录服务的通用

2022-07-08 18:57:46 2692 1

原创 [Java安全]—fastjson漏洞利用

这两天要出去就不再学新东西了,正好两点睡不着了,起来学学fastjson弥补一些接下来的内容。Fastjson 组件是阿里巴巴开发的反序列化与序列化组件Fastjson组件在反序列化不可信数据时会导致远程代码执行。究其原因:依赖POJOPOJO 是 Plain OrdinaryJava Object 的缩写,但是它通指没有使用 Entity Beans 的普通 java 对象,可以把 POJO 作为支持业务逻辑的协助类Demo结果:test1可以看到调用时会自动调用对应的其次是若加上,则返回的内容除

2022-07-03 05:22:32 5573 2

转载 Golang爬虫初探

Golang学到协程通信部分后感觉没有那么好理解了,学的初衷就是为了了解一下Go语言并通过ctf进行一个提升,所以以爬虫做个结尾先学到这里吧,后续用到了再回来补。

2022-07-01 15:26:11 3596

原创 [Java反序列化]—Shiro反序列化(三)

前篇通过CC链加载动态字节码进行了代码执行,但这种方式是需要我们自身加入CC依赖的,有很大的局限性。所以本篇就对shiro的原生依赖的利用进行分析在了解前先了解下定义类必是具体的和公共的,并且具有无参数的。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。(大概意思就是必须是一个公开类,并且有无参构造器和对应的、方法)Demo就类似于这种,公开类、有无参构造器、有对应属性的set或、get方法Commons-Beanutils是应用于的工具,他提供了一种

2022-06-29 07:15:11 1731

原创 [Java反序列化]—Shiro反序列化(二)

前篇通过urldns链来检测了shiro550反序列化的存在,本篇就通过CC链来进行shiro的代码执行shiro中默认是没有CC依赖的,所以需要我们自行加上直接用CC6的链来打,提示类加载不到是一个JVM的标记,说明实际上这是一个数组,也就是说不能加载这个。简单看下原因在shiro自定义的中,调用的是,而ois是的实例化跟进下,其中只有一个构造方法和,这个是在java原生反序列化时会调用的一个方法,这里对他进行了重写,retrun返回的是再看下原生类的他return的则是,所以区别也就在这里shiro中

2022-06-28 08:24:20 1691

原创 [Java反序列化]—Shiro反序列化(一)

前篇进行了shiro550的IDEA配置,本篇就来通过urldns链来检测shiro550反序列化的存在Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。那么,Payload产生的过程:命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值在整个漏洞利用过程中,比较重要的是AE

2022-06-27 08:56:46 2872

原创 CTF—Go题目复现

一道Go的模板注入由于没了解过Go的SSTI所以先简单看下:go语言快速入门:template模板 · Golang语言社区 · 看云 (kancloud.cn)Go SSTI初探 | tyskillのBloggo的SSTI漏洞成因与模板语法和jinja2差不多,都用到了,通过{{.}}我们可以获得到作用域Demo当使用{{.}}时,会获取person结构体中的所有属性,所以在经过Execute渲染后,便会输出:除此外若想获取单个属性也可以用结果复现主要有几个路由先看的flagHandler中

2022-06-23 08:29:48 3248

原创 Golang学习笔记—结构体

Go语言没有纯粹的面向对象概念,都是使用结构体、函数等来实现。面相对象编程的一些特性,例如:继承、组合等特性主要是关键字,结构如下::结构体定义关键字:结构体类型名称:结构体定义关键字:成员定义未初始化时,成员都是零值,int—>0,float—>0,bool—>false,string—>nil结果:结构体成员声明与赋值点运算符赋值Demo01结果:键值对赋值除此之外还可以通过键值对赋值匿名结构体如果结构体是临时使用,可以不用起名字,直接使用demo02结果:结构体指针demo0

2022-06-22 09:03:33 534

原创 shiro-550 IDEA环境配置

CC看完了,下面准备学shiro反序列化,在此之前需要进行一些环境配置,感觉还是比较麻烦的,所以做下记录。感谢师傅的文章真的写的很详细:shiro-550 IDEA环境配置_@Demo的博客-CSDN博客_idea搭建shiro首先就是tomcat之前在网刃杯的复现中,配置过所以直接才考一下就可以了。第二届网刃杯部分wp_Sentiment.的博客-CSDN博客之后就是启动了,在tomcat的/bin路径下有个启动就好(乱码是正常现象),会默认开启端口但我这里由于端口被占用了,所以对端口进行了修改,在/co

2022-06-21 11:15:48 3162 1

原创 Golang学习笔记—指针

C的指针一直都没学过,恰巧Golang里边有顺带了解一下。Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无须拷贝数据。区别于C的指针,Golang中指针不能进行偏移和运算两个符号:(取地址)、(根据地址取值)语法指向了一个值的内存地址。类似于变量和常量,在使用指针前需要声明指针。格式:Demo01结果:数组指针语法Demo02结果:也可以通过指针进行地址计算...

2022-06-21 08:45:24 322

原创 Golang学习笔记—函数

Go语言中并没有类(class),所以并不是纯粹的面向对象语言。大多数都是用函数、结构体实现。func:函数由func开始声明function_name:函数名称,函数名和参数列表一起构成了函数签名。[parameter list]:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。return_types:返回类型,函数返回一列值。return_types是该列值的数据类型

2022-06-20 08:44:17 2547

原创 Golang学习笔记—map

map是一种键值对的数据结构容器,map内部实现是哈希表(hash)map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值map是引用类型可以使用内键函数make也可以使用map关键字来声明Demo1m1使用make初始化,m2批量赋值结果:Demo2可以根据索引输出结果:Demo03其实再根据索引赋值时,会产生两个值,一个是值本身,另一个是bool类型的值来判断本索引是否存在索引存在所以返回结果:循环跟数组循环遍历类似,两个值value和key(Goland快捷键)

2022-06-19 07:53:55 1059

原创 Golang学习笔记—切片

切片是Go中重要的数据类型,每个切片对象内部都维护着:数组指针、切片长度、切片容量三个数据。在向切片中追加的数据个数大于容量时,内部会自动扩容且每次扩容都当前容量的2倍(当容量超过1024时每次扩容则只增加1/4容量)三种方式结果:自动扩容Demo1结果:Demo2结果:通过append追加后,v1,v2使用的是同一内存地址,当v1的值改变后v2也会随着改变结果:可以看到值修改了的值,v2的第一位也变成了999append也可以不赋值给其他变量,此时就代表给当前变量追加一个值Demo3

2022-06-18 01:00:02 428

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除