https://docs.python.org/zh-cn/3/tutorial/introduction.html#strings
+
来进行拼接,比如说过滤了__
,我们可以通过"_""_"
或者"_"+"_"
来绕过,这里写个测试ssti的代码:from flask import Flask,render_template,request,session,url_for,redirect,render_template_string app = Flask(__name__) app.config['SECRET_KEY'] = "password" @app.route("/",methods=["POST"]) def index(): ssti = request.form.get('ssti') return render_template_string('''%s '''% (ssti)) if __name__ == "__main__": app.run()
f"a{name}"
这种用不了,因为所有字符串首先都会在jinja2(jinja2.parser.Parser)进行解析,这里直接就过不了语法的解析,因为匹配解析模式里面就没有f"*"
这样的格式,所以用不了,不过字符串的属性还是继承了的https://docs.python.org/zh-cn/3/tutorial/inputoutput.html#formatted-string-literals
https://docs.python.org/zh-cn/3/library/string.html#formatstrings