首页 > 其他分享 >[HFCTF 2021 Final]easyflask

[HFCTF 2021 Final]easyflask

时间:2023-07-05 11:56:55浏览次数:47  
标签:__ return easyflask admin app 2021 path HFCTF User

根据指引拿到源码,之前访问网页拿到的源码是无缩进的,我还以为是出题人故意这样,后来才知道view-source一下能看到有缩进的源代码。

#!/usr/bin/python3.6
import os
import pickle

from base64 import b64decode
from flask import Flask, request, render_template, session

app = Flask(__name__)
app.config["SECRET_KEY"] = "*******"

User = type('User', (object,), {
    'uname': 'test',
    'is_admin': 0,
    '__repr__': lambda o: o.uname,
})


@app.route('/', methods=('GET',))
def index_handler():
    if not session.get('u'):
        u = pickle.dumps(User())
        session['u'] = u
    return "/file?file=index.js"


@app.route('/file', methods=('GET',))
def file_handler():
    path = request.args.get('file')
    path = os.path.join('static', path)
    if not os.path.exists(path) or os.path.isdir(path) \
            or '.py' in path or '.sh' in path or '..' in path or "flag" in path:
        return 'disallowed'

    with open(path, 'r') as fp:
        content = fp.read()
    return content


@app.route('/admin', methods=('GET',))
def admin_handler():
    try:
        u = session.get('u')
        if isinstance(u, dict):
            u = b64decode(u.get('b'))
        u = pickle.loads(u)
    except Exception:
        return 'uhh?'

    if u.is_admin == 1:
        return 'welcome, admin'
    else:
        return 'who are you?'


if __name__ == '__main__':
    app.run('0.0.0.0', port=80, debug=False)

 

首先来看一个东西:https://baijiahao.baidu.com/s?id=1646831894632441854&wfr=spider&for=pc

这里说明了python中所有的类都是type类的一个对象,所以定义类时可以普通定义,也可以使用type类定义,源代码中就是使用type类定义了一个User类,该类中有三个属性

User = type('User', (object,), {
    'uname': 'test',
    'is_admin': 0,
    '__repr__': lambda o: o.uname,
})

 

标签:__,return,easyflask,admin,app,2021,path,HFCTF,User
From: https://www.cnblogs.com/hackerone/p/17528129.html

相关文章

  • CMU15-445Project整理(2021Fall)
    本文为CMU15-445(2021Fall)的lab记录。推荐博客:https://blog.csdn.net/twentyonepilots/article/details/120868216,逻辑写得比较清楚CMU-15445官方网页https://15445.courses.cs.cmu.edu/fall2021/assignments.htmlProject#1-BufferPoolTASK#1-LRU剔除策略可以先......
  • 【题解】P8741 [蓝桥杯 2021 省 B] 填空问题 题解
    P8741[蓝桥杯2021省B]填空问题题解题目传送门欢迎大家指出错误并联系这个蒟蒻更新日志2023-05-0923:19文章完成2023-05-0923:20通过审核2023-06-2021:03优化了文章代码格式试题A:空间【解析】本题考察计算机存储的基础知识,只要掌握空间存储的换算方法,就能......
  • Japanese Student Championship 2021 F Max Matrix
    洛谷传送门AtCoder传送门我们考虑动态维护答案。如果已经知道上一步的答案,考虑计算这一次操作之后答案的变化。考虑现在有一个数列\(a_{1\simn}\),我们想知道\(\sum\limits_{i=1}^n\max(x,a_i)\)。计算出\(c=\sum\limits_{i=1}^n[a_i<x],s=\sum\limits_{i......
  • 题解 P8757 [蓝桥杯 2021 省 A2] 完美序列
    题解P8757[蓝桥杯2021省A2]完美序列题意如果一个序列是单调递减的,而且除了第一个数以外的任何一个数都是上一个数的因数,则称这个序列为一个完美序列。一个序列中的一个子序列如果是完美序列,则称为该序列的一个完美子序列。一个序列的最长完美子序列长度,称为该序列的完美......
  • Sudo堆溢出漏洞(CVE-2021-3156)复现
    背景介绍2021年1月26日,QualysResearchLabs在sudo发现了一个缺陷。sudo解析命令行参数的方式时,错误的判断了截断符,从而导致攻击者可以恶意构造载荷,使得sudo发生堆溢出,该漏洞在配合环境变量等分配堆以及释放堆的原语下,可以致使本地提权。环境搭建环境版本•ubuntu20......
  • 2021到2022,从学生成长为职场人(面试打工指南)
    2021到2022,从学生成长为职场人春招实习入字节春招能进入字节,可以说是今年来一个很重要的转折点。刚进入大三的时候大概三月份,我还不是很紧迫,感觉距离春招还有一段时间,可以继续拉长战线慢慢来。但突然得知同学已经在准备面试的时候,才发现时间已经不多了,留给自己冲刺面经到正式面试可......
  • cad2021中文版下载_cad2021简体中文版下载「附安装教程」分享
    cad2016官方版是一款专业且功能多样的图纸绘制工具。AutoCAD2016中文版优化了硬件加速效果,使其更加的无论平滑和流畅,能够用于二维绘图、详细绘制、设计文档和基本三维设计。AutoCAD2016软件全方位的更新了Dim命令,同时对图层进行了人性化的改进,操作更加方便。cad2016官方版软件介绍A......
  • PhpStorm 2021.3软件下载及安装教程 绿色破解版 软件大全
    PhpStorm是一款由phpstorm的最新PHP开发软件,使用为用户提供了最全面最强大的开发解决方案。它的功能非常的卡u按,基本上大家需要用到的这里都有,全面满足需求,现在的PHPSTORM在2019年的首个版本已经发布,新版本带来了重大的更新,可以更快的进行调试,通过使用PhpStorm和Xdebug直接在这两个......
  • MasterCAM 2021中文版数控编程加工基础入门视频教程
    适用对象:MasterCAM2021中文版内容简介:本教程通过12章节课程详细讲解MasterCAM2021软件的基础操作,包括2D/3D绘图、数控编程和曲面加工等,实战性强,纯干货,结合实际操作让用户快速掌握软件,真正实现学以致用。本教程画质虽不是高清的,但不影响观看,同时附安装包,暂无配套素材文件,好的......
  • 2021年最新-可解释机器学习相关研究最新论文、书籍、博客、资源整理分享
        理解(interpret)表示用可被认知(understandable)的说法去解释(explain)或呈现(present)。在机器学习的场景中,可解释性(interpretability)就表示模型能够使用人类可认知的说法进行解释和呈现。[FinaleDoshi-Velez]    机器学习模型被许多人称为“黑盒”。这意味着虽然我们可以从......