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 相关文章推荐
require(),include(),require_once()和include_once()区别
Mar 27 PHP
php 将excel导入mysql
Nov 09 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
使用PHP导出Word文档的原理和实例
Oct 21 PHP
php广告加载类用法实例
Sep 23 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
PHP网络操作函数汇总
May 18 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
php图形jpgraph操作实例分析
Feb 22 PHP
PHP _construct()函数讲解
Feb 03 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
php中去除所有js,html,css代码
2010/10/12 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
Python实现的双色球生成功能示例
2017/12/18 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
军训自我鉴定范文
2014/02/13 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
毕业大学生自荐信
2014/06/17 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
公司总经理岗位职责
2015/04/01 职场文书
2015年环保局工作总结
2015/05/22 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
业余无线电通联Q语
2022/02/18 无线电
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis