
代码
文章平均质量分 91
代码学习
dayouziei
去尝试一直没做的事
展开
-
java原生反序列化利用链7u21的学习
在之前的反序列化利用链学习中,前提条件都用到了第三方库,那么如果不利用第三方类库,是否能进行反序列化利用链呢?答案是可以的,那就是 JDK7u21, 但是它适用于 java 7u21及之前的版本。所以使用这条利用链,需要将项目版本设置为 7u21。原创 2024-12-02 21:00:00 · 1016 阅读 · 0 评论 -
CommonsBeanutils与Shiro发序列化利用的学习
前面的学习中,过了一遍cc1-cc7的利用链,在CC2的利用链中,学习了 java.util.PriorityQueue,它在Java中是一个优先队列,队列中每一个元素都有自己的优先级。在反序列化这个对象时,为了保证队列顺序,会进行重排序的操作,而排序会进行比较,进而执行 java.util.Comparator 接口的 compare()方法。那么,后续我们可以继续学习下其他利用 java.util.Comparator 对象。原创 2024-11-20 19:30:00 · 1054 阅读 · 0 评论 -
Java反序列化之CommonsCollections4、5、7 链的学习
前面的文章中,基本把CC链的关键部分学习的差不多了,利用过程也是比较清晰了,接下来把 CommonsCollections 4、5、7 利用链学习下,扩展下思路。原创 2024-11-13 22:30:00 · 667 阅读 · 0 评论 -
Java反序列化之CommonsCollections2链的学习
Apache Commons Collections 是一个著名的辅助开发库,包含了一些Java中没有的数据结构和辅助方法,不过随着Java 9 以后的版本中原生库功能的丰富,以及反序列化漏洞的影响,它也在逐渐被升级或替代。可⻅,groupId和artifactId都变了。前者是Commons Collections⽼的版本包,当时版本号是3.2.1;后 者是官⽅在2013年推出的4版本,当时版本号是4.0。原创 2024-11-11 22:00:00 · 952 阅读 · 0 评论 -
TemplatesImpl 在Shiro中的利用链学习1
在前面的学习中,我们学习了CC1、CC6链,其中CC1链受限于Java8u71版本,而CC6则是通杀的利用链;后来又将 TemplateImpl 融入到 CommonsCollections 利用链中,绕过了不能使用的限制,转用构造了CC3利用链,一样可以执行任意Java字节码;同时通过 TemplatesImpl 构造的利用链,理论上可以执行任意java代码,这是一种非常通用的代码执行漏洞,不受到对于链的限制,特别是内存马逐渐流行以后,执行任意 java代码的需求就更加浓烈了。原创 2024-11-11 19:30:00 · 1468 阅读 · 0 评论 -
java反序列化学习之CommonCollections3利用链的学习
在前文中,我们学习了Java的类加载过程,类加载器以及Java中加载字节码的一些方法,其中介绍了TemplatesImpl,TemplatesImpl是一个可以加载字节码的类,通过调用其newTransformer()方法,即可执行这段字节码的类构造器。那么,在反序列化的漏洞,能否利用这个特性执行任意代码呢?原创 2024-11-08 19:00:00 · 693 阅读 · 0 评论 -
java的类加载机制的学习
简单说Java字节码就是 .class 后缀的文件,里面存在Java虚拟机执行的命令。由于Java是一门跨平台的编译型语言,所以可以适用于不同的平台,不同CPU的计算机,开发者只需要将自己的代码编译一次,就可以运行在不同平台的JVM中。甚至,开发者可以用类似Scala、Kotlin这样的语言编写代码,只要你的编译器能够将代码编译成 .class 文件,都可以在JVM虚拟机中运行。当然也可以理解的更广义一些--- 所有能够恢复成一个类并在JVM虚拟机里加载的字节序列。原创 2024-11-07 22:37:36 · 895 阅读 · 0 评论 -
java学习之zip炸弹攻击
Zip炸弹是一种特殊类型的Zip文件,它包含了大量的无用数据。Zip文件格式允许使用压缩算法来减小文件的大小,但是如果Zip文件中的某些内容被重复压缩,就会导致文件大小急剧增加。Zip炸弹利用这个特性,将一些无用的数据多次压缩到一个Zip文件中,从而生成一个极其庞大的文件。当服务器尝试解压缩这个Zip文件时,它需要解压缩所有的内容。由于Zip炸弹中包含了大量的重复数据,这可能会导致服务器耗尽所有的内存和CPU资源,从而导致服务器崩溃或拒绝服务攻击。原创 2024-05-13 10:45:53 · 2590 阅读 · 0 评论 -
java序列化和反序列化基础学习
(1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程;(2)**序列化:**对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了Java对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建。原创 2024-04-30 14:07:22 · 1118 阅读 · 2 评论 -
java反序列化之URLDNS链学习
1、Java 序列化是指把 Java 对象转换为字节序列的过程。ObjectOutputStream类的 writeObject() 方法可以实现序列化。2、Java 反序列化是指把字节序列恢复为 Java 对象的过程。ObjectInputStream 类的 readObject() 方法用于反序列化。原创 2024-04-25 18:11:27 · 1148 阅读 · 2 评论 -
gorm库的Find方法引发的问题
笔者在学习一个项目时,有一个登录需求,在登录时需要判断用户是否存在,特引入了Find方法做查询,然后根据返回值做判断,没想到因为Find的特性,导致判断存在问题,不管用户名是否存在,都会返回一个user实例,导致登录逻辑出错。原创 2023-10-07 16:19:30 · 1121 阅读 · 0 评论 -
用go实现http服务端和请求端
本文旨在学习记录下如何用go实现建立一个http服务器,同时构造一个专用格式的http客户端。原创 2023-09-25 14:53:32 · 1396 阅读 · 0 评论 -
icmp报文及用go实现
因特网控制报文协议ICMP(Internet Control Message Protocol)是一个差错报告机制,是TCP/IP协议簇中的一个重要子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。ICMP的功能是检错而不是纠错。原创 2023-09-12 11:02:44 · 1311 阅读 · 1 评论 -
浅记 ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
近来在学习代码的时候会涉及到创建数据库,但是代码一运行,就开始给我反馈上述报错”ERROR 1071 (42000): Specified key was too long;max key length is 1000 bytes“,这里浅记一下原由。原创 2023-08-18 11:32:47 · 2586 阅读 · 0 评论 -
铁人下载系统审计学习
近来在开始学习java的代码审计,故决定审计一波经典的铁人下载系统,安装过程这里就省略了,源码里有安装教程。原创 2023-08-14 11:10:43 · 182 阅读 · 0 评论