攻防世界-shrine

news2024/11/17 6:03:10

题目

2cd990d6eb5946ffa4e46dd025abe169.png

访问题目场景

d2c109e1385f4fbba0930a3725a90b1c.png 这个界面很乱奥,我们访问网页源代码,我们就能看见我们需要审计的源码了

1f869f45bfe2454292d7544a685b977f.png

我们把python源码复制下来,进行分析 

import flask
import os

app = flask.Flask(__name__)

app.config['FLAG'] = os.environ.pop('FLAG')


@app.route('/')
def index():
    return open(__file__).read()


@app.route('/shrine/<path:shrine>')
def shrine(shrine):

    def safe_jinja(s):
        s = s.replace('(', '').replace(')', '')//先将)替换为空,再将(替换为空
        blacklist = ['config', 'self']
        return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s
//匹配黑名单,将匹配到的config和self换成空字符

    return flask.render_template_string(safe_jinja(shrine))


if __name__ == '__main__':
    app.run(debug=True)//主程序

看到这个源码我头都大了,我直接偷懒去看别的师傅写的WP,师傅们说这个是沙箱逃逸,python沙箱逃逸的方法是 利用python对象之间的引用关系来调用被禁用的函数对象

render_template_string函数可以看出,这里应该是模板注入

/shrine/{{1+1}}

从源码中可以看出,flag应该在config中,但是这里过滤了config无法使用{{config}}
这里我们可以使用url_forget_flashed_messages

/shrine/{{url_for.__globals__}}

构造payloads:   /shrine/{{url_for.__globals__['current_app'].config['FLAG']}}

f99e37ae74a54f5bbb4d7ac99979bb8d.png

 python沙箱逃逸总结
让用户提交 Python 代码并在服务器上执行,是一些 OJ、量化网站重要的服务,很多 CTF 也有类似的题。为了不让恶意用户执行任意的 Python 代码,就需要确保 Python 运行在沙箱中。沙箱经常会禁用一些敏感的函数,例如 os,研究怎么逃逸、防护这类沙箱还是蛮有意思的。从整理好的代码中,我们得出 flag在config变量中,但config,self,(), 都被过滤了.假设没有过滤,可以尝试直接访问 config变量或者 {{self.dict}}来获取变量如果有过滤,就需要尝试通过全局变量实现沙盒逃逸

 

 

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

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

相关文章

如何对企业内部进行知识内容有效性管理

企业内部文档管理版本的场景&#xff0c;如果日常没有比较好的工具进行内容控制&#xff0c;经常出现意外&#xff0c;有些意外很小、但是有些意外可能就伤筋动骨&#xff0c;例如标书里边的文件放错了&#xff0c;如果定性为串标&#xff0c;那么就非常严重了。JVS 企业文档管…

细刨进程状态,浅谈僵尸进程,孤儿进程,进程切换

文章目录进程状态宏观上操作系统层面上理解进程状态具体Linux操作系统的状态kill -19 pid &#xff1a;停止进程kill -18 pid &#xff1a;继续进程D&#xff08;disk sleep&#xff09;深度睡眠$和 $^僵尸状态和死亡状态僵尸进程孤儿进程进程优先级由此衍生出另外几个概念进程…

目标检测指标IOU和mAP

IOU(交并比) 交并比&#xff08;loU&#xff09;函数做的是计算两个边界框交集和并集之比。可以用来判断定位算法的好坏。 一般来说&#xff0c;IoU大于等于0.5&#xff0c;那么结果是可以接受的&#xff0c;就说检测正确。如果预测器和实际边界框完美重叠&#xff0c;loU就是…

HTML5中的FileReader对象

FileReader FileReader主要用于将文件内容读入内存&#xff0c;通过一系列异步接口&#xff0c;可以在主线程中访问本地文件。 方法 readAsArrayBuffer(file):void : 异步按字节读取文件内容&#xff0c;结果用ArrayBuffer对象表示readAsBinaryString(file):void : 异步按字…

重磅!中国电信物联网用户超4亿

近日&#xff0c;中国电信物联网发展规模取得新突破&#xff0c;物联网用户超4亿&#xff0c;物联网用户数超过移动电话用户数&#xff0c;全面迈入“物超人”时代。 “物超人”&#xff0c;即代表“物”的移动物联网终端用户数超出代表“人”的移动电话用户数。工信部公布的数…

591页22万字城市智慧应急指挥中心信息化设计方案

【版权声明】本资料来源网络&#xff0c;仅用于行业知识分享&#xff0c;供个人学习参考&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间进行删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 目 录 第1章 项…

为有状态应用而生,云原生本地存储Carina正式进入CNCF沙箱

12月14日&#xff0c;云原生本地存储开源项目 Carina 通过了全球顶级开源基金会 CNCF 技术监督委员会&#xff08;TOC&#xff09;的评定&#xff0c;正式成为 CNCF 沙箱级项目&#xff08;Sandbox Projects&#xff09;。 Carina是由博云于2021年10月主导发起的云原生本地存储…

FISCO BCOS的PBFT共识算法流程详解

原文&#xff1a; https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/consensus/pbft.html PBFT模块主要包括PrepareReq、SignReq、CommitReq和ViewChangeReq四种共识消息&#xff1a; PrepareReqPacket: 包含区块的请求包&#xff0c;由leader产生并向所有Repl…

nacos mac

一.nacos的下载 进入官网&#xff1a;home 朝下翻 下载一点几版本的&#xff0c;2点几的已经停止更新了。 将下载好的文件放入一个没有中文名称的目录下 nacos目录&#xff1a; 二.nacos的启动与终止 打开终端&#xff0c;进入bin目录下 我的是&#xff1a; cd /Volumes/…

办公高效、生活便捷!海尔科创生态园启用

理想的工作环境应该是什么样子&#xff1f; 是高效的智慧办公&#xff0c;流畅的商务洽谈&#xff0c;快速的停车及通行…… 仅仅这些就够了吗&#xff1f;高效的数字化体验之外&#xff0c;还有浓浓的人性化关爱&#xff0c;健身设备齐全的员工服务中心、给哺乳妈妈们专设的…

LinkedList和ArrayList对比各有什么优势?

一、LinkedList的概述 1. LinkedList是双向链表实现的List 2. LinkedList是非线程安全的 3. LinkedList元素允许为null&#xff0c;允许重复元素 4. LinkedList是基于链表实现的&#xff0c;因此插入删除效率高&#xff0c;查找效率低(虽然有一个加速动作) 5. LinkedList是…

宜明昂科上市申请“失效”:融资数据“打架”,田文志持股约20%

12月29日&#xff0c;贝多财经从港交所披露易了解到&#xff0c;宜明昂科生物医药技术&#xff08;上海&#xff09;股份有限公司&#xff08;下称“宜明昂科”&#xff09;在港交所递交的上市申请材料已经“失效”&#xff0c;目前已正常无法查看或下载。 其中&#xff0c;招股…

C++图论 最小生成树和二分图问题总结

目录 一、最小生成树 &#xff08;一&#xff09;Prim朴素版 思路 练习题 代码 &#xff08;二&#xff09;kruskal算法 练习题 代码 二、二分图 &#xff08;一&#xff09;染色法判定二分图 练习题 代码 &#xff08;二&#xff09;匈牙利算法 练习题 代码 一、…

CSDN官方开发工具利器猿如意实测

目录前言一.ChatGPT二.效率工具三.开发工具四.教程文档五.一行代码六.总结前言 猿如意 是CSDN官方2022年推出的面向程序员效率工具集合&#xff0c;里面包含非常实用的小工具&#xff08;如Linux命令查询、语音合成、Json格式化、Host切换、文字转图片、Postman、图片处理等&a…

Linux 快照 (snapshot) 原理与实践(一) 快照基本原理

文章目录0. 背景1. 如何理解快照(snapshot)?2. 快照 (snapshot) 的原理2.1 全量快照1. 克隆 (Clone)2. 镜像分离 (Split Mirror)2.2 增量快照1. 写时拷贝(Copy-On-Write)**写数据****读数据****优缺点**2. 写时重定向 (Redirect-On-Write)**写数据****读数据**优缺点3. Linux …

电脑免费录屏软件有哪些?5款视频录制软件免费版

在日常生活工作与学习中&#xff0c;都会经常遇到需要录制屏幕的情况&#xff0c;比如录制线上会议纪要记录、老师授课内容、游戏画面、线上直播等&#xff1b;在众多网络网友录屏软件分享下&#xff0c;有哪些电脑录屏软件是好用的&#xff1f;今天小编就给大家分享5款觉得还不…

最短编辑距离

最短编辑距离一、问题描述二、思路分析1、状态转移方程&#xff08;1&#xff09;状态表示&#xff08;2&#xff09;状态转移2、循环及初始化&#xff08;1&#xff09;循环设计&#xff08;2&#xff09;初始化处理三、代码实现一、问题描述 二、思路分析 这道题是一道DP的问…

oh my 毕设-人体姿态估计-简介应用场景

毕设题目为人体姿态估计&#xff0c;之前主要关注在目标检测上&#xff0c;这方面不太熟悉&#xff0c;于是想做一个系列专栏&#xff0c;从0到1学习姿态估计。 参考于大佬-同济子豪兄 姿态估计本质是关键点检测。 人体姿态的估计常常首先预测出人体各个关键点的位置坐标&am…

160.相交链表

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&…

开启 kerberos 后,HiveServer2 的 webui 没有内容的解决方案

开启 kerberos 后&#xff0c;HiveServer2 的 webui 没有内容。页面如下&#xff0c;可以打开&#xff0c;但是即便已经有会话&#xff0c;也有SQL执行&#xff0c;这里一直这样。 1. 原因分析 1.1 hiveserver2.jsp 以Active Sessions 的内容为例&#xff0c;./service/src…