BugKu-Web-Flask_FileUpload(模板注入与文件上传)

news/2024/5/20 0:36:34 标签: flask, python, 网络安全, web安全, ctf, SSTI, 服务端

Flask

Flask是一个使用Python编写的轻量级Web应用框架。它是一个微型框架,因为它的核心非常简单,但可以通过扩展来增加其他功能。Flask的核心组件包括Werkzeug,一个WSGI工具箱,以及Jinja2,一个模板引擎。
Flask使用BSD授权,这意味着它遵循开源许可证,允许用户自由地使用、修改和分发。Flask也被称为“microframework”,因为它使用简单的核心,用扩展来增加其他功能。与一些其他框架相比,Flask更加灵活、轻便和安全,而且容易上手。
在开发Web应用程序时,Flask提供了一个构建块,允许开发人员根据需要自由地选择和组合不同的组件。这使得开发人员能够更好地控制应用程序的结构和功能。
Flask没有默认使用的数据库或窗体验证工具,这意味着开发人员需要自行选择这些组件。这为开发人员提供了更大的灵活性,可以根据应用程序的需求选择最适合的组件。
总的来说,Flask是一个轻量级的Web应用框架,具有简单性和灵活性,适合小型团队在短时间内实现功能丰富的中小型网站或Web服务。

题目环境
image.png

模块注入还可以,但是第一次见模块注入与文件上传相结合,我也是感到颇为新奇。

使用burpsuite工具

需要用来发送数据和接收数据

首先编写python脚本文件

python">import os
#调用os模块
os.system('ls /')
#调用os模块中的system外部执行命令,ls / 列出根目录下的所有目录和文件

将次文件命名为png格式

首先使用火狐打开题目
顺便打开burp准备抓包
image.png
image.png
Repeater放包
Send
image.png

OK,到此也是发现了flag的踪迹

查看flag内容
image.png

在数据包里面改外部执行命令
cat /flag 查看f根目录下flag的内容

Send
image.png
拿下flag:
flag{a6264dc026eee12800ee179de0f87807}


http://www.niftyadmin.cn/n/5269850.html

相关文章

Python中的魔力编程:掌握面向对象之道

Python中的面向对象编程 背景: ​ 最近在看一些代码的时候,对类中的一些内置方法不是很懂,因此出一篇文章来细说一下,希望大家看完后对Python中类有一个清楚的认识。 基础铺垫: ​ 面向对象的三个特点:…

14 Vue3中组件的props属性

概述 Let’s look at a simple HelloWorld single-file component. You can find this at ./src/components/HelloWorld.vue, generated automatically when you create a Vue project with Vite. 让我们来看一个简单的 HelloWorld 单文件组件。您可以在 ./src/components/He…

gazebo中手动控制ur5机械臂

创建工作空间 cd ~ mkdir -p catkin_ws/src cd ~/catkin_ws/src 下载代码 ~/catkin_ws/src$ git clone https://github.com/dairal/ur5-joint-position-control.git ~/catkin_ws/src$ cd .. ~/catkin_ws$ catkin_make ~/catkin_ws$ source devel/setup.bash 安装ros-contro…

flink安装

什么是flink flink是一个分布式,高性能,随时可用的以及准确的流处理计算框架, flink可以对无界数据(流处理)和有界数据(批处理)进行有状态计算(flink天生支持状态计算)…

Hudi cleaning-异步操作

参数配置 设置参数,在建表的时候指定: 配置型设定值hoodie.clean.automaticfalsehoodie.clean.asynctruehoodie.cleaner.commits.retained1 建表语句 create table small_file_hudi_cow (id int,name string,age int,city STRING,date_str STRING ) …

JavaScript中while循环语句

循环语句(loop) - 通过循环语句可以让一段代码反复的执行多次 - 循环语句主要两种: while语句(while循环) do-while语句 for语句(for循环) while语句: - 语法: wh…

利用解构来简化Bundle读写

我想所有的Android开发者都接触过类似下面这样的代码: Intent intent getIntent(); Bundle bundle intent.getExtras(); int type bundle.getInt(KEY_TYPE, 0); String id bundle.getString(KEY_ID); Serializable data bundle.getSerializable(KEY_DATA);这是…

【数据库设计和SQL基础语法】--查询数据--分组查询

一、分组查询概述 1.1 什么是分组查询 分组查询是一种 SQL 查询技术,通过使用 GROUP BY 子句,将具有相同值的数据行分组在一起,然后对每个组应用聚合函数(如 COUNT、SUM、AVG等)。这允许在数据集中执行汇总和统计操作…