[WesternCTF2018]shrine

news/2024/9/20 5:35:13

打开题目就得到了python代码

import flask
import os
#导包
app = flask.Flask(__name__)
#创建一个flask实例,
app.config['FLAG'] = os.environ.pop('FLAG')
#从操作系统的环境变量中读取名为FLAG的值,并将其存储在Flask的配置中,POP:读取后删除该环境变量@app.route('/')
#定义一个路由`/`,访问主页时触发这个函数
def index():return open(__file__).read()
#读取当前python脚本的源代码并返回@app.route('/shrine/<path:shrine>')
#动态路由,shrine变量代表传入的路径参数,允许传入包含`/`的url片段
def shrine(shrine):def safe_jinja(s):s = s.replace('(', '').replace(')', '')#将括号换成nullblacklist = ['config', 'self']  return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + sreturn flask.render_template_string(safe_jinja(shrine))#flask.render_template_string:将传入字符串作为Jinja2模板进行渲染,这个模板会经过safe_jinja(shrine)清理后再进行渲染if __name__ == '__main__':app.run(debug=True)#运行flask应用

由第二个路由可以知道可以传入一个形如/shrine/...的地址,最后也是成功测试出来了

而首先要明白的是这个题存在两个过滤,一个是括号(),一个是config,self,那么常用的注入方式就不管用了
而我们前面看到config,这里面应该会有个flag值
这里就要用到python里的内置函数了,如url_for,get_flashed_messages
注入{{url_for.__globals__}}访问url_for函数的全局属性,查看里面的变量信息

输入{{url_for.__globals__['current_app'].config}},查看当前的配置信息,拿到flag

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

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

相关文章

MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法

原文:MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法 参考:Connection Java - MySQL : Public Key Retrieval is not allowed在使用 MySQL 8.0 时重启应用后提示com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieva…

MobaXterm 密钥生成器

1、MobaXterm 密钥生成器,代码仓库地址: https://gitcode.com/gh_mirrors/mo/MobaXterm-keygen/blob/master/MobaXterm-Keygen.py 2、也可以用我打包好的exe程序,不用安装python环境: https://pan.baidu.com/s/1jo85pQc_kfWhcYmZcc49CQ 提取码:ws10 3、源码:#/usr/bin/e…

Linux引导启动程序(boot)

概述 本章主要描述boot/目录中的三个汇编代码文件,见列表6-1所示。正如在前一章中提到的,这三个文件虽然都是汇编程序,但却使用了两种语法格式。bootsect.s和setup.s是实模式下运行的16位代码程序,采用近似于Intel的汇编语言语法并且需要使用Intel 8086汇编编译器和连接器as86和…

9、const修饰指针

*代表指针,这样有助于记忆和区别这三种

day1闯关作业小结[linux基础知识]

完成SSH连接与端口映射并运行hello_world.py 1.进入InternStudio https://studio.intern-ai.org.cn/, 创建个人开发机2.使用密码进行SSH远程连接并进行端口映射3.运行hello_world.py

白云龙期货投资-第三讲

反转形态**头肩底(顶) 双底(顶) 三重底(顶) 圆弧底(顶)**持续形态**三角形 旗形 楔行 扩散三角形 收缩三角形**K线形态(反转形态,持续形态) 反转形态 头肩底(顶) 双底(顶) 三重底(顶) 圆弧底(顶) 持续形态 三角形 旗形 楔行 扩散三角形 收缩三角形 头肩顶头肩底双底(双顶)下…