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

Posted Y4tacker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java-sec-code学习]path_traversal路径穿越相关的知识,希望对你有一定的参考价值。

前言

期末考试周了,学了一天密码学,累死了,我的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解码,之后常规的防止路径穿越的方式过滤../即可
在这里插入图片描述

以上是关于[Java-sec-code学习]path_traversal路径穿越的主要内容,如果未能解决你的问题,请参考以下文章

[Java-sec-code]PathTraversal学习

[Java-sec-code]PathTraversal学习

[Java-sec-code]Java velocity SSTI

[Java-sec-code]SpEL表达式注入

《机器学习实战》-机器学习基础

机器学习系列1-学习资料和学习路线