ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

xff注入 [CISCN2019 华东南赛区]Web111

2026/9/24 3:59:47 拓冰建站 浏览量
xff注入 [CISCN2019 华东南赛区]Web111

打开题目

 

看见smarty

想到模板注入

又看见ip

想到xff注入

一般情况下输入{$smarty.version}就可以看到返回的smarty的版本号。该题目的Smarty版本是3.1.30

在Smarty3的官方手册里有以下描述:

Smarty已经废弃{php}标签,强烈建议不要使用。在Smarty 3.1,{php}仅在SmartyBC中可用。所以只能另找方法

{if}标签

官方文档中看到这样的描述:

Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if}. 也可以使用{else} 和 {elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如*||*,or,&&,and,is_array(), 等等

有回显

说明有这个漏洞,接着去找flag,可以用ls去查看当前目录,猜测flag在根目录,这里直接用cat了

所以也可以使用:{if show_source("/flag")}{/if} 来获得flag

知识点:

 1.Smarty已经废弃{php}标签,强烈建议不要使用。在Smarty 3.1,{php}仅在SmartyBC中可用。

2.{literal}可以让一个模板区域的字符原样输出。这经常用于保护页面上的Javascript或css样式表,避免因为Smarty的定界符而错被解析

3.Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if}. 也可以使用{else} 和 {elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如||,or,&&,and,is_array(), 等