Flask jinja2 SSTI 服务端的模板注入

本文介绍了Python的Jinja2模板引擎,它是Flask的默认模板语言。文章详细阐述了服务端模板注入(SSTI)的原理,展示了如何在Windows环境下搭建基于Flask的Web应用,并复现了SSTI漏洞,包括探测和利用阶段。最后,提出了防御SSTI的措施,建议更换参数拼接方式。
摘要由CSDN通过智能技术生成

 

jinja2模板引擎介绍

  1. jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,其是Flask内置的模板语言。
  2. 模板语言:是一种被设计来自动生成文档的简单文本格式,在模板语言中,一般都会把一些变量传给模板,替换模板的特定位置上预先定义好的占位变量名。
  3. { {}} 来表示变量名,这种 { {}} 语法叫做变量代码块

注入原理

 jinja2模板引擎中有{ {}}变量代码块语法,该语法能将里面的参数当作代码执行,所以可以构造对应的payload达到代码执行的效果


环境搭建

这里就在windows下使用python环境搭建一个基于flask框架的web

pip install flask        #安装flask框架

from flask import Flask,request
from jinja2 import Template

app=Flask(__name__)

@app.route('/index')
def hello():
    name=request.args.get('name','world')
    t=Template('Hello 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值