抽老婆

POC

首先我们下载老婆的时候可以尝试着去下载一下 ../../app.py

好巧不巧,这刚好是源码

# !/usr/bin/env python

# -*-coding:utf-8 -*-



"""

# File       : app.py

# Time       :2022/11/07 09:16

# Author     :g4_simon

# version    :python 3.9.7

# Description:抽老婆,哇偶~

"""



from flask import *

import os

import random

from flag import flag



#初始化全局变量

app = Flask(__name__)

app.config['SECRET_KEY'] = 'tanji_is_A_boy_Yooooooooooooooooooooo!'



@app.route('/', methods=['GET'])

def index():  

    return render_template('index.html')





@app.route('/getwifi', methods=['GET'])

def getwifi():

    session['isadmin']=False

    wifi=random.choice(os.listdir('static/img'))

    session['current_wifi']=wifi

    return render_template('getwifi.html',wifi=wifi)







@app.route('/download', methods=['GET'])

def source(): 

    filename=request.args.get('file')

    if 'flag' in filename:

        return jsonify({"msg":"你想干什么?"})

    else:

        return send_file('static/img/'+filename,as_attachment=True)





@app.route('/secret_path_U_never_know',methods=['GET'])

def getflag():

    if session['isadmin']:

        return jsonify({"msg":flag})

    else:

        return jsonify({"msg":"你怎么知道这个路径的?不过还好我有身份验证"})







if __name__ == '__main__':

    app.run(host='0.0.0.0',port=80,debug=True)

你可能想直接去下载 flag ,但是你看看源码

所以我们选择进入到 /secret_path_U_never_know`页面,然后我们会看见代码会校验session,再往上翻翻,刚好有app.config['SECRET_KEY'] = ‘tanji_is_A_boy_Yooooooooooooooooooooo!’ 这是 flask 的session 密钥,那么我们就来构造这个session

用到的工具在这里

Flask_Session加密解密

然后再这样

flag就到手了