文件上传(bugku)

目录

题目: Flask-File Upload

详解:

    (1)什么是Flask?

(2)代码分析:


题目: Flask-File Upload

先查看源代码

<html>
<head>
  <title>File Upload</title>
</head>
<body>
    <form action="/uploader" method="POST" enctype="multipart/form-data">
        <input type="file" name="file" accept=".jpg,.png" />   #上传的文件类型为file,只接受jpg和png
        <input type="submit" />
    </form>
<!-- Give me the file, and I will return the Running results by python to you! -->
# 给我一个文件,我将用Python返回你运行的结果
</body>
</html>

用pycharm来做作,新建一个目录,然后输入:

import os
os.system('ls / ')

查找该目录下的文件,并该后缀名为jpg或png,后上传

查看源代码

修改一下代码

修改文件后缀名为jpg或png,上传之后查看源码即可得到flag


详解:

    (1)什么是Flask?

          Flask是一个较小的Python web框架,只提供了一个强劲的核心,其他的功能都需要使用拓展来实现。意味着可以根据自己的需求量身打造,一般来说就是利用它来搭建网站。Flask的核心组件包括Werkzeug,一个WSGI工具箱,以及Jinja2,一个模板引擎。Flask使用BSD授权,这意味着它遵循开源许可证,允许用户自由地使用、修改和分发

       分析:

       首先对于这个有flask构建的web文件上传程序,其中包含了一个文件上传的端点 /uploader。当客户端通过 POST 请求发送文件到 /uploader 时,服务器会检查是否有文件被上传,然后将文件保存到指定的上传文件夹中。在文件保存后,os.system(' ls /') 这行代码被执行,它会在服务器上执行 ls / 命令,列出根目录下的所有文件和文件夹


(2)代码分析:

import os  # 导入os模块

os是operation system 的缩写,翻译为操作系统;

os模块的功能:文件的目录、路径的操作;进程管理;环境参数的设置;

os.getcwd 获得当前工作路径

os system() 是os模块最基本的方法,system()可将字符串转化成命令行在服务器上运行,每条system()在执行时,会创建一个子进程在系统上执行命令行,子进程的结果无法影响主进程

(3)文件上传漏洞:

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传” 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

     

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值