7.8k 19 分钟

# 前言 在这个分类中的前三篇简单的记录了一下 JVM 的运作机制,JVM 的内存划分和内存管理和 JVM 对内存区域的 GC,本篇简单的记录一下类文件结构这块的内容,这篇记录学习完准备再回去再战 Java 反序列化的学习,本篇中所有代码都在 Clown_java/src/main/java/JavaJVM at master・clown-q/Clown_java (github.com) # 类文件结构 Java 选择了将源代码编译为与操作系统和机器指令无关的中立格式,并且通过对应的 JVM 读取和运行这些编译文件来使得代码能够跨平台 # class 文件 前面通过 Javap...
4.7k 12 分钟

# 前言 因为我装双系统误删了我 windows 的引导分区,导致我电脑没法启动(惨惨),因为第一次遇见,浪费了不少时间处理了,好在幸运的是引导修复成功了,也幸好修修好了,不然备份重装可要遭老罪咯。碎碎念就到这里咯,前面将内存管理的部分简单的记录了一下,本篇用以记录 GC 机制的学习,Java 很重要的一块内容,当一个对象需要被释放的时候如何判断一个对象需要被回收?什么时候处理的?JVM 是怎么处理的? 注:本篇中所有代码都在 Clown_java/src/main/java/JavaJVM at master・clown-q/Clown_java (github.com) #...
1.3k 3 分钟

# 前言 这个靶机总体上不是很难,主要考察一个信息收集的能力,和经验之谈,最后面的提权也比较简单,所以整体下来大概用了一个半小时的时间,总的来说还是比较有意思的,虽然我到最后也没能利用上哪两个 md5 值来利用一些什么,但是这些信息还是很有必要收集到的 # 搭建过程 这里选着使用 VMware 打开 这里会弹出一个窗口,填写虚拟机名称和虚拟机要存放的路径即可 这里可能会出现硬件检查的警告,这里不用管,直接重试即可 这里就搭建成功了 # 实验过程描述 # 主机存活探测 首先需要我们进行简单的信息收集,这里我选用的是 arp-scan 这个工具来进行主机发现 很显然这里是 148 这个...
7.8k 19 分钟

# 前言 前面学习了 JVM 运行大概的一个流程,经过痛苦的环境配置,也算是勉强开始进入到这块的学习,本篇是学习 Java 内存管理的记录,多是偏记忆的一些东西也比较简单,本篇中所有代码都在 Clown_java/src/main/java/JavaSE at master・clown-q/Clown_java (github.com) # JVM 内存管理 Java 中与 C 不同的是,它不需要我们手动的控制内存,所有的内存管理机制都是由 java 自己来完成的,这给我们带来了极大的便利,但是并不是说这比 C 更好,一旦出现内存泄露等问题 C 可以通过更改代码来快速的修复,而在 java...
10k 25 分钟

# 前言 这个分类还是来补我学习 Java 欠缺的东西,记录一下 java 虚拟机的学习过程,本篇中所有代码都在 Clown_java/src/main/java/JavaSE at master・clown-q/Clown_java (github.com) # 初识 JVM java 有着 “一次编译,到处运行的” 口号,它能做到这样灵活的原因就是因为有 JVM 的作用。(JVM 并不是跨平台的)我们的程序编译后由 JVM 来运行。 这里先看这样一个例子 package JavaJVM;/** * @BelongsProject: study_java * @BelongsPackage:...
18k 45 分钟

# 前言 通过 Buu 平台来复现以往的题目 # MISC # 冰冰好像藏着秘密 下载题目给的附件,发现名字是 FFT,猜测是傅里叶盲水印 这里尝试解压发现很多报错,但是 rar 还是能提取出来文件 这里实际上是 RAR 文件的伪加密,将 84 改为 80 即可 解压后拿到的照片是灰度照片也是更加验证了我们的猜想 import cv2 as cvimport numpy as npimport matplotlib.pyplot as pltimg = cv.imread('FFT.png', 0) #直接读为灰度图像f = np.fft.fft2(img)...
4.9k 12 分钟

# 前言 前面已经写过了 http 的基本内容,本篇简单的记录一下学习 http 走私的内容 # 什么是 HTTP 走私 简单来说,HTTP 的请求包中会带有另一个或者多个 HTTP 请求包。因为在 http1.1 中引入了长连接 keep-alive 与 pipline 的概念,长连接允许多个请求使用同一个 tcp 连接,前置服务器和后端服务器在 http 上面的划分不一致的时候就会导致 HTTP 走私。 # HTTP 走私产生的原因 HTTP 规范提供了两种指定请求结束的位置 Content-Length 头以字节为单位指定消息正文的长度 Transfer-Encoding...
4.6k 12 分钟

# 前言 突然看到这个东西,简单的记录了一下,一些基础的计算机网络原理的知识这里不在记录,毕竟也是比较简单,不太熟悉的可以去翻一下之前写的 Python 网络化编程 Python 网络化编程 - Python | Clown の Blog = (xcu.icu),本篇主要就记录一下,篇幅不会太长 # Socket 连接 网络化编程避不开的一个话题 ---Socket,或许这篇命名为 Socket 比较好,但是因为一些强迫症的小原因,整个分类我还是习惯这样命名,而且 Socket 编程的覆盖面太大,对于本篇更侧重的是使用 java 来实现网络通信 在 java 中对于 Socket...
16k 41 分钟

# 前言 前面的 CC 链暂时就到这了,从本篇开始,就开始 Shiro 反序列化漏洞的学习,以此篇随笔记录我的学习过程以供参考,不是很严谨望见谅,错误的地方希望大师傅们能指出,文章中所涉及的代码都在 github 项目 https://github.com/clown-q/Clown_java 中 学习参考: 《Java 安全漫谈》 # 环境搭建 这里先说一下环境搭建的问题,自己在配置环境的时候也是遇到了一些小问题的,但是其实环境搭建很简单,还是对 javaWeb 不是很熟,后面再慢慢把这块补一补 # 方法一 方法一很简单,可以使用 P 牛搭建好简化版本的项目...
11k 28 分钟

# 前言 上一篇也是吧 CC1 的过程重新分析了一下,第一遍学习可能是因为临近考试,过于浮躁,第二遍给我的收获还是很大的😹,当然决定了要重新看一遍 CC 链也不会只调试 CC1 就结束了,后面的也慢慢补上,这篇就记录 CC6 这条利用链。 # CC6 这条链子其实是为了解决 JDK 高版本无法利用 CC1 的问题,还是先贴一个总的逻辑图 上面的是 CC1 的链子,下面框选中的是 CC6 这条链子,URLDNS+CC1 的结晶无疑了 # 高版本修复 先看一下为什么会说高版本无法利用,其实主要是在 AnnotationInvocationHandler 的 readobject...