!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: nginx/1.24.0. PHP/7.3.32 

uname -a: Linux ip-172-31-28-255.ec2.internal 6.1.159-181.297.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC
Mon Dec 22 22:31:59 UTC 2025 x86_64
 

 

Safe-mode: OFF (not secure)

/www/wwwroot/itce.co.in/data/classes/   drwxr-xr-x
Free 30.74 GB of 49.93 GB (61.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     db.php (20.56 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class DB
{
    public static function 
CurrentConnection()
    {
        global 
$currentConnection;
        return 
$currentConnection $currentConnection DB::DefaultConnection();
    }

    public static function 
CurrentConnectionId()
    {
        
$conn DB::CurrentConnection();
        return 
$conn->connId;
    }

    public static function 
DefaultConnection()
    {
        global 
$cman;
        return 
$cman->getDefault();
    }

    public static function 
ConnectionByTable$table )
    {
        global 
$cman;
        return 
$cman->byTable($table);
    }

    public static function 
ConnectionByName$name )
    {
        global 
$cman;
        return 
$cman->byName$name );
    }

    public static function 
SetConnection$connection )
    {
        global 
$currentConnection;
        if ( 
is_string$connection ) )
        {
            
$currentConnection DB::ConnectionByName$connection );
        }
        else if ( 
is_a($connection'Connection') ) {
             
$currentConnection $connection;
        }
    }

    public static function 
LastId()
    {
        return 
DB::CurrentConnection()->getInsertedId();
    }

    public static function 
Query$sql )
    {
        return 
DB::CurrentConnection()->querySilent$sql );
    }

    public static function 
Exec$sql )
    {
        return 
DB::CurrentConnection()->execSilent$sql ) != NULL;
    }

    public static function 
LastError()
    {
        return 
DB::CurrentConnection()->lastError();
    }

    public static function 
Select($table$userConditions = array() )
    {
        
$tableInfo DB::_getTableInfo($table);

        if ( !
$tableInfo )
            return 
false;

        
$whereSql DB::_getWhereSql($userConditions$tableInfo["fields"]);

        
$sql "SELECT * FROM ".DB::CurrentConnection()->addTableWrappers$tableInfo['fullName'] ) . $whereSql;
        
$queryResult DB::CurrentConnection()->querySilent$sql );

        return 
$queryResult;
    }

    public static function 
Delete($table$userConditions = array() )
    {
        
$tableInfo DB::_getTableInfo($table);

        if ( !
$tableInfo )
            return 
false;

        
$whereSql DB::_getWhereSql($userConditions$tableInfo["fields"]);

        if( 
$whereSql == "" )
            return 
false;

        
$sql "DELETE FROM ".DB::CurrentConnection()->addTableWrappers$tableInfo['fullName'] ) . $whereSql;
        
$ret DB::CurrentConnection()->execSilent$sql );

        return 
$ret;
    }

    public static function 
Insert($table$data)
    {
        
$result false;
        
$tableInfo DB::_getTableInfo($table);

        if ( !
$tableInfo )
            return 
false;

        
$iFields "";
        
$iValues "";
        
$blobs = array();
        foreach(
$data as $fieldname => $value)
        {
            
$field getArrayElementNC($tableInfo["fields"], $fieldname);

            
// user field not found in table
            
if ( is_null($field) )
                continue;

            
$iFields.= DB::CurrentConnection()->addFieldWrappers$field["name"] ).",";
            
$iValues.= DB::_prepareValue($value$field["type"]) . ",";

            if( 
DB::CurrentConnection()->dbType == nDATABASE_Oracle || DB::CurrentConnection()->dbType == nDATABASE_DB2 || DB::CurrentConnection()->dbType == nDATABASE_Informix )
            {
                if( 
IsBinaryType$field["type"] ) )
                    
$blobs$field["name"] ] = $value;

                if( 
DB::CurrentConnection()->dbType == nDATABASE_Informix && IsTextType$field["type"] ) )
                    
$blobs$field["name"] ] = $value;
            }
        }

        if( 
$iFields != "" && $iValues != "" )
        {
            
$iFields substr($iFields0, -1);
            
$iValues substr($iValues0, -1);
            
$sql "INSERT INTO ".DB::CurrentConnection()->addTableWrappers$tableInfo['fullName'] )." (".$iFields.") values (".$iValues.")";

            if ( 
count($blobs) > )
                
$result DB::_execSilentWithBlobProcessing($blobs$sql$tableInfo['fields']);
            else
                
$result DB::CurrentConnection()->execSilent$sql );
        }

        return 
$result;
    }

    public static function 
Update($table$data$userConditions)
    {
        
$result false;
        
$tableInfo DB::_getTableInfo($table);

        if ( !
$tableInfo )
            return 
false;

        
$whereSql DB::_getWhereSql($userConditions$tableInfo["fields"]);

        if( 
$whereSql == "" )
            return 
false;

        
$updateValues = array();
        
$blobs = array();
        foreach( 
$data as $fieldname => $value )
        {
            
$field getArrayElementNC($tableInfo["fields"], $fieldname);

            
// user field not found in table
            
if ( is_null($field) )
                continue;

            
$prepareFieldName DB::CurrentConnection()->addFieldWrappers$field["name"] );
            
$prepareValue DB::_prepareValue($value$field["type"]);
            
$updateValues[] = $prepareFieldName."=".$prepareValue;

            if ( 
DB::CurrentConnection()->dbType == nDATABASE_Oracle || DB::CurrentConnection()->dbType == nDATABASE_DB2 || DB::CurrentConnection()->dbType == nDATABASE_Informix )
            {
                if ( 
IsBinaryType$field["type"] ) )
                    
$blobs$field["name"] ] = $value;

                if ( 
DB::CurrentConnection()->dbType == nDATABASE_Informix && IsTextType$field["type"] ) )
                    
$blobs$field["name"] ] = $value;
            }
        }

        if ( 
count($updateValues) > )
        {
            
$updateSQL implode(","$updateValues);
            
$sql "UPDATE ".DB::CurrentConnection()->addTableWrappers$tableInfo['fullName'] )." SET "$updateSQL $whereSql;

            if ( 
count($blobs) > )
                
$result DB::_execSilentWithBlobProcessing($blobs$sql$tableInfo['fields']);
            else
                
$result DB::CurrentConnection()->execSilent$sql );
        }

        return 
$result;
    }

    protected static function 
_getWhereSql($userConditions$founedfields)
    {
        if( !
is_array$userConditions ) )
        {
            
$whereSql trim$userConditions );
            if( 
$whereSql != "")
                
$whereSql " WHERE " $whereSql;
            return 
$whereSql;
        }

        
$conditions = array();
        foreach(
$userConditions as $fieldname => $value)
        {
            
$field getArrayElementNC($founedfields$fieldname);
            
// user field not found in table
            
if ( is_null($field) )
                continue;

            
$wrappedField DB::CurrentConnection()->addFieldWrappers$field["name"] );
            if ( 
is_null($value) )
            {
                
$conditions[] = $wrappedField " IS NULL";
            }
            else
            {
                
$conditions[] = $wrappedField "=" DB::_prepareValue($value$field["type"]);
            }
        }

        
$whereSql "";
        if( 
count($conditions) > )
        {
            
$whereSql .= " WHERE " implode(" AND "$conditions);
        }

        return 
$whereSql;
    }

    
/**
     * @param Array blobs
     * @param String dalSQL
     * @param Array tableinfo
     */
    
protected static function _execSilentWithBlobProcessing($blobs$dalSQL$tableinfo)
    {
        
$blobTypes = array();
        if( 
DB::CurrentConnection()->dbType == nDATABASE_Informix )
        {
            foreach( 
$blobs as $fname => $fvalue )
            {
                
$blobTypes$fname ] = $tableinfo$fname ]["type"];
            }
        }

        
DB::CurrentConnection()->execSilentWithBlobProcessing$dalSQL$blobs$blobTypes );
    }

    protected static function 
_prepareValue($value$type)
    {
        if ( 
is_null($value) )
            return 
"NULL";

        if( 
DB::CurrentConnection()->dbType == nDATABASE_Oracle || DB::CurrentConnection()->dbType == nDATABASE_DB2 || DB::CurrentConnection()->dbType == nDATABASE_Informix )
        {
            if( 
IsBinaryType($type) )
            {
                if( 
DB::CurrentConnection()->dbType == nDATABASE_Oracle )
                    return 
"EMPTY_BLOB()";

                return 
"?";
            }

            if( 
DB::CurrentConnection()->dbType == nDATABASE_Informix  && IsTextType($type) )
                return 
"?";
        }

        if( 
IsNumberType($type) && !is_numeric($value) )
        {
            
$value trim($value);
            
$value str_replace(",""."$value);
            if ( !
is_numeric($value) )
                return 
"NULL";
        }

        if( 
IsDateFieldType($type) || IsTimeType($type) )
        {
            if( !
$value )
                return 
"NULL";

            
// timestamp
            
if ( is_int($value) )
            {
                if ( 
IsDateFieldType($type) )
                {
                    
$value getYMDdate($value) . " " getHISdate($value);
                }
                else if ( 
IsTimeType($type) )
                {
                    
$value getHISdate($value);
                }
            }

            return 
DB::CurrentConnection()->addDateQuotes$value );
        }

        if( 
NeedQuotes($type) )
            return 
DB::CurrentConnection()->prepareString$value );

        return 
$value;
    }

    
/**
     *     Find table info stored in the project file
     *
     */
    
public static function _findDalTable$table$conn null )
    {
        global 
$dalTables;
        if( !
$conn )
            
$conn DB::CurrentConnection();
        
$tableName $conn->getTableNameComponents$table );

        
DB::_fillTablesList();

        
//    exact match
        
foreach( $dalTables[$conn->connId] as $t )
        {
            if( 
$t["schema"] == $tableName["schema"] && $t["name"] == $tableName["table"] )
                return 
$t;
        }

        
//    case-insensitive
        
$tableName["schema"] = strtoupper$tableName["schema"] );
        
$tableName["table"] = strtoupper$tableName["table"] );

        foreach( 
$dalTables[$conn->connId] as $t )
        {
            if( 
strtoupper$t["schema"] ) == $tableName["schema"] && strtoupper$t["name"] ) == $tableName["table"] )
                return 
$t;
        }
        return 
null;
    }

    
/**
     *     Get list of table field names and types
     *    Check tables stored in the project first, then fetch it from the database.
     *
     */
    
public static function _getTableInfo($table$connId null )
    {
        global 
$dal_info$tableinfo_cache;
        if( !
$connId )
            
$connId DB::CurrentConnectionId();

        
//    prepare cache
        
if( !isset($tableinfo_cache$connId ] ) )
            
$tableinfo_cache$connId ] = array();

        
$tableInfo = array();


        
$tableDescriptor DB::_findDalTable$table );

        if ( 
$tableDescriptor )
        {
            
importTableInfo$tableDescriptor["varname"] );

            
$tableInfo["fields"] = $dal_info$tableDescriptor["varname"] ];

            if( 
$tableDescriptor["schema"] )
                
$tableInfo["fullName"] = $tableDescriptor["schema"] . "." $tableDescriptor["name"];
            else
                
$tableInfo["fullName"] = $tableDescriptor["name"];
        }
        else
        {
            
//    check cache first
            
if( isset($tableinfo_cache$connId ][ $table ] ) )
                return 
$tableinfo_cache$connId ][ $table ];

            
//    fetch table info from the database
            
$helpSql "select * from " DB::CurrentConnection()->addTableWrappers$table ) . " where 1=0";

            
$tableInfo["fullName"] = $table;
            
$tableInfo["fields"] = array();

            
// in case getFieldsList throws error
            
$tableinfo_cache$connId ][ $table ] = false;

            
$fieldList DB::CurrentConnection()->getFieldsList($helpSql);
            foreach (
$fieldList as $f )
            {
                
$tableInfo["fields"][ $f["fieldname"] ] = array( "type" => $f["type"], "name" => $f["fieldname"] );
            }
            
$tableinfo_cache$connId ][ $table ] = $tableInfo;
        }

        return 
$tableInfo;
    }


    protected static function 
_fillTablesList()
    {
        global 
$dalTables;
        
$conn DB::CurrentConnection();
        if( 
$dalTables$conn->connId ] )
            return;
        
$dalTables$conn->connId ] = array();
        if( 
"itce_data_at_itce_co_in" == $conn->connId )
        {
            
$dalTables[$conn->connId][] = array("name" => "aboutus""varname" => "itce_data_at_itce_co_in__aboutus""altvarname" => "aboutus""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "admission""varname" => "itce_data_at_itce_co_in__admission""altvarname" => "admission""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "answersheet""varname" => "itce_data_at_itce_co_in__answersheet""altvarname" => "answersheet""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "batch""varname" => "itce_data_at_itce_co_in__batch""altvarname" => "batch""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "books""varname" => "itce_data_at_itce_co_in__books""altvarname" => "books""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "branch""varname" => "itce_data_at_itce_co_in__branch""altvarname" => "branch""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "certificate""varname" => "itce_data_at_itce_co_in__certificate""altvarname" => "certificate""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "complain""varname" => "itce_data_at_itce_co_in__complain""altvarname" => "complain""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "course_details""varname" => "itce_data_at_itce_co_in__course_details""altvarname" => "course_details""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "courses""varname" => "itce_data_at_itce_co_in__courses""altvarname" => "courses""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "fees""varname" => "itce_data_at_itce_co_in__fees""altvarname" => "fees""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "gallery""varname" => "itce_data_at_itce_co_in__gallery""altvarname" => "gallery""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "marks""varname" => "itce_data_at_itce_co_in__marks""altvarname" => "marks""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "monthly_fees""varname" => "itce_data_at_itce_co_in__monthly_fees""altvarname" => "monthly_fees""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "news""varname" => "itce_data_at_itce_co_in__news""altvarname" => "news""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "PERMISSION_EXAM""varname" => "itce_data_at_itce_co_in__PERMISSION_EXAM""altvarname" => "PERMISSION_EXAM""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "question_set_paper""varname" => "itce_data_at_itce_co_in__question_set_paper""altvarname" => "question_set_paper""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "slider_photo""varname" => "itce_data_at_itce_co_in__slider_photo""altvarname" => "slider_photo""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "studentlogin""varname" => "itce_data_at_itce_co_in__studentlogin""altvarname" => "studentlogin""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "teacher""varname" => "itce_data_at_itce_co_in__teacher""altvarname" => "teacher""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "teacher_registration""varname" => "itce_data_at_itce_co_in__teacher_registration""altvarname" => "teacher_registration""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "test_result""varname" => "itce_data_at_itce_co_in__test_result""altvarname" => "test_result""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "videolist""varname" => "itce_data_at_itce_co_in__videolist""altvarname" => "videolist""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
            
$dalTables[$conn->connId][] = array("name" => "website_theme""varname" => "itce_data_at_itce_co_in__website_theme""altvarname" => "website_theme""connId" => "itce_data_at_itce_co_in""schema" => """connName" => "sql_itce_co_in at itce.co.in");
        }
    }


    public static function 
PrepareSQL($sql)
    {
        
$args func_get_args();

        
$conn DB::CurrentConnection();

        
$tokens DB::scanTokenString($sql);

        
$replacements = array();
        
// build array of replacements in this format:
        //    "offset" => position in the string where replacement should be done
        //  "len" => length of original substring to cut out
        //  "insert" => string to insert in place of cut out

        
foreach ($tokens["matches"] as $i => $match) {
            
$offset $tokens["offsets"][$i];
            
$token $tokens["tokens"][$i];

            
$repl = array(
                
"offset" => $offset,
                
"len" => strlen($match)
            );

            
$val "";
            if (
is_numeric($token) && count$args ) > $token) {
                
$val $args[(int)$token];
            } else {
                
$val RunnerContext::getValue($token);
            }

            
/**
             * Don't ever dare to alter this code!
             * Everything outside quotes must be converted to number to avoid SQL injection
             */
            
if ($conn->positionQuoted($sql$offset))
                
$repl["insert"] = $conn->addSlashes($val);
            else
                
$repl["insert"] = DB::prepareNumberValue($val);

            
$replacements[] = $repl;
        }

        
//    do replacements
        
return RunnerContext::doReplacements$sql$replacements );
    }

    
/**
     *    @return Array
     */
    
public static function readSQLTokens$sql )
    {
        
$arr DB::scanTokenString$sql );
        return 
$arr["tokens"];
    }

    
/**
     *    @return Array
     */
    
public static function readMasterTokens$sql )
    {
        
$masterTokens = array();

        
$allTokens DB::readSQLTokens$sql );
        foreach ( 
$allTokens as $key => $token )
        {
            
$dotPos strpos(  $token"." );
            if( 
$dotPos !== FALSE && strtolowersubstr$token0$dotPos ) ) == "master")
            {
                
$masterTokens[] = $token;
            }
        }

        return 
$masterTokens;
    }

    
/**
     *    Scans SQL string, finds all tokens. Returns three arrays - 'tokens', 'matches' and 'offsets'
     *  Offsets are positions of corresponding 'matches' items in the string
     *  Example:
     *  insert into table values (':aaa', :old.bbb, ':{master.order date}')
     *  tokens: ["aaa", "old.bbb", "master.order date"]
     *  matches: [":aaa", ":old.bbb", ":{master.order date}"]
     *  offsets: [28, 35, 46]
     *
     *    Exceptions for tokens without {}
     *    1. shouldn't start with number
    *        :62aaa
     *    2. shouldn't follow letter
     *        x:aaa
     *    3. shouldn't follow :
     *        ::aaa
     *
      *    @return Array [ "tokens" => Array, "matches" => Array, "offsets" => Array ]
     */
    
public static function scanTokenString($sql)
    {
        
$tokens = array();
        
$offsets = array();
        
$matches = array();

        
//    match aaa, old.bbb, master.order date from:
        //    insert into table values (':aaa', :old.bbb, ':{master.order date}')

        
$pattern '/(?:[^\w\:]|^)(\:([a-zA-Z_]{1}[\w\.]*))|\:\{(.*?)\}|(?:[^\w\:]|^)(\:([1-9]+[0-9]*))/';


        
$result findMatches($pattern$sql);
        foreach (
$result as $m) {
            if (
$m["submatches"][0] != "") {
                
// first variant, no {}
                
$matches[] = $m["submatches"][0];
                
$tokens[] = $m["submatches"][1];
                
$offsets[] = $m["offset"] + strpos($m["match"], $m["submatches"][0]);
            } else if (
$m["submatches"][2] != "") {
                
// second variant, in {}
                
$matches[] = $m["match"];
                
$tokens[] = $m["submatches"][2];
                
$offsets[] = $m["offset"];
            } else if (
$m["submatches"][3] != "") {
                
// third variant, numeric like (:1, ':2')
                
$matches[] = $m["submatches"][3];
                
$tokens[] = $m["submatches"][4];
                
$offsets[] = $m["offset"] + strpos($m["match"], $m["submatches"][3]);
            }
        }

        return array(
"tokens" => $tokens"matches" => $matches"offsets" => $offsets);
    }

    public static function 
scanNewTokenString($sql)
    {
        
$tokens = array();
        
$offsets = array();
        
$matches = array();

        
//    match aaa, old.bbb, master.order date from:
        //    insert into table values (':aaa', :old.bbb, ':{master.order date}')

        
$pattern "/\\\${[^\\s\{\\}]+}/";


        
$result findMatches($pattern$sql);
        foreach (
$result as $m) {
            
$match $m["match"];
            if ( 
$match != "" ) {
                
$matches[] = $match;
                
$tokens[] = substr$match2strlen$match ) - );
                
$offsets[] = $m["offset"];
            }
        }

        return array(
"tokens" => $tokens"matches" => $matches"offsets" => $offsets);
    }


    public static function 
prepareNumberValue$value )
    {
        
$strvalue = (string)$value;
        if(
is_numeric($strvalue))
            return 
str_replace(",",".",$strvalue);
        return 
0;
    }

}

?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0041 ]--