SSTI注入中判断服务器模板的方法(含例题)

目录

模板判断

 [CISCN 2019华东南]Web11(smarty模板)


模板判断

以下是一张广为流传的图

f9e1f84bf1ca4501b8a3e67a32b7f312.jpg

这幅图的含义是通过这些指令去判断对方用的是什么模板,下面解释一下这幅图的意思:
我们可以看到有红色剪头和绿色箭头,绿色是执行成功,红色是执行失败。
首先是注入${7*7}没有回显出49的情况,这种时候就是执行失败走红线,再次注入{{7*7}}如果还是没有回显49就代表这里没有模板注入;如果注入{{7*7}}回显了49代表执行成功,继续往下走注入{{7*'7'}},如果执行成功回显7777777说明是jinja2模板,如果回显是49就说明是Twig模板。
然后回到最初注入${7*7}成功回显出49的情况,这种时候是执行成功走绿线,再次注入a{*comment*}b,如果执行成功回显ab,就说明是Smarty模板;如果没有回显出ab,就是执行失败走红线,注入${"z".join("ab")},如果执行成功回显出zab就说明是Mako模板。

 [CISCN 2019华东南]Web11(smarty模板)

点开题目

翻到底下还能看见Build With Smarty !,说明这是smarty模板,而get XFF也明显提示了要抓包在X-Forwarded-For注入,把a{*comment*}b丢进去判断发现current ip确实是返回ab,确定是smarty模板

smarty简介

smarty是一个php模板引擎,其项目地址:https://github.com/smarty-php/smarty。是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。

{if} 标签是Smarty模板中的一个合法标签,它不会触发相同的安全检查

在确认是smarty模板的情况下可以这样注入

{if system('ls')}{/if}

继续cat /flag

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值