BUUCTF web admin (flask_session问题)

检查源码,发现有注释<!-- you are not admin -->,应该是提示用admin账号登录。

两个功能,注册和登录,想到之前做过一个注册admin加空格的题,试了一下不成功。

然后老老实实注册一个普通用户
在这里插入图片描述
显示了自己的用户名,我们的目的因该是让自己的用户名变成admin才行。

change password只能修改自己账号的密码,没有漏洞。

post可能有xss漏洞,交了一个弹框,什么反应都没有,可能只是一个摆设吧。

在change password一栏的源码里有提示<!-- https://github.com/woadsl1234/hctf_flask/ -->
说明这个网站是用python的flask搭建的,git下载下来看看。

接下来代码审计就不会了,以下是wp思路

看到了index函数,没有做任何操作,直接返回给了index.html,去找这个文件看看
在这里插入图片描述在这里插入图片描述
看到flag相关信息,验证session,如果session是admin的session,就会爆出flag。
所以目的就是在index页面把自己的session改成admin的。


知识盲区
flask的session是存储在客户端cookie中的,而且flask仅仅对数据进行了签名。签名的作用是防篡改,而无法防止被读取。而flask并没有提供加密操作,所以其session的全部内容都是可以在客户端读取的。
flask中session的计算是统一的,这里附上找到的脚本
https://pan.baidu.com/s/13H5kJIxhAjTeUoZyj-dC3A 提取码: kxck
密码的计算需要明文加秘钥,而session的计算也一样,明文自己造(这里就需要把明文设成admin),但是我们需要找到秘钥。

这里说一下这个脚本的用法
解密:python 1.py decode -s "密钥" -c "session值"
加密:python 1.py encode -s "密钥" -t "明文"


好了,到现在我们已经明确了只要利用自己的session解密,然后把明文部分改成admin在加密一下,伪造session就可以以admin的身份登录而获取flag了。

现在还需要找一个密钥,他就在confg.py文件里ckj123

然后根据上面的使用说明就可以获取admin的session,改包后就可以获取flag。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值