HGAME2019 happyPython

这道题想了好久啊,写出来了就赶紧来记录一下,确实还有很多不了解的领域,需要继续努力哈~
HGAME2019 happyPython_第1张图片
进入题目后得到提示,这是利用flask(一个使用 Python 编写的轻量级 Web 应用框架)编写的注册和登陆界面。最先想到的就是flask的ssti(服务器模板注入)漏洞,在register界面的url后面直接加上{{config}}得到
HGAME2019 happyPython_第2张图片
可以看到我们已经得到了'SECRET_KEY': '9RxdzNwq7!nOoK3*',接下来根据提示flag在管理员的账号下,应该是要伪造admin登陆,但是想了好久都不知道admin的邮箱应该是什么,于是乎注册了一个普通的用户并在登录的过程中进行抓包。
然后注意到了请求头中cookie的session在这里插入图片描述
查阅了资料后了解了flask的另外一个漏洞—利用session进行身份伪造,flask将session整个的存到cookie里(当然是加密后的),所以叫做客户端session,也就是上图中所显示的内容,这个session只经过base64和密钥加密,而且密钥我们在一开始便已经获得了。我们要做的就是改包,将原本的session替换掉,这是在github上面找到的伪造session脚本。

https://github.com/noraj/flask-session-cookie-manager

在这里插入图片描述
好像没有找到可以修改进行伪造的地方。。。_id的内容也无法进行解密,forward继续抓包,发现竟然还有一个session。
在这里插入图片描述
利用脚本进行decode
在这里插入图片描述
注意到了user_id这一项,值为8,那么admin的id会不会就是1呢?将user_id修改为1后进行加密

在这里插入图片描述
得到的完整结果
在这里插入图片描述
替换原有的session后就得到最终的flag啦
HGAME2019 happyPython_第3张图片

你可能感兴趣的:(HGAME2019 happyPython)