【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=

已经成功复现

相关推荐
2301_780789666 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
砚凝霜6 小时前
保姆级 | CTF 命令执行 system($_POST[‘a‘]):直接传系统命令拿 flag(对比 eval)
web安全·网络安全
Ruiery7 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
星融元asterfusion8 小时前
工业网络升级实战:100G 双轨 Leaf-Spine 架构破解高并发出货网络瓶颈
网络·架构·spine
Da Da 泓8 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
云和数据.ChenGuang9 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
ESDWAN9 小时前
企业网络监控应该监测哪些目标?网关、网络节点还是业务系统?
服务器·网络·php
mennekes10 小时前
临时用电线路标识:插头颜色、钟面标识配套规范
运维·网络·科技·安全·制造
发光小北11 小时前
EtherNet/IP 转 ModbusTCP 网关现场应用中会遇到什么问题?
服务器·网络·tcp/ip
海宇大数据11 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化持牌网络小贷小微商户极速助业贷秒级全维风险决策网关
网络·人工智能·架构·自动化