前言
在BUUCTF上看到这题存在三种解法,感觉比较经典,就想着来复现一下顺便学习一波。存在以下三种解法:
- flask session 伪造
- unicode欺骗
- 条件竞争
审题
拿到题目发现一共就登录注册两个功能,随便注册一个test/test用户
登录之后查看源码发现提示<!-- you are not admin -->
,根据提示和题目名估计要让我们登录admin用户就可以得到flag。
在change password页面查看源码,发现提供了题目的源码地址
<!-- https://github.com/woadsl1234/hctf_flask/ -->
发现是用flask写的,我们就直接去看一下路由
@app.route('/code')
def get_code():
@app.route('/index')
def index():
@app.route('/register', methods = ['GET', 'POST'])
def register():
@app.route('/login', methods = ['GET', 'POST'])
def login():
@app.route('/logout')
def logout():
@app.route('/change', methods = ['GET', 'POST'])
def change():
@app.route('/edit', methods = ['GET'