【2019 CISCN华北赛区Day1 Web2】ikun

打开页面看到ikun 没想到国赛也是小黑子

 看到关键字爆破和提示ikun们冲呀,一定要买到lv6

 我们看到很多lv,唯独没有看到lv6

点击下一页

 

 

可以看到页面发生了变化第二页上面就是page=2,那么我们的思路就是利用python写个脚本自己去跑

 

python中requests模块是爬虫我们可以利用这个脚本去爬出lv6的所在页数

 

脚本运行完成lv6在181页,我们打开181页去看看

 

发现lv6我们点击购买

 

显示要登录用户我们注册一个

 

从这里我们可以发现钱是不够的,我们的思路就要想到一个支付逻辑漏洞

 

这里应该是前端验证,所以我们修改页面前端的数据信息就可以达到支付逻辑漏洞效果

 

这里又出现了新的问题,显示要admin用户才能访问,我们的思路就要考虑到我们现在是普通用户访问,admin是管理员用户,我们就要立马想到垂直越权,抓包分析一下

 

发现是jwt验证,我们可以用jwt来伪造admin用户,注意这一段jwt是有密钥加密的我们需要利用工具去破解

尝试使用c-jwt-cracker工具爆破JWT秘钥,成功得到秘钥。

---下载地址:https://github.com/brendan-rius/c-jwt-cracker

---构建docker使用c-jwt-cracker需要我们在我们linux里安装好openssl头文件。在linux的配置命令是:apt-get install libssl-dev

 

下载好c-jwt-cracker,还需要在工具所在目录执行make命令,目的是让文件makefile运行起来。编译完后会生成一个jwtcrack文件

---进行破解,密匙为:1Kun

 

在进入jwt去修改jwt为admin用户

 

 

得到admin的jwt,利用抓包工具修改jwt发送得到

 

这里没啥提示,我们查看源代码

 

发现了一些线索还有一个压缩包的地址我们尝试下载

 

解压文件后得到python文件,我们利用pycharm打开对源代码进行代码审计

1.内置危险函数

exec

execfile

eval

2.标准库危险模块

os

subprocess

commands

3.危险第三方库

Template(user_input) : 模板注入(SSTI)所产生的代码执行

subprocess32

4.反序列化

marshal

PyYAML

pickle和cpickle

shelve

PIL

unzip

我们审计代码看到存在pickle这个模块

 

可以确定为是python反序列化漏洞

查看源代码:

---post接受传参become,然后将接受到的字符串进行反序列化为对象

---我们可以通过构造字符串,为对象的属性和方法进行赋值,构造payload

 

在表单里面也发现了become传参

 

构造payload,传输一个对象执行命令执行的方法(这里是python2的代码)

---先构造一个payload对象,里面的reduce方法是python的扩展类型,当对象被反序列化时就会调用__reduce__函数,进行执行命令执行函数,打开/flag.txt的文本

---pickle.dumps()将对象转化为字符串的格式,然后进行序列化为字符串

---urllib.quote是将字符串进行url编码(由于在源代码里面进行了url解码,所以这里需要进行事先的编码)

---payload(obiect):即payload类继承了object对象(python3里面是默认继承的,Object类是一切类的父类)

 

放到python2环境去执行

 

由于表单传参的位置是隐藏的需要我们修改

 

修改元素,将hidden去掉,发现post的弹窗出现,可以进行post传参

 

出现post输入框

 

输入c__builtin__%0Aeval%0Ap0%0A%28S%22open%28%27/flag.txt%27%2C%27r%27%29.read%28%29%22%0Ap1%0Atp2%0ARp3%0A.

得到flag

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值