flask session 伪造

之前遇到过一道题,可以用session伪造,也还有其他方法,就用session伪造复现一下。
由于 flask 是非常轻量级的 Web框架 ,其 session 存储在客户端中(可以通过HTTP请求头Cookie字段的session获取),而且只经过base64编码和用密钥签名,缺少数据防篡改实现,这便很容易存在安全漏洞。要想伪造session,首先要知道SECRET_KEY,如果存在模板注入的话SECRET_KEY可能会在config中,不存在模板注入也可能从一些源码中得到([HCTF 2018]admin)。

[HCTF 2018]admin

在源代码提示我们不是admin,所以题目的思路应该是伪造admin,正常注册登录,在注册的时候发现admin已经被注册了,重新注册一个看看。
在这里插入图片描述
在改密码的页面发现了提示,给了github的源码。
在这里插入图片描述
在config.py中找到了SECRET_KEY。
在这里插入图片描述
抓包获取session,网上有写好的解密脚本,直接搬运解密,
在这里插入图片描述name是我们刚刚注册的用户名,把他改成admin之后重新加密,加密脚本用github上的lask-session-cookie-manager,再替换原来的session,拿到flag。

在这里插入图片描述在这里插入图片描述

[第一章 web入门]afr_3

知识点:任意文件读取
模板注入
session伪造
这道题主要考察任意文件读取和/proc/目录的作用,坑还是比较多的,看了wp之后还蒙了好一会。
官方wp:
在这里插入图片描述/proc/目录通常储存着进程动态运行的各种信息,本质上是一种虚拟目录。
查看非当前目录进程:/proc/[pid] (pid可以暴力破解)
当前目录:[pid]可以用self代替

/proc/各文件作用:
/proc/self/cmdline:获取当前执行的系统命令,有时候可以读取一些敏感信息
/proc/self/cwd:直接跳转到当前目录
/proc/self/environ:读取当前目录下的环境变量

wp说的挺详细,写一下遇到的坑,首先是SSTI存在的目录,源码中写的很清楚,在/n1page目录下,但是直接在url中写上去并不能跳转,需要在第一个页面传一个值,源码中也有写。
在这里插入图片描述
传值1之后在当前页面存在SSTI
在这里插入图片描述然后就是session伪造
跟上边那个题的步骤一样,抓包-session解码-伪造session-替换
第一次做的时候,传了几个payload,都500,很迷惑,要不就是无法加密,因为SSTI语句中单双引号比较多,不好正确匹配,弄了好久,最后才发现。
解密确定字符串形式。
在这里插入图片描述
然后把None换成payload。
在这里是python3的环境,wp给的是python2的,但是第40个刚好还是file类,所以可以直接读取文件,
由于单双引号太多,当flag.py用单引号的时候无法加密。

在这里插入图片描述用双引号的时候,不能正确执行。
在这里插入图片描述所以这里只能转义单引号,成功执行。
在这里插入图片描述在这里插入图片描述同理也可以任意命令执行。
在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值