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 相关文章推荐
PHP5 安装方法
Jan 15 PHP
php 远程关机操作的代码
Dec 05 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
分享一下贝贝成长进度的php代码
Sep 14 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
php自定义hash函数实例
May 05 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
浅析PHP7 的垃圾回收机制
Sep 06 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 PHP
PHP Web表单生成器案例分析
Jun 02 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
西德产收音机
2021/03/01 无线电
php 结果集的分页实现代码
2009/03/10 PHP
简单的php文件上传(实例)
2013/10/27 PHP
javascript处理table表格的代码
2010/12/06 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
python Tornado框架的使用示例
2020/10/19 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
Html5新标签解释及用法
2012/02/17 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
单位单身证明范本
2014/01/11 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
宾馆安全管理制度
2015/08/06 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis
Python实现批量自动整理文件
2022/03/16 Python