前言该比赛笔者并未参加,只是赛后默默自己复现着做
感谢比赛方伟大的开源:https://github.com/ZeroDaysCTF/ZeroDaysCTF_2025_Public
JohnAndMarys最主要的文件便是app.py,里面着重看下面这个函数
1234567891011121314151617181920@app.route('/order', methods=['GET','POST'])def order(): if request.method != 'POST': return redirect("/") sess_id = session.get('session_id') whiskey_limit = session_data[sess_id].get('whiskey_limit') time.sleep(1) order = request.json order[ ...
引用https://blog.hackpax.top/Java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E5%B7%A5%E5%85%B7%E5%88%A9%E7%94%A8%E7%AF%8702-codeql/
CodeQL概念CodeQL是一个免费开源的代码语义分析引擎,其利用QL语言对代码、执行流程等进行“查询”,以此实现对代码的安全性白盒审计,进行漏洞挖掘。
简单来说,CodeQL是一个把需要审计的项目先转化成类似数据库的形式,并基于该database进行分析的工具。
搭建1.下载CodeQL引擎https://github.com/github/codeql-cli-binaries/releases/latest/download/codeql.zip
先把该引擎配到环境变量,方便执行CodeQL语句。CodeQL配置环境变量只要把其根目录配进去就完事了,结果如下即可:
2.下载SDK:https://codeload.github.com/github/codeql/zip/refs/heads/main
我们之后要在该SDK下面写ql语 ...
java反序列化
未读引用WebDog必学的JDBC反序列化
JDBC反序列化漏洞分析
小白看得懂的MySQL JDBC 反序列化漏洞分析
Java安全之JDBC Attacks学习记录
JDBC简介BC(Java DataBase Connectivity)是一种用于执行Sql语句的Java Api,即Java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,可以为多种关系数据库提供统一访问,提供了诸如查询和更新数据库中数据的方法,是Java访问数据库的标准规范。简单理解为链接数据库、对数据库操作都需要通过jdbc来实现
原理分析简单demo首先我们先在maven引入依赖
12345<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency>
我们试着用jdbc来查询一下我们自己本机上的表
12345678 ...
前言看着这题目jar包有接近40Mb的时候就直接决定先去学下tabby的简单使用,由于学业影响和自己配置过程中遭遇了许多莫名其妙的报错导致花了三天才结束
开始做题,解题过程中发现其实不需要tabby,心有点痛(虽说这工具早晚都要学。。。)
题解先自己本地根据jar包搭了个环境以便进行调试
大概过了一下比较重要的文件,首先就是backdoor.class文件,里面重要的点是给了我们一个/read路由
12345678910111213141516171819202122@RequestMapping({"/read"}) public String read(@RequestBody String body) { if (body != null) { try { byte[] data = Base64.getDecoder().decode(body); String temp = new String( ...
前言原本没想着这么早就开学tabby,但由于学长发了个java题目来锻炼锻炼我的能力,一开压缩包我了个豆40MB,自己审计不知道要审到猴年马月,做ctf讲究一个效率,所以毅然决然来开tabby
(没想到开了三天才结束。。。)
环境搭建tabby配置(截至到2025.3.24,tabby最新版本为v2.0.0)
tabby需要的java版本为17,所以请先把自己电脑里面系统环境变量中的java版本改为17
在项目地址:https://github.com/wh1t3p1g/tabby的release下载下最新的tabby,如果出问题了可以pull一份源码自己本地用gradle编译一下(注意gradle使用的jdk环境也得是至少17)
一个编译打包好的tabby目录结构应该如下:
1234567891011121314151617181920$ tree.├── cases # 用于放置待分析的项目,可以是单个文件,也可以是目录│ └── commons-collections-3.2.1.jar├── config # 用于放置配置文件│ ├── db.properties ...
java反序列化
未读引用Java安全学习——ROME反序列化
Java反序列化之Rome
什么是ROMEROME 是一个可以兼容多种格式的 feeds 解析器,可以从一种格式转换成另一种格式,也可返回指定格式或 Java 对象。ROME 兼容了 RSS (0.90, 0.91, 0.92, 0.93, 0.94, 1.0, 2.0), Atom 0.3 以及 Atom 1.0 feeds 格式。
Rome 提供了 ToStringBean 这个类,提供深入的 toString 方法对JavaBean进行操作
依赖1234567<dependencies> <dependency> <groupId>rome</groupId> <artifactId>rome</artifactId> <version>1.0</version> </dependency></dependencies>
典型gadget我们看yso中链子是怎么写的 ...
java反序列化
未读引用Java反序列化之Hessian
Java安全之Hessian反序列化
Hessian协议Hessian是一个基于RPC的高性能二进制远程传输协议,官方对Java、Flash/Flex、Python、C++、.NET C#等多种语言都进行了实现,并且Hessian一般通过Web Service提供服务。在Java中,Hessian的使用方法非常简单,它使用Java语言接口定义了远程对象,并通过序列化和反序列化将对象转为Hessian二进制格式进行传输
对于 Hessian2 协议,Java 的HashMap对象经过序列化后首位字节由M变为了H,对应 ascii 码 72,其他的区别不大
项目中加入依赖
12345<dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>4.0.63</version></dependency>
基础使用序列化123 ...
java反序列化
未读hibernate1hibernate>=5导入依赖12345<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.15.Final</version></dependency>
分析先看一手yso中的gadget
12345678910/** * org.hibernate.property.access.spi.GetterMethodImpl.get() * org.hibernate.tuple.component.AbstractComponentTuplizer.getPropertyValue() * org.hibernate.type.ComponentType.getPropertyValue(C) * org.hibernate.type.ComponentType.getHashCode() ...
java反序列化
未读引用深入浅出解析Jackson反序列化
前言jackson相关基础知识这里就不赘述了,可参看引用
逻辑跟fastjson差不多
jackson简单使用依赖
1234567891011121314151617<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</ ...
java反序列化
未读引用fastjson
FastJson<=1.2.68RCE原理详细分析
fastjson 1.2.80 漏洞浅析及利用payload
FastJson与原生反序列化
FastJson与原生反序列化(二)
前言maven依赖:https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.24
12345<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version></dependency>
FastJSON 在序列化时,利用 Java 的反射机制,通过调用 JavaBean 的 getter 方法获取属性值。
在反序列化时,FastJSON 通过无参构造方法创建对象,并利用 setter 方法设置属性值
基础流程分析JSONObject是一个Map类
12 ...