php实现批量删除挂马文件及批量替换页面内容完整实例


Posted in PHP onJuly 08, 2016

本文实例讲述了php实现批量删除挂马文件及批量替换页面内容的方法。分享给大家供大家参考,具体如下:

<?php
# functionality:    本程序可以扫描指定目录的所有文件,进行内容替换。可用于被批量挂马的删除以及批量更新页面某些内容。
#           本程序适用于对UTF-8的页面进行修改。
set_time_limit(3600); //脚本运行时间
?>
<?php
if($_POST['Submit']=='开始执行操作'){
 $dir = $_POST['searchpath'];
 $shortname = $_POST['shortname'];
 $isall = $_POST['isall'];
 $isreg = $_POST['isreg'];
if (!get_magic_quotes_gpc()) {
 $sstr = $_POST['sstr'];
 $rpstr = $_POST['rpstr'];
} else {
 $sstr = stripslashes($_POST['sstr']);
 $rpstr = stripslashes($_POST['rpstr']);
}
 //分析shortname
 $arrext = explode ("|",$shortname);
 if (!is_dir($dir)) return;
 if ($sstr == '') return;
 //把末尾的/去掉
 if(substr($dir,-1)=='/') $dir = substr($dir,0,strrpos($dir,"/"));
 //罗列所有目录
 if ($isall == 1){
  hx_dirtree($dir);
 }else{
  hx_dealdir($dir);
 }
exit();
}
function hx_dirtree($path="."){
 global $sstr,$rpstr,$isreg,$arrext;
 $d = dir($path);
 while(false !== ($v = $d->read())) {
  if($v == "." || $v == "..") continue;
  $file = $d->path."/".$v;
  if(is_dir($file)) {
   echo "<p>$v</p>"; hx_dirtree($file);
  }else{
    $ext=substr(strrchr($v,"."), 1);
    if( in_array($ext , $arrext) ){
     echo "<li>$file ";
     $body = file_get_contents($file);
     if($isreg == 1){
     $body2 = preg_replace($sstr, $rpstr, $body);
     }else{
     $body2 = str_replace($sstr, $rpstr, $body);
     }
     if($body != $body2 && $body2 != ''){
      tofile($file,$body2);
      echo ' OK';
     }else{
      echo ' NO';
     }
     echo '</li>';
    }
  }
 }
 $d->close();
}
function hx_dealdir($dir){
 global $sstr,$rpstr,$isreg,$arrext;
  if ($dh = opendir($dir)) {
  while (false !== ($file = readdir($dh))) {
   if(filetype($dir.'/'.$file)=='file'){
    $ext=substr(strrchr($file,"."), 1);
    if( in_array($ext , $arrext) ){
     echo "<li>$file ";
     $body = file_get_contents($dir.'/'.$file);
     if($isreg == 1){
     $body2 = preg_replace($sstr, $rpstr, $body);
     }else{
     $body2 = str_replace($sstr, $rpstr, $body);
     }
     if($body != $body2 && $body2 != ''){
      tofile($dir.'/'.$file,$body2);
      echo ' OK';
     }else{
      echo ' NO';
     }
     echo '</li>';
    }
   }
  }
  closedir($dh);
  }
}
//把生成文件的过程写出函数
function tofile($file_name,$file_content){
if (is_file ($file_name)){
 @unlink ($file_name);
}
 $handle = fopen ($file_name,"w");
 if (!is_writable ($file_name)){
  return false;
 }
 if (!fwrite ($handle,$file_content)){
  return false;
 }
 fclose ($handle); //关闭指针
 return $file_name;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>批量替换程序|木马批量删除</title>
<style type="text/css">
body{background:#FFFFFF;color:#000;font-size:12px;}
#top{text-align:center;}
h1,p,form{margin:0;padding:0;}
h1{font-size;14px;}
</style>
</head>
<body>
 <div id="top">
<h1>批量替换程序(UTF-8版)</h1>
<div>本程序可以扫描指定目录的所有文件,进行<strong>内容替换</strong>。可用于被批量挂马的删除以及批量更新页面某些内容。<br/>
在文件数量非常多的情况下,本操作比较占用服务器资源,请确脚本超时限制时间允许更改,否则可能无法完成操作。</div>
 </div>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" name="form1" target="stafrm" method="post">
<table width="95%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#666666">
 <tr>
  <td width="10%" bgcolor="#FFFFFF"><strong> 起始根路径:</strong></td>
  <td width="90%" bgcolor="#FFFFFF"><input name="searchpath" type="text" id="searchpath" value="./test" size="20" />
   点表示当前目录,末尾不要加/ <input type="checkbox" name="isall" value="1" />包含此目录下所有目录</td>
 </tr>
 <tr>
  <td bgcolor="#FFFFFF"><strong> 文件扩展名:</strong></td>
  <td bgcolor="#FFFFFF"><input name="shortname" type="text" id="shortname" size="20" value="php|htm" />
   多个请用|隔开</td>
 </tr>
 <tr id="rpct">
  <td height="64" colspan="2" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="1" cellpadding="1">
   <tr bgcolor="#EDFCE2">
    <td colspan="4"><strong>内容替换选项:</strong> <input type="checkbox" name="isreg" value="1" />使用正则表达式</td>
   </tr>
   <tr>
    <td colspan="4">替换内容类默认使用字符串替换,也可以使用正则表达式(需勾选)。"替换为"不填写的话,就表示删除"替换内容"。</td>
   </tr>
   <tr>
    <td width="10%"> 替换内容:</td>
    <td width="36%"><textarea name="sstr" id="sstr" style="width:90%;height:45px"></textarea></td>
    <td width="10%">替 换 为:</td>
    <td><textarea name="rpstr" id="rpstr" style="width:90%;height:45px"></textarea></td>
   </tr>
  </table></td>
 </tr>
 <tr>
  <td colspan="2" height="20" align="center" bgcolor="#E2F5BC"><input type="submit" name="Submit" value="开始执行操作" class="inputbut" /></td>
 </tr>
</table>
 </form>
<table width="95%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#666666">
 <tr bgcolor="#FFFFFF">
  <td id="mtd">
   <div id='mdv' style='width:100%;height:100;'>
    <iframe name="stafrm" frameborder="0" id="stafrm" width="100%" height="100%"></iframe>
   </div>
   <script type="text/javascript">
   document.all.mdv.style.pixelHeight = screen.height - 450;
   </script>
  </td>
 </tr>
</table>
</body>
</html>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
php解析url的三个示例
Jan 20 PHP
小谈php正则提取图片地址
Mar 27 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
PHP编写RESTful接口
Feb 23 PHP
php阳历转农历优化版
Aug 08 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 PHP
php更新cookie内容的详细方法
Sep 30 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 PHP
PHP线程的内存回收问题
Jul 08 #PHP
php实现xml与json之间的相互转换功能实例
Jul 07 #PHP
PHP登录验证码的实现与使用方法
Jul 07 #PHP
PHP常见的6个错误提示及解决方法
Jul 07 #PHP
php生成mysql的数据字典
Jul 07 #PHP
php自定义函数实现JS的escape的方法示例
Jul 07 #PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 #PHP
You might like
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
python中split方法用法分析
2015/04/17 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
使用Python函数进行模块化的实现
2019/11/15 Python
python实现翻译word表格小程序
2020/02/27 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
C语言50道问题
2014/10/23 面试题
化学教育专业自荐信
2014/07/04 职场文书
小学语文复习计划
2015/01/19 职场文书
旷课检讨书范文
2015/01/27 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
windows server2008 开启端口的实现方法
2022/06/25 Servers