滲透測試【seacms V9】

搭建seacms環境

我選擇在虛擬機中用寶塔搭建環境

將在官網選擇的下載下來的文件解壓后拖入寶塔面板的文件中

創建網站

添加站點

搭建完成seacmsV9

找到一個報錯口

代碼分析

<?php
@set_time_limit(0);
error_reporting(0);
$verMsg = ' V6.x UTF8';
$s_lang = 'utf-8';
$dfDbname = 'seacms';
$errmsg = '';
$insLockfile = dirname(__FILE__).'/install_lock.txt';define('sea_INC',dirname(__FILE__).'/../include');
define('sea_DATA',dirname(__FILE__).'/../data');
define('sea_ROOT',preg_replace("|[\\\/]install|",'',dirname(__FILE__)));
header("Content-Type: text/html; charset={$s_lang}");require_once(sea_ROOT.'/install/install.inc.php');
require_once(sea_INC.'/common.file.func.php');if(PHP_VERSION < '4.1.0') {$_GET = &$HTTP_GET_VARS;$_POST = &$HTTP_POST_VARS;$_COOKIE = &$HTTP_COOKIE_VARS;$_SERVER = &$HTTP_SERVER_VARS;$_ENV = &$HTTP_ENV_VARS;$_FILES = &$HTTP_POST_FILES;
}
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);
}if( file_exists(dirname(__FILE__).'/install_lock.txt') )
{exit(" 程序已運行安裝,如果你確定要重新安裝,請先從FTP中刪除 install/install_lock.txt!");
}if(empty($step))
{$step = 0;
}$PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$bbserver = 'http://'.preg_replace("/\:\d+/", '', $_SERVER['HTTP_HOST']).($_SERVER['SERVER_PORT'] && $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '');
$default_ucapi = $bbserver.'/ucenter';
$default_appurl = $bbserver.substr($PHP_SELF, 0, strpos($PHP_SELF, 'install/') - 1);if($step==0)
{include('./templates/step-0.html');exit();
}if($step==1)
{include('./templates/step-1.html');exit();
}else if($step==2)
{$phpv = phpversion();$sp_os = PHP_OS;$sp_gd = gdversion();$sp_server = $_SERVER['SERVER_SOFTWARE'];$sp_host = (empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_HOST'] : $_SERVER['REMOTE_ADDR']);$sp_name = $_SERVER['SERVER_NAME'];$sp_max_execution_time = ini_get('max_execution_time');$sp_allow_reference = (ini_get('allow_call_time_pass_reference') ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');$sp_allow_url_fopen = (ini_get('allow_url_fopen') ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');$sp_fsockopen = (function_exists('fsockopen')?'<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');$sp_iconv = (function_exists('iconv')?'<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');$sp_safe_mode = (ini_get('safe_mode') ? '<font color=red>[×]On</font>' : '<font color=green>[√]Off</font>');$sp_gd = ($sp_gd>0 ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');$sp_curl = (function_exists('curl_init') ? '<font color=green>[√]On</font>' : '<font color=#B8860B>[×]Off</font>');$sp_mysql = (function_exists('mysql_connect') ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');if($sp_mysql=='<font color=red>[×]Off</font>'){$sp_mysql_err = true;}else{$sp_mysql_err = false;}$sp_testdirs = array('/','/data','/data/admin','/data/cache','/data/mark','/install','/uploads/allimg','/uploads/editor','/uploads/litimg','/admin','/admin/ebak/bdata','/admin/ebak/zip','/js','/js/player','/js/ads');include('./templates/step-2.html');exit();
}
else if($step==3)
{@include sea_DATA.'/config.ucenter.php';if(!empty($_SERVER['REQUEST_URI'])){$scriptName = $_SERVER['REQUEST_URI'];}else{$scriptName = $_SERVER['PHP_SELF'];}$basepath = m_eregi_replace('install(.*)$','',$scriptName);$basepath = ltrim($basepath,'/');if(empty($_SERVER['HTTP_HOST'])){$baseurl = 'http://'.$_SERVER['HTTP_HOST'];}else{$baseurl = "http://".$_SERVER['SERVER_NAME'];}$rnd_cookieEncode = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(1000,9999).chr(mt_rand(ord('A'),ord('Z')));$ucapi = defined('UC_API') && UC_API ? UC_API : $default_ucapi;include('./templates/step-3.html');exit();
}else if($step==4)
{@include sea_DATA.'/config.ucenter.php';$configfile = sea_DATA.'/config.ucenter.php';$handle = fopen($configfile,'r');$configstr = fread($handle,filesize($configfile));$configstr = trim($configstr);$configstr = substr($configstr, -2) == '?>' ? substr($configstr, 0, -2) : $configstr;fclose($handle);$configstr = str_replace("define('INTEG_UC', ".addslashes(INTEG_UC).")", "define('INTEG_UC', ".$inuc.")", $configstr);$fp = fopen($configfile,'w');flock($fp,3);fwrite($fp,$configstr);fclose($fp);$conn = mysql_connect($dbhost,$dbuser,$dbpwd) or die("<script>alert('數據庫服務器或登錄密碼無效,\\n\\n無法連接數據庫,請重新設定!');history.go(-1);</script>");mysql_query("CREATE DATABASE IF NOT EXISTS `".$dbname."`;",$conn);my_select_db($conn,$dbname) or die("<script>alert('選擇數據庫失敗,可能是你沒權限,請預先創建一個數據庫!');history.go(-1);</script>");//獲得數據庫版本信息$rs = mysql_query("SELECT VERSION();",$conn);$row = mysql_fetch_array($rs);$mysqlVersions = explode('.',trim($row[0]));$mysqlVersion = $mysqlVersions[0].".".$mysqlVersions[1];mysql_query("SET NAMES '$dblang',character_set_client=binary,sql_mode='';",$conn);$fp = fopen(dirname(__FILE__)."/common.inc.php","r");$configStr1 = fread($fp,filesize(dirname(__FILE__)."/common.inc.php"));fclose($fp);$fp = fopen(dirname(__FILE__)."/config.cache.inc.php","r");$configStr2 = fread($fp,filesize(dirname(__FILE__)."/config.cache.inc.php"));fclose($fp);//common.inc.php$configStr1 = str_replace("~dbhost~",$dbhost,$configStr1);$configStr1 = str_replace("~dbname~",$dbname,$configStr1);$configStr1 = str_replace("~dbuser~",$dbuser,$configStr1);$configStr1 = str_replace("~dbpwd~",$dbpwd,$configStr1);$configStr1 = str_replace("~dbprefix~",$dbprefix,$configStr1);$configStr1 = str_replace("~dblang~",$dblang,$configStr1);@chmod(sea_ROOT.'/data',0777);$fp = fopen(sea_ROOT."/data/common.inc.php","w") or die("<script>alert('寫入配置失敗,請檢查../data目錄是否可寫入!');history.go(-1);</script>");fwrite($fp,$configStr1);fclose($fp);//config.cache.inc.php$cmspath = trim(m_ereg_replace('/{1,}','/',$cmspath));//if($cmspath!='' && !m_ereg('^/',$cmspath)) $cmspath = '/'.$cmspath;$cookie_encode=md5(time());if($cmspath=='') $indexUrl = '/';else $indexUrl = $cmspath;$configStr2 = str_replace("~baseurl~",$baseurl,$configStr2);$configStr2 = str_replace("~basepath~",$cmspath,$configStr2);$configStr2 = str_replace("~indexurl~",$indexUrl,$configStr2);$configStr2 = str_replace("~webname~",$webname,$configStr2);$configStr2 = str_replace("~cookie_encode~",$cookie_encode,$configStr2);$fp = fopen(sea_ROOT.'/data/config.cache.inc.php','w');fwrite($fp,$configStr2);fclose($fp);$fp = fopen(sea_ROOT.'/data/config.cache.bak.php','w');fwrite($fp,$configStr2);fclose($fp);if($mysqlVersion >= 4.1){$sql4tmp = "ENGINE=MyISAM DEFAULT CHARSET=".$dblang;}//創建數據表$query = '';$fp = fopen(dirname(__FILE__).'/seacms.sql','r');while(!feof($fp)){$line = rtrim(fgets($fp,1024));if(m_ereg(";$",$line)){$query .= $line."\n";$query = str_replace('sea_',$dbprefix,$query);if($mysqlVersion < 4.1){$rs = mysql_query($query,$conn);}else{if(m_eregi('CREATE',$query)){$rs = mysql_query(m_eregi_replace('TYPE=MyISAM',$sql4tmp,$query),$conn);}else{$rs = mysql_query($query,$conn);}}$query='';}else if(!m_ereg("^(//|--)",$line)){$query .= $line;}}fclose($fp);	//導入默認數據$query = '';$fp = fopen(dirname(__FILE__).'/seacmsdata.sql','r');while(!feof($fp)){$line = rtrim(fgets($fp,1024));if(m_ereg(";$",$line)){$query .= $line;$query = str_replace('sea_',$dbprefix,$query);if($mysqlVersion < 4.1) $rs = mysql_query($query,$conn);else $rs = mysql_query(str_replace('#~lang~#',$dblang,$query),$conn);$query='';}else if(!m_ereg("^(//|--)",$line)){$query .= $line;}}fclose($fp);//增加管理員帳號$adminquery = "INSERT INTO `{$dbprefix}admin` (name,password,logincount,loginip,logintime,groupid,state) VALUES ('$adminuser', '".substr(md5($adminpwd),5,20)."', 0, '127.0.0.1', '".time()."', 1, 1);";mysql_query($adminquery,$conn);$flinkquery = "INSERT INTO `{$dbprefix}flink` (`id`, `sortrank`, `url`, `webname`, `msg`, `email`, `logo`, `dtime`, `ischeck`) VALUES (NULL, '0', 'http://www.seacms.net', '海洋cms', '', '', '', '1432312055', '1');";mysql_query($flinkquery,$conn);mysql_close($conn);//鎖定安裝程序$fp = fopen($insLockfile,'w');fwrite($fp,'ok');fclose($fp);//修改后臺文件夾名稱function randomkeys($length)   {   $pattern = 'abcdefgh1234567890jklmnopqrstuvwxyz';  for($i=0;$i<$length;$i++)   {   $key .= $pattern{mt_rand(0,35)}; }   return $key;   }$newadminname=randomkeys(6);$jpath='../admin';$xpath='../'.$newadminname;$cadmin=rename($jpath,$xpath);if($cadmin==true){$cadmininfo=$baseurl.'/'.$newadminname;}else{$cadmininfo=$baseurl.'/admin';}include('./templates/step-5.html');exit();}else if($step==10)
{header("Pragma:no-cache\r\n");header("Cache-Control:no-cache\r\n");header("Expires:0\r\n");$conn = @mysql_connect($dbhost,$dbuser,$dbpwd);if($conn){$rs = my_select_db($conn,$dbname);if(!$rs){$rs = mysql_query(" CREATE DATABASE `$dbname`; ",$conn);if($rs){mysql_query(" DROP DATABASE `$dbname`; ",$conn);echo "<font color='green'>信息正確</font>";}else{echo "<font color='red'>數據庫不存在,也沒權限創建新的數據庫!</font>";}}else{echo "<font color='green'>信息正確</font>";}}else{echo "<font color='red'>數據庫連接失敗!</font>";}@mysql_close($conn);exit();
}function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {$return = '';$matches = parse_url($url);$host = $matches['host'];$path = $matches['path'] ? $matches['path'].(isset($matches['query']) && $matches['query'] ? '?'.$matches['query'] : '') : '/';$port = !empty($matches['port']) ? $matches['port'] : 80;if($post) {$out = "POST $path HTTP/1.0\r\n";$out .= "Accept: */*\r\n";$out .= "Accept-Language: zh-cn\r\n";$out .= "Content-Type: application/x-www-form-urlencoded\r\n";$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";$out .= "Host: $host\r\n";$out .= 'Content-Length: '.strlen($post)."\r\n";$out .= "Connection: Close\r\n";$out .= "Cache-Control: no-cache\r\n";$out .= "Cookie: $cookie\r\n\r\n";$out .= $post;} else {$out = "GET $path HTTP/1.0\r\n";$out .= "Accept: */*\r\n";$out .= "Accept-Language: zh-cn\r\n";$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";$out .= "Host: $host\r\n";$out .= "Connection: Close\r\n";$out .= "Cookie: $cookie\r\n\r\n";}if(function_exists('fsockopen')) {$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);} elseif (function_exists('pfsockopen')) {$fp = @pfsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);} else {$fp = false;}if(!$fp) {return '';} else {stream_set_blocking($fp, $block);stream_set_timeout($fp, $timeout);@fwrite($fp, $out);$status = stream_get_meta_data($fp);if(!$status['timed_out']) {while (!feof($fp)) {if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header == "\n")) {break;}}$stop = false;while(!feof($fp) && !$stop) {$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));$return .= $data;if($limit) {$limit -= strlen($data);$stop = $limit <= 0;}}}@fclose($fp);return $return;}
}function save_uc_config($config, $file) {$success = false;list($appauthkey, $appid, $ucdbhost, $ucdbname, $ucdbuser, $ucdbpw, $ucdbcharset, $uctablepre, $uccharset, $ucapi, $ucip) = $config;$link = mysql_connect($ucdbhost, $ucdbuser, $ucdbpw, 1);$uc_connnect = $link && my_select_db($link,$ucdbname) ? 'mysql' : '';$date = gmdate("Y-m-d H:i:s", time() + 3600 * 8);$year = date('Y');$config = <<<EOT
<?phpdefine('UC_CONNECT', '$uc_connnect');define('UC_DBHOST', '$ucdbhost');
define('UC_DBUSER', '$ucdbuser');
define('UC_DBPW', '$ucdbpw');
define('UC_DBNAME', '$ucdbname');
define('UC_DBCHARSET', '$ucdbcharset');
define('UC_DBTABLEPRE', '`$ucdbname`.$uctablepre');
define('UC_DBCONNECT', 0);define('UC_CHARSET', '$uccharset');
define('UC_KEY', '$appauthkey');
define('UC_API', '$ucapi');
define('UC_APPID', '$appid');
define('UC_IP', '$ucip');
define('UC_PPP', 20);
?>
EOT;if($fp = fopen($file, 'w')) {fwrite($fp, $config);fclose($fp);$success = true;}return $success;
}
?>

目前還在進行滲透-_-

滲透出來了作者會更新>_<

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70844.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70844.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

論文閱讀筆記:Continual Forgetting for Pre-trained Vision Models

論文閱讀筆記&#xff1a;Continual Forgetting for Pre-trained Vision Models 1 背景2 創新點3 方法4 模塊4.1 問題設置4.2 LoRA4.3 概述4.4 GS-LoRA4.5 損失函數 5 效果6 結論 1 背景 出于隱私和安全考慮&#xff0c;如今從預先訓練的視覺模型中刪除不需要的信息的需求越來…

車載DoIP診斷框架 --- 連接 DoIP ECU/車輛的故障排除

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

【爬蟲基礎】第二部分 爬蟲基礎理論 P1/3

上節內容回顧&#xff1a;【爬蟲基礎】第一部分 網絡通訊 P1/3-CSDN博客 【爬蟲基礎】第一部分 網絡通訊-Socket套接字 P2/3-CSDN博客 【爬蟲基礎】第一部分 網絡通訊-編程 P3/3-CSDN博客 爬蟲相關文檔&#xff0c;希望互相學習&#xff0c;共同進步 風123456789&#xff…

Compose 手勢處理,增進交互體驗

Compose 手勢處理&#xff0c;增進交互體驗 概述常用手勢處理Modifierclickable()combinedClickable()draggable()swipeable()transformable()scrollable()nestedScrollNestedScrollConnectionNestedScrollDispatcher 定制手勢處理使用 PointerInput ModifierPointerInputScope…

ue5 3dcesium中從本地配置文件讀取路3dtilles的路徑

關卡藍圖中獲得3dtiles的引用 拉出設置url 設置路徑 至于設置的路徑從哪里來 可以使用varest讀取文件里的接送字符串 path中配置地址 path變量的值為: Data/VillageStartMapConfig.json此地址代表content的地下的data文件夾里的config.json文件 {"FilePath": &quo…

音視頻入門基礎:RTP專題(12)——RTP中的NAL Unit Type簡介

一、引言 RTP封裝H.264時&#xff0c;RTP對NALU Header的nal_unit_type附加了擴展含義。 由《音視頻入門基礎&#xff1a;H.264專題&#xff08;4&#xff09;——NALU Header&#xff1a;forbidden_zero_bit、nal_ref_idc、nal_unit_type簡介》可以知道&#xff0c;nal_unit…

搜索賦能:大型語言模型的知識增強與智能提升

引言 近年來&#xff0c;大型語言模型&#xff08;LLM&#xff09;取得了顯著的進展&#xff0c;并在各個領域展現出強大的能力。然而&#xff0c;LLM也存在一些局限性&#xff0c;尤其是在知識庫方面。由于訓練數據的局限性&#xff0c;LLM無法獲取最新的知識&#xff0c;也無…

EX_25/2/24

寫一個三角形類&#xff0c;擁有私有成員 a,b,c 三條邊 寫好構造函數初始化 abc 以及 abc 的set get 接口 再寫一個等腰三角形類&#xff0c;繼承自三角形類 1&#xff1a;寫好構造函數&#xff0c;初始化三條邊 2&#xff1a;要求無論如何&#xff0c;等腰三角形類對象&#x…

nv docker image 下載與使用命令備忘

1&#xff0c;系統需求 Requirements for GPU Simulation GPU Architectures Volta, Turing, Ampere, Ada, Hopper NVIDIA GPU with Compute Capability 7.0 CUDA 11.x (Driver 470.57.02), 12.x (Driver 525.60.13) Supported Systems CPU architectures x86_64, ARM…

學習記錄:初次學習使用transformers進行大模型微調

初次使用transformers進行大模型微調 環境&#xff1a; 電腦配置&#xff1a; 筆記本電腦&#xff1a;I5&#xff08;6核12線程&#xff09; 16G RTX3070&#xff08;8G顯存&#xff09; 需要自行解決科學上網 Python環境&#xff1a; python版本:3.8.8 大模型&#xff1a…

【Java學習】Object類與接口

面向對象系列五 一、引用 1.自調傳自與this類型 2.類變量引用 3.重寫時的發生 二、Object類 1.toString 2.equals 3.hashCode 4.clone 三、排序規則接口 1.Comparable 2.Comparator 一、引用 1.自調傳自與this類型 似復刻變量調用里面的非靜態方法時&#xff0c;都…

OpenEuler學習筆記(三十五):搭建代碼托管服務器

以下是主流的代碼托管軟件分類及推薦&#xff0c;涵蓋自托管和云端方案&#xff0c;您可根據團隊規模、功能需求及資源情況選擇&#xff1a; 一、自托管代碼托管平臺&#xff08;可私有部署&#xff09; 1. GitLab 簡介: 功能全面的 DevOps 平臺&#xff0c;支持代碼托管、C…

Vscode無法加載文件,因為在此系統上禁止運行腳本

1.在 vscode 終端執行 get-ExecutionPolicy 如果返回是Restricted&#xff0c;說明是禁止狀態。 2.在 vscode 終端執行set-ExecutionPolicy RemoteSigned 爆紅說明沒有設置成功 3.在 vscode 終端執行Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 然后成功后你再在終…

Transformer 架構 理解

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; Transformer 架構&#xff1a;encoder/decoder 內部細節。 的介紹&#xff0c;說明 Transformer 架構相比當時主流的 RNN/CNN 架構的創新之處&#xff1a; 在 transformer 之前&#xff0c;最先進的架構…

事務的4個特性和4個隔離級別

事務的4個特性和4個隔離級別 1. 什么是事務2. 事務的ACID特性2.1 原子性2.2 一致性2.3 持久性2.4 隔離性 3. 事務的創建4. 事務并發時出現的問題4.1 DIRTY READ 臟讀4.2 NON - REPEATABLR READ 不可重復讀4.3 PHANTOM READ 幻讀 5. 事務的隔離級別5.1 READ UNCOMMITTED 讀未提交…

LeetCode熱題100- 字符串解碼【JavaScript講解】

古語有云&#xff1a;“事以密成&#xff0c;語以泄敗”&#xff01; 關于字符串解碼&#xff1a; 題目&#xff1a;題解&#xff1a;js代碼&#xff1a;代碼中遇到的方法&#xff1a;repeat方法&#xff1a;為什么這里不用this.strstack.push(result)&#xff1f; 題目&#x…

水利工程安全包括哪幾個方面

水利工程安全培訓的內容主要包括以下幾個方面&#xff1a; 基礎知識和技能培訓 &#xff1a; 法律法規 &#xff1a;學習水利工程相關的安全生產法律法規&#xff0c;了解安全生產標準及規范。 事故案例 &#xff1a;通過分析事故案例&#xff0c;了解事故原因和教訓&#x…

淺談新能源汽車充電樁建設問題分析及解決方案

摘要&#xff1a; 在全球倡導低碳減排的大背景下&#xff0c;新能源成為熱門行業在全球范圍內得以開展。汽車尾氣排放會在一定程度上加重溫室效應&#xff0c;并且化石能源的日漸緊缺也迫切對新能源汽車發展提出新要求。現階段的新能源汽車以電力汽車為主&#xff0c;與燃油汽…

05-1基于vs2022的c語言筆記——運算符

目錄 前言 5.運算符和表達式 5-1-1 加減乘除運算符 1.把變量進行加減乘除運算 2.把常量進行加減乘除運算 3.對于比較大的數&#xff08;往數軸正方向或者負方向&#xff09;&#xff0c;要注意占位符的選取 4.浮點數的加減乘除 5-1-2取余/取模運算符 1.基本規則 2.c語…

ubuntu:換源安裝docker-ce和docker-compose

更新apt源 apt換源&#xff1a;ubuntu&#xff1a;更新阿里云apt源-CSDN博客 安裝docker-ce 1、更新軟件源 sudo apt update2、安裝基本軟件 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y3、指定使用阿里云鏡像 su…