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 相关文章推荐
4.与数据库的连接
Oct 09 PHP
php中iconv函数使用方法
May 24 PHP
php 无限级缓存的类的扩展
Mar 16 PHP
劣质的PHP代码简化
Feb 08 PHP
PHP array 的加法操作代码
Jul 24 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
解析Win7 XAMPP apache无法启动的问题
Jun 26 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 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实现Google plus的好友拖拽分组效果
2016/10/21 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
基于python实现雪花算法过程详解
2019/11/16 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
打架检讨书50字
2014/01/11 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
机关作风建设工作总结
2014/10/23 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
经典导游欢迎词
2015/01/26 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
求职自我评价怎么写
2015/03/09 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
Nginx配置之禁止指定IP访问
2022/05/02 Servers