这道题叫admin,一进去有登录和注册选项,可能是在暗示用admin登录
随便注册一个登录
发现源码
andmin登录成功便可获得flag
flask session 伪造
flask数据库操作的框架,就只能将session存储在cookie中。因为cookie实际上是存储在客户端(浏览器)中的,所以称之为“客户端session”。
flask 新建了URLSafeTimedSerializer类 ,用它的dumps方法将类型为字典的session对象序列化成字符串,然后用response.set_cookie将最后的内容保存在cookie中。
序列化的操作分如下几步:
1.json.dumps 将对象转换成json字符串,作为数据
2.如果数据压缩后长度更短,则用zlib库进行压缩
3.将数据用base64编码
4.通过hmac算法计算数据的签名,将签名附在数据后,用“.”分割
思路用脚本加密change密码
找到config.py代码,得到密钥 ‘ckj123’,说明思路正确
import os
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'ckj123'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:adsl1234@db:3306/test'
SQLALCHEMY_TRACK_MODIFICATIONS = True
在网上找flask加密脚本
先解密得到json,替换其中的name为admin
再加密后替换cookie
然后修改session就可以得到flag
参考