关于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模式会报错,如下图所示
image.png

image.png

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

阅读 2.1k
1 个回答
新手上路,请多包涵

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题