。。感觉是SSTI
输入{1+1}
返回{1+1}
输入{{1+1}}
直接报错。
这就有点迷了。接触过的SSTI都是构造payload不同。也没遇到过报错这种情况
看writeup后。发现还能通过{%%}
这种方式去注入
这是一种盲注。通过{% if 1 %}1{% endif %}
可以看到。虽然没回显。但是payload确实正常执行
题目上。却直接报错。
猜测是触发了黑名单。从最简单的开始。fuzz
{% if 1 %}1{% endif %}
#报错
猜测是if触发了黑名单。然后就没思路了。用了for也不行。
继续看writeup。。。是字符串置换为空。。。
blacklist = ['import', 'getattr', 'os', 'class', 'subclasses', 'mro', 'request', 'args', 'eval', 'if', 'for',
' subprocess', 'file', 'open', 'popen', 'builtins', 'compile', 'execfile', 'from_pyfile', 'local',
'self', 'item', 'getitem', 'getattribute', 'func_globals', 'config']
知道置换后。那就很简单了。。
payload。将替换的字符。双写绕过