菜狗杯-抽老婆(session安全问题)

作者 by Yichen / 2023-08-11 / 暂无评论 / 26 个足迹

屏幕截图 2023-08-10 235243.png

题目

开始进来只有这个,用dirsearch扫一下
屏幕截图 2023-08-10 002938.png
发现一个console,进去后要验pin屏幕截图 2023-08-11 000118.png屏幕截图 2023-08-11 000150.png
抓一下返回包然后都改成true发现能进去但是没啥用。。。
然后去看看下载界面也就是/download看看
屏幕截图 2023-08-11 000555.png
在报错中看到这个下载一下,发现可以(做一下目录穿越)
屏幕截图 2023-08-11 000724.png
下载下来的源码如下

# !/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)

从源码拿到一个密钥和一个隐藏路径,只需session中isadmin为true即可进入,所以要进行session伪造了
题中不难发现是flask框架,flask框架的session是存储在客户端的,那么就需要解决session是否会被恶意纂改的问题,而flask通过一个secret_key,也就是密钥对数据进行签名来防止session被纂改,我们已经获得密钥了。
flask脚本链接:https://github.com/noraj/flask-session-cookie-manager
我选择在kali中进行操作
解密:
python3 flask_session_cookie_manager3.py decode -c '要解密的' -s '密钥'
加密:
python3 flask_session_cookie_manager3.py encode -s '密钥' -t "{'key': 'value', 'key': value}"
(注意符号加密部分用双引号)
Screenshot_2023-08-10_12_47_33.png
然后访问那个隐藏路径,修改session,拿到flag屏幕截图 2023-08-10 010711.png

独特见解