知识点
JWT
PICKLE
Pickle模块中最常用的函数为:
(1)pickle.dump(obj, file, [,protocol])
函数的功能:将obj对象序列化存入已经打开的file中。
参数讲解:
obj:想要序列化的obj对象。
file:文件名称。
protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
(2)pickle.load(file)
函数的功能:将file中的对象序列化读出。
参数讲解:
file:文件名称。
(3)pickle.dumps(obj[, protocol])
函数的功能:将obj对象序列化为string形式,而不是存入文件中。
参数讲解:
obj:想要序列化的obj对象。
protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
(4)pickle.loads(string)
函数的功能:从string中读出序列化前的obj对象。
参数讲解:
string:文件名称。
附:Pickle协议
WP部分
第一步找到lv6
根据提示需要我们找到lv6,分析网址发现只需要有lv6.png
即可
这里写个多线程的python脚本
import threading
import time
import requests
def go(st, ed):
for i in range(st, ed):
url = '替换你的url/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页存在lv6
第二步BURP抓包修改
我们把折扣力度加大真爽,得到了这样一个页面
好吧只能admin访问,抓包再看一下
应该需要我们进行JWT破解利用
破解得到密钥1Kun
按照提示进行操作
修改后得到关键信息
pickel
这里我有点傻,一开始没注意到环境应该是python2,得到了正确的值
传入后得到flag
参考文章
[CISCN2019 华北赛区 Day1 Web2]ikun
Python反序列化漏洞的花式利用
Python魔法方法指南