栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

山东大学软件学院项目实训-创新实训-网络安全靶场实验平台(十六)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

山东大学软件学院项目实训-创新实训-网络安全靶场实验平台(十六)

目录

一、什么是目录遍历漏洞?

二、后端实现

三、前端代码

四、效果图


前言:本篇博客主要记录目录遍历漏洞的实现。

一、什么是目录遍历漏洞?

目录遍历(也称为文件路径遍历)是一个Web安全漏洞,它使攻击者可以读取运行应用程序的服务器上的任意文件。这可能包括应用程序代码和数据,后端系统的凭据以及敏感的操作系统文件。在某些情况下,攻击者可能能够写入服务器上的任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器。

我做的目录遍历是针对图片浏览的,并将浏览文件先进行加密再展示出来。增加了做题难度。

并将flag写入图片,供做题者寻找。


二、后端实现

后端代码如下所示:

@RestController
public class PathTravelController {

    @Autowired
    DataSource dataSource;
    public String sql;

    @RequestMapping("/pathtravel")
    public Result pathtravel(@RequestParam("username") String username)
            throws IOException {

                // 获取BufferedImage对象
                BufferedImage image = createImage(flag);
                File file = new File("vue/src/assets/img/bugimg/pathtravel/flag");
                String fileName = "flag.jpg";
                File jpgFile = new File(file,fileName);
                if(!jpgFile.exists()) {
                    jpgFile.createNewFile();
                }
                // 创建图片输出流对象,基于文件对象
                ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(jpgFile);
                // 写入
                ImageIO.write(image,"jpg",imageOutputStream);
                // 关闭流
                imageOutputStream.close();
                System.out.println("图片写入完成,请查看!");
            }

            rs.close();
            connection.close();

        } catch (SQLException e) {
            System.out.println("输入内容错误,数据库查询错误 in flag");
            System.out.println(e.toString());
            //return "输入内容错误,数据库查询错误";
        }

        return Result.success();
    }

}

将字符串转换为BufferedImage对象

将字符串写入图片的代码如下:

    
    public static BufferedImage createImage(String str) {
        // 设置背景宽高
        int width = 1000, height = 400;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        // 获取图形上下文对象
        Graphics graphics = image.getGraphics();
        // 填充
        graphics.fillRect(0, 0, width, height);
        // 设定字体大小及样式
        graphics.setFont(new Font("宋体", Font.BOLD,34));
        // 字体颜色
        graphics.setColor(Color.BLUE);
            // 描绘字符串
            graphics.drawString(str, 100,  100 );
        graphics.dispose();
        return image;
    }

三、前端代码

前端Vue界面代码如下:

四、效果图

为了避免将做题步骤展示出来,仅将靶场界面展示如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/956151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号