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

文章目录

  • 知识点
    • JWT
    • PICKLE
  • WP部分
    • 第一步找到lv6
    • 第二步BURP抓包修改
    • pickel
  • 参考文章

知识点

JWT

JWT相关
JWT解密网站
JWT破解利用工具

PICKLE

Pickle模块中最常用的函数为:

(1)pickle.dump(obj, file, [,protocol])

   函数的功能:将obj对象序列化存入已经打开的file中。

   参数讲解:
          obj:想要序列化的obj对象。
          file:文件名称。
          protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

(2)pickle.load(file)

   函数的功能:将file中的对象序列化读出。

   参数讲解:

          file:文件名称。

(3)pickle.dumps(obj[, protocol])

   函数的功能:将obj对象序列化为string形式,而不是存入文件中。

    参数讲解:
          obj:想要序列化的obj对象。
          protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

(4)pickle.loads(string)

   函数的功能:从string中读出序列化前的obj对象。
   参数讲解:
          string:文件名称。

附:Pickle协议
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第1张图片

WP部分

第一步找到lv6

根据提示需要我们找到lv6,分析网址发现只需要有lv6.png即可
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第2张图片
这里写个多线程的python脚本

import threading
import time

import requests


def go(st, ed):
    for i in range(st, ed):
        url = '替换你的url/shop?page='
        url += str(i)
        r = requests.get(url, timeout=2)
        if 'lv6.png' in r.text:
            print(r.url)
        time.sleep(0.1)


if __name__ == '__main__':
    threads = []
    for i in range(0, 10):
        t = threading.Thread(target=go, args=(i * 20, (i + 1) * 20))
        threads.append(t)

    for item in threads:
        item.start()

我这里得到了181页存在lv6

第二步BURP抓包修改

我们把折扣力度加大真爽,得到了这样一个页面
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第3张图片
好吧只能admin访问,抓包再看一下
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第4张图片
应该需要我们进行JWT破解利用
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第5张图片
破解得到密钥1Kun
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第6张图片
按照提示进行操作
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第7张图片
修改后得到关键信息
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第8张图片

pickel

这里我有点傻,一开始没注意到环境应该是python2,得到了正确的值
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第9张图片
传入后得到flag
[BUUCTF][CISCN2019 华北赛区 Day1 Web2]ikun_第10张图片

参考文章

[CISCN2019 华北赛区 Day1 Web2]ikun
Python反序列化漏洞的花式利用
Python魔法方法指南

你可能感兴趣的:(安全学习,#,Web)