253 字
1 分钟
[LitCTF2023]Flag点击就送!

题目一开始提示管理员才能拿到flag。
有输入框,想都没想直接填写 admin。

不出所料,登录失败。那就尝试别的随便用户名,诶有个拿flag的按钮,但要 管理员 才可以。

那就只能伪造了。
找到 Session
和之前做过的邮箱重置链接的JWT不同,这里找到的是 session。

有点像base64,但根据经验,有点像签名。
扔给赛博厨子

果然是签名。
仔细查看网页框架

是 flask 框架,这次是 session 伪造。
查看 flask 资料和各位师傅的 wp:
flask 框架的 session 是存储在客户端的,需要通过
secret_key对数据进行签名来防止 session 被篡改。
Flask session 示例代码:
from flask import Flask, request, render_template, session, redirectfrom datetime import datetime
app = Flask(__name__)app.config['SECRET_KEY'] = 'laowangaigebi' # 设置session加密的密钥
@app.route('/login', methods=['GET', 'POST'])def login(): session['uid'] = '123456' session['username'] = 'laowang' return redirect('/')
@app.route('/', methods=['GET', 'POST'])def index(): username = session.get('username') if username: return 'welcome %s' % username else: return '请登录'
app.config['DEBUG'] = Trueif __name__ == '__main__': app.run(host='0.0.0.0', port=5000)猜测 key
由于题目没有给,猜测 key 为 LitCTF,使用 flask-session-cookie-manager 伪造:
python flask_session_cookie_manager3.py encode -s 'LitCTF' -t '{"name":"admin"}'# 输出:eyJuYW1lIjoiYWRtaW4ifQ.ZUoYpw.-wWfai1NY-VXpGGXHqnCG5H9-Ug将得到的 session 填入 cookie-editor 保存,刷新后即可拿到 flag。
Flag: NSSCTF{47877fbb-32b0-46ec-bdd6-a926b910870e}
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
[LitCTF2023]Flag点击就送!
https://npiter.de/posts/litctf2023flag点击就送/ 部分信息可能已经过时
相关文章 智能推荐









