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不同他不能直接使用函数
详情参考
查看评论