!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/phpMyAdmin/libraries/import/   drwxr-xr-x
Free 50.96 GB of 127.8 GB (39.87%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     sql.php (7.03 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* $Id: sql.php,v 1.10.2.1 2006/03/23 16:58:09 nijel Exp $ */
// vim: expandtab sw=4 ts=4 sts=4:

/* SQL import plugin for phpMyAdmin */

if (isset($plugin_list)) {
    
$plugin_list['sql'] = array(
        
'text' => 'strSQL',
        
'extension' => 'sql',
        
'options_text' => 'strSQLImportOptions',
        );
} else {
/* We do not define function when plugin is just queried for information above */
    
$buffer '';
    
// Defaults for parser
    
$sql '';
    
$start_pos 0;
    
$i 0;
    while (!(
$finished && $i >= $len) && !$error && !$timeout_passed) {
        
$data PMA_importGetNextChunk();
        if (
$data === FALSE) {
            
// subtract data we didn't handle yet and stop processing
            
$offset -= strlen($buffer);
            break;
        } elseif (
$data === TRUE) {
            
// Handle rest of buffer
        
} else {
            
// Append new data to buffer
            
$buffer .= $data;
            
// Do not parse string when we're not at the end and don't have ; inside
            
if ((strpos($buffer';') === FALSE) && !$finished) {
                continue;
            }
        }
        
// Current length of our buffer
        
$len strlen($buffer);
        
// Grab some SQL queries out of it
        
while ($i $len) {
            
// Find first interesting character, several strpos seem to be faster than simple loop in php:
            //while (($i < $len) && (strpos('\'";#-/', $buffer[$i]) === FALSE)) $i++;
            //if ($i == $len) break;
            
$oi $i;
            
$p1 strpos($buffer'\''$i);
            if (
$p1 === FALSE) {
                
$p1 2147483647;
            }
            
$p2 strpos($buffer'"'$i);
            if (
$p2 === FALSE) {
                
$p2 2147483647;
            }
            
$p3 strpos($buffer';'$i);
            if (
$p3 === FALSE) {
                
$p3 2147483647;
            }
            
$p4 strpos($buffer'#'$i);
            if (
$p4 === FALSE) {
                
$p4 2147483647;
            }
            
$p5 strpos($buffer'--'$i);
            if (
$p5 === FALSE || $p5 >= ($len 2) || $buffer[$p5 2] > ' ') {
                
$p5 2147483647;
            }
            
$p6 strpos($buffer'/*'$i);
            if (
$p6 === FALSE) {
                
$p6 2147483647;
            }
            
$p7 strpos($buffer'`'$i);
            if (
$p7 === FALSE) {
                
$p7 2147483647;
            }
            
$i min ($p1$p2$p3$p4$p5$p6$p7);
            if (
$i == 2147483647) {
                
$i $oi;
                if (!
$finished) {
                    break;
                }
                
// at the end there might be some whitespace...
                
if (trim($buffer) == '') {
                    
$buffer '';
                    
$len 0;
                    break;
                }
                
// We hit end of query, go there!
                
$i strlen($buffer) - 1;
            }

            
// Grab current character
            
$ch $buffer[$i];

            
// Quotes
            
if (!(strpos('\'"`'$ch) === FALSE)) {
                
$quote $ch;
                
$endq FALSE;
                while (!
$endq) {
                    
// Find next quote
                    
$pos strpos($buffer$quote$i 1);
                    
// No quote? Too short string
                    
if ($pos === FALSE) {
                        
// We hit end of string => unclosed quote, but we handle it as end of query
                        
if ($finished) {
                            
$endq TRUE;
                            
$i $len 1;
                        }
                        break;
                    }
                    
// Was not the quote escaped?
                    
$j $pos 1;
                    while (
$buffer[$j] == '\\'$j--;
                    
// Even count means it was not escaped
                    
$endq = (((($pos 1) - $j) % 2) == 0);
                    
// Skip the string
                    
$i $pos;
                }
                if (!
$endq) {
                    break;
                }
                
$i++;
                
// Aren't we at the end?
                
if ($finished && $i == $len) {
                    
$i--;
                } else {
                    continue;
                }
            }

            
// Not enough data to decide
            
if ((($i == ($len 1) && ($ch == '-' || $ch == '/'))
                || (
$i == ($len 2) && (($ch == '-' && $buffer[$i 1] == '-') || ($ch == '/' && $buffer[$i 1] == '*')))
                ) && !
$finished) {
                break;
            }
            
            
// Comments
            
if ($ch == '#'
                    
|| ($i < ($len 1) && $ch == '-' && $buffer[$i 1] == '-' && (($i < ($len 2) && $buffer[$i 2] <= ' ') || ($i == ($len 1) && $finished)))
                    || (
$i < ($len 1) && $ch == '/' && $buffer[$i 1] == '*')
                    ) {
                
// Copy current string to SQL
                
if ($start_pos != $i) {
                    
$sql .= substr($buffer$start_pos$i $start_pos);
                }
                
// Skip the rest
                
$i strpos($buffer$ch == '/' '*/' "\n"$i);
                
// didn't we hit end of string?
                
if ($i === FALSE) {
                    if (
$finished) {
                        
$i $len 1;
                    } else {
                        break;
                    }
                }
                
// Skip *
                
if ($ch == '/') {
                    
$i++;
                }
                
// Skip last char
                
$i++;
                
// Next query part will start here 
                
$start_pos $i;
                
// Aren't we at the end?
                
if ($i == $len) {
                    
$i--;
                } else {
                    continue;
                }
            }

            
// End of SQL
            
if ($ch == ';' || ($finished && ($i == $len 1))) {
                
$tmp_sql $sql;
                if (
$start_pos $len) {
                    
$tmp_sql .= substr($buffer$start_pos$i $start_pos 1);
                }
                
// Do not try to execute empty SQL
                
if (!preg_match('/^([\s]*;)*$/'trim($tmp_sql))) {
                    
$sql $tmp_sql;
                    
PMA_importRunQuery($sqlsubstr($buffer0$i 1));
                    
$buffer substr($buffer$i 1);
                    
// Reset parser:
                    
$len strlen($buffer);
                    
$sql '';
                    
$i 0;
                    
$start_pos 0;
                    
// Any chance we will get a complete query?
                    
if ((strpos($buffer';') === FALSE) && !$finished) {
                        break;
                    }
                } else {
                    
$i++;
                    
$start_pos $i;
                }
            }
        } 
// End of parser loop
    
// End of import loop
    // Commit any possible data in buffers
    
PMA_importRunQuery(''substr($buffer0$len));
    
PMA_importRunQuery();
}
?>

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