BugkuWeb:聪明的PHP

提示让我们传参:
在这里插入图片描述随便url里传入一个参数,得到一串代码:
在这里插入图片描述代码审计,当为False时都会跳转到template.html,在elseif中过滤了很多读取的命令。
出于习惯,随手就来了个简单的模板注入,发现有回显!:
在这里插入图片描述这道题是一道Smarty的模板注入,查找资料:

Smarty是基于PHP开发的,对于Smarty的SSTI的利用手段与常见的flask的SSTI
有很大区别。

一般情况下输入{$smarty.version}就可以看到返回的smarty的版本号。
Smarty支持使用{php}{/php}标签来执行被包裹其中的php指令,最常规的思路自
然是先测试该标签在Smarty3的官方手册里有以下描述:Smarty已经废弃{php}
标签,强烈建议不要使用。在Smarty 3.1{php}仅在SmartyBC中可用。

静态方法:通过self获取Smarty类再调用其静态方法实现文件读写被网上很多文章
采用:{self::getStreamVariable(file:///etc/passwd”)},但是在3.1.
30的Smarty版本中官方已经把该静态方法删除。

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

但过滤了很多命令执行,翻阅资料找到passthru()命令
在这里插入图片描述准备好了前期工作,可以开始注入了
查看目录,发现可疑点start.sh:{if passthru('ls -al /')}{/if}
在这里插入图片描述用tac命令读取starts.sh:{if passthru('tac /starts.sh')}{/if}
在这里插入图片描述代码审计,意思是T是一个随机数,flag就在$T文件里

再看看根目录有没有以"_随机数"的文件名,发现_25275,查看文件发现flag:{if passthru('tac /_25275')}{/if}

在这里插入图片描述

总结:
Smarty模板注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值