关于jinjia2模板注入 {{1+1}}报错而{{7*7}}正确执行的问题

我运行了一个简单的python flask APP。文件内容如下:

from flask import Flask

from flask import request, render_template_string, render_template

app = Flask(__name__)

@app.route('/login')

def hello_ssti():

person = {

'name': 'hello',

'secret': '7d793037a0760186574b0282f2f435e7'

}

if request.args.get('name'):

person['name'] = request.args.get('name')

template = '<h2>Hello %s!</h2>' % person['name']

return render_template_string(template, person=person)

if __name__ == "__main__":

app.run(debug=True)

我尝试进行jinja2模板注入。当我输入 name={{7*7}}时,注入成功,显示49.但是当我尝试注入{{1+1}}时,应用debug模式会报错,如下图所示
关于jinjia2模板注入 {{1+1}}报错而{{7*7}}正确执行的问题

关于jinjia2模板注入 {{1+1}}报错而{{7*7}}正确执行的问题

请问这是什么原因,为什么{{1+1}}和{{7*7}}不一样呢?
谢谢。


回答:

url中没有对+进行编码%2b,被认为是空格。
当访问{{2%2b2}}时,会正常返回4。

以上是 关于jinjia2模板注入 {{1+1}}报错而{{7*7}}正确执行的问题 的全部内容, 来源链接: utcz.com/p/937915.html

回到顶部