0
点赞
收藏
分享

微信扫一扫

[Java-sec-code学习]path_traversal路径穿越

半秋L 2022-10-31 阅读 111


文章目录

  • ​​前言​​
  • ​​path_traversal​​
  • ​​@RestController​​
  • ​​路径穿越​​
  • ​​修复方法​​

前言

期末考试周了,学了一天密码学,累死了,我的Java也要开始一点
本文章代码来源于Java-sec-code项目

path_traversal

首先我们在​​org/joychou/controller/PathTraversal.java​​​路径下面,首先最上方有一个大大的​​@RestController​

@RestController

这是在​​Spring4​​​之后新加入的注解,原来返回​​json​​​需要​​@ResponseBody​​​和​​@Controller​​配合。

即​​@RestController​​​是​​@ResponseBody​​​和​​@Controller​​的组合注解。

@RestController
public class HelloController {

@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(){
return "hello";
}
}

等价于

@Controller
@ResponseBody
public class HelloController {

@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(){
return "hello";
}
}

路径穿越

首先这里告诉我们利用方法,打过CTF的也知道是啥东西

[Java-sec-code学习]path_traversal路径穿越_spring


将​​filepath​​​参数传入​​getImgBase64​

[Java-sec-code学习]path_traversal路径穿越_spring_02


这里验证其文件存在并且不是目录,之后通过文件流的形式读取并返回到网页

修复方法

这里给了我们一个修复的方法

[Java-sec-code学习]path_traversal路径穿越_java_03


我们来看看这个​​SecurityUtil.pathFilter(filepath)​​函数,

逻辑很简单,首先是判断有无​​%​​​,有则执行url解码,之后常规的防止路径穿越的方式过滤​​..​​​与​​/​​即可

[Java-sec-code学习]path_traversal路径穿越_java_04


举报

相关推荐

0 条评论