ssti

ssti

十一月 23, 2021

flask框架

flask框架是使用python编写的模板,所以我们注入的语句要符合python的语法。

ssti注入的目的是让读取flag,所以要找到一个类能执行读取flag的代码

__class__ #返回type类型,查看对象的类型
__bases__ #返回tuple类型,列出该类的基类
__mro__ #返回tuple类型,给出解析方法调用的顺序
__subclasses__() #返回内建方法builtin_function_or_method,获取一个类的子类
_globals_ #返回dict类型,对函数进行操作,获取当前空间下能使用的模块、方法、变量

用上方列出的魔术方法找到能执行os或eval的类

然后用__init __魔术方法在该类被调用的时候执行读flag的代码

smarty模板

smarty模板是基于php的模板并且能直接用system函数执行系统命令

smarty中可以用if来快速读取flag语法

{if readfile(/flag)}{/if}

twig模板

twig模板也是基于php的一个模板,与smarty不同他不能直接使用函数

详情参考

https://xz.aliyun.com/t/10056