【springrce】

Spring动态参数绑定

自动赋值的调用链路:

复制代码
Contry.getProvince()
  - Province.getCity()
    - City.getDistrict()
      -- District.setDistrictName()

PropertyDescriptor

JDK自带

Java Bean PropertyDescriptor

作用:自动调用类对象的getXXX/setXXX方法,进行取值和赋值

BeanWrapperImpl

Spring自带

BeanWrapperImpl

作用:对Spring容器中管理的对象,自动调用get/set方法,进行取值和赋值

access_log属性

server.xml

org.apache.catalina.valves.AccessLogValve 对象

  • directory: access_log文件输出目录

  • prefix: access_log文件名前缀

  • suffix: access_log文件名后缀

  • pattern: access_log文件内容格式

  • fileDateFormat: access_log文件名日期后缀,默认为.yyyy-MM-dd

mvn clean package打包

在本机找到war包

粘贴到这个路径,并改名为ROOT.war,到bin目录下点击startup.bat启动tomcat,可以看到webapps下生成了ROOT文件夹

根据spring的文件内容访问文件

java 复制代码
package com.wuya.controller;

import com.wuya.bean.addr.Country;
import com.wuya.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**
 * 参数自动绑定方式,可以直接将HTTP参数的值赋值到对象属性中,而且支持多级
 */
@Controller
public class UserController {
    /**
     * 测试地址:http://localhost:8083/addUser?name=wuya&department.name=sec
     */
    @RequestMapping("/addUser")
    public @ResponseBody String addUser(User user) {
        System.out.println("HTTP参数自动赋值给对象属性:"+user.getName()+"----"+user.getDepartment().getName());
        return "test OK -- wuya";
    }

    /**
     * 测试地址:http://localhost:8083/addAddr?name=cn&province.city.district.name=yuelu
     */
    @RequestMapping("/addAddr")
    public @ResponseBody String addAddr(Country country) {
        System.out.println("HTTP参数自动赋值给对象属性(多级):"+country.getProvince().getCity().getDistrict().getName());
        return "multi test -- wuya";
    }
}

访问http://localhost:8083/addAddr?name=cn&province.city.district.name=yuelu

IDE 控制台会把 URL 里的请求参数,映射到接口方法入参(Country对象)的多级属性中,最终通过getter方法拿到了赋值后的属性值并打印出来yuelu

双击startup.bat启动tomcat。
ROOT.war会自动解压为ROOT文件夹。

访问:http://localhost:7299/addUser,能打开代表服务启动正常

启动exploit脚本,会看到ROOT下生成jsp文件

访问http://localhost:8083/wuya.jsp?cmd=

已经成功复现

相关推荐
Ivanqhz1 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
白猫不黑2 小时前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试
迪康Defender3 小时前
终端安全实战:如何高效解决企业U盘泄密与管控难题
运维·网络·安全·web安全·终端安全管理
网安小学生(兼顾数据库版)4 小时前
固件+软件供应链:ONEKEY+Mend如何实现全链路安全覆盖
网络·安全·web安全
学习中的码虫4 小时前
网络编程5
服务器·网络
GPU实战笔记5 小时前
本地跑不动 llama.cpp,临时租云 GPU 怎么搭?从启动服务到环境复用
java·服务器·网络·人工智能·深度学习·llama
珠海西格电力5 小时前
零碳园区管理系统“智慧大脑”功能对园区运营成本的影响有哪些?
大数据·人工智能·安全·系统架构·能源
发量惊人的中年网工6 小时前
2026年DDoS防护方案怎么选?从攻击响应、清洗位置到成本账单,解析全球高防方案
大数据·网络·安全·ddos
国科安芯6 小时前
抗辐射LDO芯片在星载SAR成像系统中的供电架构应用研究
安全·ldo·成像系统·抗辐射·星载sar
黄昏回响8 小时前
软件工程基础知识(五):软件测试详解(下篇)——现代测试实践与论文指导
网络·其他·软件工程·改行学it