Von's Blog

Thinking will not overcome fear but action will.

CC6学习

前言 前面我们学习了CC1这条链,并了解了利用TransformedMap和LazyMap的两种利用方法,但我们也提到在Java8u71及以后,由于AnnotationInvocationHandler类的readObject方法逻辑变了,导致CC1实际上失效了;本次我们就来学习CC6,这条链在高版本JDK上仍然可用。阅读本篇文章前建议先阅读之前学习URLDNS和CC1的文章(我感觉CC6...

CC1学习

Apache Commons Collections Apache Commons Collections是一个第三方的基础类库,提供了很多强有力的数据结构类型并且实现了各种集合工具类,可以说是apache开源项目的重要组件。而其经典的反序列化漏洞利用链也是学习java反序列化漏洞绕不开的一环。虽然CC链总共有很多条,但是都是利用了Transformer接口,本次我们先从CC1开始学习了解...

Java反序列化入门

序列化与反序列化 JAVA序列化是将对象转换成字节编码(与php不同,php是转换成字符串,java是转换成字节序列,在二进制层面)以方便在网络上进行传输或存储处理的一种方式,而反序列化则是将这段字节编码重新转换为对象的逆向操作。 序列化与反序列化的过程 我们直接来看实践的例子,假如我定义了一个Student类 import java.io.Serializable; public...

一些编程概念的探讨

写在前面 最近好像挺久没有更新博客了,主要意识到之前那种为了安全而学习安全的方法是错误的。安全的前提还是开发,开发技能不行,安全技能也没办法达到多高的程度,所以最近觉得还是得沉下心来,学习开发技能。 编译型语言与解释型语言 我们知道,计算机实际上只能理解二进制代码,所以我们用各种高级语言写出来的代码,都要经过相关的过程才能转化为机器语言(二进制代码)。解释型语言和编译型语言就是针对这两种不同...

文件包含中几个常用包含目录的记录

超级水文

写在前面 这几次的比赛中常常出现文件包含的相关考题。以前对文件包含的认知和实践只停留在直接包含或者伪协议上,这几次比赛中学到了很多,打算通过几篇文章总结一下。 用户信息 /etc/passwd # 用来记录每个拥有系统访问权的注册用户 /etc/shadow # 密码信息,获取到后可用 John the Ripper 爆破 /root/.bash_histor...

RMI学习

前言 今天就开始具体Java安全的学习了,首先从RMI安全开始,但是由于RMI的不少安全问题都涉及了反序列化的问题,这方面的内容为目前暂未涉足,因此本文只是对RMI入门的第一篇文章啦。 什么是RMI RMI全称为Remote Method Invocation(远程方法调用),是让某个Java虚拟机上的对象调⽤另⼀个Java虚拟机中对象上的⽅法(也即客户端如何调用服务器端的方法)。 ...

无字母数字webshell总结

文章首发于先知社区: https://xz.aliyun.com/t/8107 建议看先知社区的那篇,博客这篇由于Jekyll的某些特性和Latex编译器的一些性质,排版有点不足 写在前面 关于无字母数字Webshell这个话题,可以说是老生常谈了。但是一直以来我都没怎么去系统的研究过这个问题,在这里做一波研究与总结。所谓无字符webshell,其基本原型就是对以下代码的绕过: <?p...

open_basedir绕过

什么是open_basedir Open_basedir是PHP设置中为了防御PHP跨目录进行文件(目录)读写的方法,所有PHP中有关文件读、写的函数都会经过open_basedir的检查。Open_basedir实际上是一些目录的集合,在定义了open_basedir以后,php可以读写的文件、目录都将被限制在这些目录中。 一般情况下,我们最多可以绕过open_basedir的限制对其进行...

如何正确使用Docker出一道CTF题目

写在前面 前几天忙着出minil的题目,Frank要求要用Docker并且要支持动态Flag,看了网上也没有一篇文章彻底详细的讲解这个过程,鼓捣了好久才搞明白的,于是写一篇文章记录一下这个过程,也让后来的出题人可以学习一下不用走那么长的弯路。 在之前的内容中,我们已经学习了Docker的基本用法,但当时我们构建的题目,都只能在一个固定的端口上使用,如果我们要实现像每个用户分配一个动态容器,还...

Java基础学习(三)

内部类 内部类顾名思义,就是一个类当中包含另一个类,包含成员内部类和局部内部类。 成员内部类 成员内部类的定义格式为: 修饰符 class 外部类名称{ 修饰符 class 内部类名称{ } } 内部类可以任意调用外部类的属性和方法,而外部类如果要使用内部类的属性和方法,必须要借助于内部类对象。 假如在一个类C1中编写了一个内部类C2,在编译的时候,会生成两...