文章目录
- 前言
- 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的也知道是啥东西
将filepath
参数传入getImgBase64
这里验证其文件存在并且不是目录,之后通过文件流的形式读取并返回到网页
修复方法
这里给了我们一个修复的方法
我们来看看这个SecurityUtil.pathFilter(filepath)
函数,
逻辑很简单,首先是判断有无%
,有则执行url解码,之后常规的防止路径穿越的方式过滤..
与/
即可