这是PASECA2019的一道web题
前端是一个蜂蜜商店,你有
,所以我们只能买蜂蜜。$1336
`,可以买蜂蜜和flag。但是flag要
`$1337
一般这种题目的常规操作就是通过修改你的钱使你能够买到flag。但是看前端也没有什么提示,我们可以抓包观察。
抓包分析
买第一个蜂蜜之后的数据包是这个,显然item是你购买的商品序号,捕捉到session有点奇怪。
发送到repeater之后服务器也没有返回什么有用的东西。重新看前端界面,有一行字
*click to download our sweet images*
下载图片是html文件,我们在下载时抓包分析
在网页的
目录下/download?image=1.jpg
文件包含检查
我们针对服务器存在的文件做检查,比如linux里的
返回如下/etc/passwd
`,尝试一下本地文件包含
`/download?image=../etc/passwd
有戏,继续尝试,直到这样/download?image=../../etc/passwd
那我们可以通过这个读取
(纪录当前进程,也就是python的环境变量)/proc/self/environ
/download?image=../../proc/self/environ
发现了secret_key,这个是Flask Session Cookie加解密中会用到的密钥。因此我们可以想到,这道题是将数据通过Flask Session Cookie加密后存在cookie中,那么我们想要修改钱,就可以伪造cookie。
密钥加解密
我们先将原cookie解密看一看
然后我们修改钱之后再加密
伪造完成,我们到买flag的界面,修改cookie
完成。
Greetings! Very useful advice in this particular article! It is the little changes that produce the most important changes. Many thanks for sharing!