Windows NT DGPENSV2LPKMN 10.0 build 14393 (Windows Server 2016) AMD64
Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/7.3.25
: 172.16.0.66 | : 172.16.0.254
Cant Read [ /etc/named.conf ]
7.3.25
SYSTEM
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
BLACK DEFEND!
README
+ Create Folder
+ Create File
[ A ]
[ C ]
[ D ]
C: /
xampp7 /
phpMyAdmin /
libraries /
classes /
[ HOME SHELL ]
Name
Size
Permission
Action
Charsets
[ DIR ]
drwxrwxrwx
Config
[ DIR ]
drwxrwxrwx
Controllers
[ DIR ]
drwxrwxrwx
Database
[ DIR ]
drwxrwxrwx
Dbi
[ DIR ]
drwxrwxrwx
Di
[ DIR ]
drwxrwxrwx
Display
[ DIR ]
drwxrwxrwx
Engines
[ DIR ]
drwxrwxrwx
Gis
[ DIR ]
drwxrwxrwx
Navigation
[ DIR ]
drwxrwxrwx
Plugins
[ DIR ]
drwxrwxrwx
Properties
[ DIR ]
drwxrwxrwx
Rte
[ DIR ]
drwxrwxrwx
Server
[ DIR ]
drwxrwxrwx
Setup
[ DIR ]
drwxrwxrwx
Twig
[ DIR ]
drwxrwxrwx
Utils
[ DIR ]
drwxrwxrwx
Advisor.php
19.56
KB
-rw-rw-rw-
Bookmark.php
10.74
KB
-rw-rw-rw-
BrowseForeigners.php
11.15
KB
-rw-rw-rw-
CentralColumns.php
44.19
KB
-rw-rw-rw-
Charsets.php
6.14
KB
-rw-rw-rw-
CheckUserPrivileges.php
12.59
KB
-rw-rw-rw-
Config.php
57.38
KB
-rw-rw-rw-
Console.php
3.69
KB
-rw-rw-rw-
Core.php
38.31
KB
-rw-rw-rw-
CreateAddField.php
17.91
KB
-rw-rw-rw-
DatabaseInterface.php
104.47
KB
-rw-rw-rw-
Encoding.php
8.68
KB
-rw-rw-rw-
Error.php
13.34
KB
-rw-rw-rw-
ErrorHandler.php
17.17
KB
-rw-rw-rw-
ErrorReport.php
8.92
KB
-rw-rw-rw-
Export.php
42.76
KB
-rw-rw-rw-
File.php
21.29
KB
-rw-rw-rw-
FileListing.php
2.83
KB
-rw-rw-rw-
Font.php
5.54
KB
-rw-rw-rw-
Footer.php
10.6
KB
-rw-rw-rw-
Header.php
21.87
KB
-rw-rw-rw-
Import.php
56.56
KB
-rw-rw-rw-
Index.php
24.5
KB
-rw-rw-rw-
IndexColumn.php
4.44
KB
-rw-rw-rw-
InsertEdit.php
129.31
KB
-rw-rw-rw-
InternalRelations.php
17.42
KB
-rw-rw-rw-
IpAllowDeny.php
9.57
KB
-rw-rw-rw-
Language.php
4.31
KB
-rw-rw-rw-
LanguageManager.php
23.71
KB
-rw-rw-rw-
Linter.php
5.21
KB
-rw-rw-rw-
ListAbstract.php
2.51
KB
-rw-rw-rw-
ListDatabase.php
4.34
KB
-rw-rw-rw-
Logging.php
2.6
KB
-rw-rw-rw-
Menu.php
22.36
KB
-rw-rw-rw-
Message.php
19.32
KB
-rw-rw-rw-
Mime.php
916
B
-rw-rw-rw-
MultSubmits.php
23.64
KB
-rw-rw-rw-
Normalization.php
40.41
KB
-rw-rw-rw-
OpenDocument.php
8.52
KB
-rw-rw-rw-
Operations.php
81.25
KB
-rw-rw-rw-
OutputBuffering.php
3.71
KB
-rw-rw-rw-
ParseAnalyze.php
2.55
KB
-rw-rw-rw-
Partition.php
7.27
KB
-rw-rw-rw-
Pdf.php
4.37
KB
-rw-rw-rw-
Plugins.php
22.95
KB
-rw-rw-rw-
RecentFavoriteTable.php
12.04
KB
-rw-rw-rw-
Relation.php
79.64
KB
-rw-rw-rw-
RelationCleanup.php
15
KB
-rw-rw-rw-
Replication.php
5.75
KB
-rw-rw-rw-
ReplicationGui.php
21.23
KB
-rw-rw-rw-
Response.php
16.14
KB
-rw-rw-rw-
Sanitize.php
14.51
KB
-rw-rw-rw-
SavedSearches.php
11.94
KB
-rw-rw-rw-
Scripts.php
3.65
KB
-rw-rw-rw-
Session.php
7.62
KB
-rw-rw-rw-
Sql.php
82.09
KB
-rw-rw-rw-
SqlQueryForm.php
17.63
KB
-rw-rw-rw-
StorageEngine.php
13.75
KB
-rw-rw-rw-
SubPartition.php
3.55
KB
-rw-rw-rw-
SysInfo.php
1.61
KB
-rw-rw-rw-
SysInfoBase.php
822
B
-rw-rw-rw-
SysInfoLinux.php
2.16
KB
-rw-rw-rw-
SysInfoSunOS.php
1.89
KB
-rw-rw-rw-
SysInfoWINNT.php
3.27
KB
-rw-rw-rw-
SystemDatabase.php
3.97
KB
-rw-rw-rw-
Table.php
94.87
KB
-rw-rw-rw-
TablePartitionDefinition.php
6.64
KB
-rw-rw-rw-
Template.php
4.02
KB
-rw-rw-rw-
Theme.php
8.62
KB
-rw-rw-rw-
ThemeManager.php
10.42
KB
-rw-rw-rw-
Tracker.php
30.13
KB
-rw-rw-rw-
Tracking.php
40.26
KB
-rw-rw-rw-
Transformations.php
16.27
KB
-rw-rw-rw-
TwoFactor.php
7.14
KB
-rw-rw-rw-
Types.php
24.93
KB
-rw-rw-rw-
Url.php
8.32
KB
-rw-rw-rw-
UserPassword.php
9
KB
-rw-rw-rw-
UserPreferences.php
8.62
KB
-rw-rw-rw-
UserPreferencesHeader.php
4.13
KB
-rw-rw-rw-
Util.php
168.02
KB
-rw-rw-rw-
VersionInformation.php
6.92
KB
-rw-rw-rw-
ZipExtension.php
10.25
KB
-rw-rw-rw-
Delete
Unzip
Zip
${this.title}
Close
Code Editor : CreateAddField.php
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Holds the PhpMyAdmin\CreateAddField class * * @package PhpMyAdmin */ declare(strict_types=1); namespace PhpMyAdmin; /** * Set of functions for tbl_create.php and tbl_addfield.php * * @package PhpMyAdmin */ class CreateAddField { /** * @var DatabaseInterface */ private $dbi; /** * Constructor * * @param DatabaseInterface $dbi DatabaseInterface interface */ public function __construct(DatabaseInterface $dbi) { $this->dbi = $dbi; } /** * Transforms the radio button field_key into 4 arrays * * @return array An array of arrays which represents column keys for each index type */ private function getIndexedColumns(): array { $fieldCount = count($_POST['field_name']); $fieldPrimary = json_decode($_POST['primary_indexes'], true); $fieldIndex = json_decode($_POST['indexes'], true); $fieldUnique = json_decode($_POST['unique_indexes'], true); $fieldFullText = json_decode($_POST['fulltext_indexes'], true); $fieldSpatial = json_decode($_POST['spatial_indexes'], true); return [ $fieldCount, $fieldPrimary, $fieldIndex, $fieldUnique, $fieldFullText, $fieldSpatial, ]; } /** * Initiate the column creation statement according to the table creation or * add columns to a existing table * * @param int $fieldCount number of columns * @param boolean $isCreateTable true if requirement is to get the statement * for table creation * * @return array An array of initial sql statements * according to the request */ private function buildColumnCreationStatement( int $fieldCount, bool $isCreateTable = true ): array { $definitions = []; $previousField = -1; for ($i = 0; $i < $fieldCount; ++$i) { // '0' is also empty for php :-( if (strlen($_POST['field_name'][$i]) === 0) { continue; } $definition = $this->getStatementPrefix($isCreateTable) . Table::generateFieldSpec( trim($_POST['field_name'][$i]), $_POST['field_type'][$i], $_POST['field_length'][$i], $_POST['field_attribute'][$i], isset($_POST['field_collation'][$i]) ? $_POST['field_collation'][$i] : '', isset($_POST['field_null'][$i]) ? $_POST['field_null'][$i] : 'NO', $_POST['field_default_type'][$i], $_POST['field_default_value'][$i], isset($_POST['field_extra'][$i]) ? $_POST['field_extra'][$i] : false, isset($_POST['field_comments'][$i]) ? $_POST['field_comments'][$i] : '', isset($_POST['field_virtuality'][$i]) ? $_POST['field_virtuality'][$i] : '', isset($_POST['field_expression'][$i]) ? $_POST['field_expression'][$i] : '' ); $definition .= $this->setColumnCreationStatementSuffix( $previousField, $isCreateTable ); $previousField = $i; $definitions[] = $definition; } // end for return $definitions; } /** * Set column creation suffix according to requested position of the new column * * @param int $previousField previous field for ALTER statement * @param bool $isCreateTable true if requirement is to get the statement * for table creation * * @return string suffix */ private function setColumnCreationStatementSuffix( int $previousField, bool $isCreateTable = true ): string { // no suffix is needed if request is a table creation $sqlSuffix = ' '; if ($isCreateTable) { return $sqlSuffix; } if ((string) $_POST['field_where'] === 'last') { return $sqlSuffix; } // Only the first field can be added somewhere other than at the end if ($previousField == -1) { if ((string) $_POST['field_where'] === 'first') { $sqlSuffix .= ' FIRST'; } elseif (! empty($_POST['after_field'])) { $sqlSuffix .= ' AFTER ' . Util::backquote($_POST['after_field']); } } else { $sqlSuffix .= ' AFTER ' . Util::backquote( $_POST['field_name'][$previousField] ); } return $sqlSuffix; } /** * Create relevant index statements * * @param array $index an array of index columns * @param string $indexChoice index choice that which represents * the index type of $indexed_fields * @param boolean $isCreateTable true if requirement is to get the statement * for table creation * * @return array an array of sql statements for indexes */ private function buildIndexStatements( array $index, string $indexChoice, bool $isCreateTable = true ): array { $statement = []; if (! count($index)) { return $statement; } $sqlQuery = $this->getStatementPrefix($isCreateTable) . ' ' . $indexChoice; if (! empty($index['Key_name']) && $index['Key_name'] != 'PRIMARY') { $sqlQuery .= ' ' . Util::backquote($index['Key_name']); } $indexFields = []; foreach ($index['columns'] as $key => $column) { $indexFields[$key] = Util::backquote( $_POST['field_name'][$column['col_index']] ); if ($column['size']) { $indexFields[$key] .= '(' . $column['size'] . ')'; } } $sqlQuery .= ' (' . implode(', ', $indexFields) . ')'; $keyBlockSizes = $index['Key_block_size']; if (! empty($keyBlockSizes)) { $sqlQuery .= " KEY_BLOCK_SIZE = " . $this->dbi->escapeString($keyBlockSizes); } // specifying index type is allowed only for primary, unique and index only $type = $index['Index_type']; if ($index['Index_choice'] != 'SPATIAL' && $index['Index_choice'] != 'FULLTEXT' && in_array($type, Index::getIndexTypes()) ) { $sqlQuery .= ' USING ' . $type; } $parser = $index['Parser']; if ($index['Index_choice'] == 'FULLTEXT' && ! empty($parser)) { $sqlQuery .= " WITH PARSER " . $this->dbi->escapeString($parser); } $comment = $index['Index_comment']; if (! empty($comment)) { $sqlQuery .= " COMMENT '" . $this->dbi->escapeString($comment) . "'"; } $statement[] = $sqlQuery; return $statement; } /** * Statement prefix for the buildColumnCreationStatement() * * @param boolean $isCreateTable true if requirement is to get the statement * for table creation * * @return string prefix */ private function getStatementPrefix(bool $isCreateTable = true): string { $sqlPrefix = " "; if (! $isCreateTable) { $sqlPrefix = ' ADD '; } return $sqlPrefix; } /** * Merge index definitions for one type of index * * @param array $definitions the index definitions to merge to * @param boolean $isCreateTable true if requirement is to get the statement * for table creation * @param array $indexedColumns the columns for one type of index * @param string $indexKeyword the index keyword to use in the definition * * @return array */ private function mergeIndexStatements( array $definitions, bool $isCreateTable, array $indexedColumns, string $indexKeyword ): array { foreach ($indexedColumns as $index) { $statements = $this->buildIndexStatements( $index, " " . $indexKeyword . " ", $isCreateTable ); $definitions = array_merge($definitions, $statements); } return $definitions; } /** * Returns sql statement according to the column and index specifications as * requested * * @param boolean $isCreateTable true if requirement is to get the statement * for table creation * * @return string sql statement */ private function getColumnCreationStatements(bool $isCreateTable = true): string { $sqlStatement = ""; list( $fieldCount, $fieldPrimary, $fieldIndex, $fieldUnique, $fieldFullText, $fieldSpatial ) = $this->getIndexedColumns(); $definitions = $this->buildColumnCreationStatement( $fieldCount, $isCreateTable ); // Builds the PRIMARY KEY statements $primaryKeyStatements = $this->buildIndexStatements( isset($fieldPrimary[0]) ? $fieldPrimary[0] : [], " PRIMARY KEY ", $isCreateTable ); $definitions = array_merge($definitions, $primaryKeyStatements); // Builds the INDEX statements $definitions = $this->mergeIndexStatements( $definitions, $isCreateTable, $fieldIndex, "INDEX" ); // Builds the UNIQUE statements $definitions = $this->mergeIndexStatements( $definitions, $isCreateTable, $fieldUnique, "UNIQUE" ); // Builds the FULLTEXT statements $definitions = $this->mergeIndexStatements( $definitions, $isCreateTable, $fieldFullText, "FULLTEXT" ); // Builds the SPATIAL statements $definitions = $this->mergeIndexStatements( $definitions, $isCreateTable, $fieldSpatial, "SPATIAL" ); if (count($definitions)) { $sqlStatement = implode(', ', $definitions); } return preg_replace('@, $@', '', $sqlStatement); } /** * Returns the partitioning clause * * @return string partitioning clause */ public function getPartitionsDefinition(): string { $sqlQuery = ""; if (! empty($_POST['partition_by']) && ! empty($_POST['partition_expr']) && ! empty($_POST['partition_count']) && $_POST['partition_count'] > 1 ) { $sqlQuery .= " PARTITION BY " . $_POST['partition_by'] . " (" . $_POST['partition_expr'] . ")" . " PARTITIONS " . $_POST['partition_count']; } if (! empty($_POST['subpartition_by']) && ! empty($_POST['subpartition_expr']) && ! empty($_POST['subpartition_count']) && $_POST['subpartition_count'] > 1 ) { $sqlQuery .= " SUBPARTITION BY " . $_POST['subpartition_by'] . " (" . $_POST['subpartition_expr'] . ")" . " SUBPARTITIONS " . $_POST['subpartition_count']; } if (! empty($_POST['partitions'])) { $partitions = []; foreach ($_POST['partitions'] as $partition) { $partitions[] = $this->getPartitionDefinition($partition); } $sqlQuery .= " (" . implode(", ", $partitions) . ")"; } return $sqlQuery; } /** * Returns the definition of a partition/subpartition * * @param array $partition array of partition/subpartition detiails * @param boolean $isSubPartition whether a subpartition * * @return string partition/subpartition definition */ private function getPartitionDefinition( array $partition, bool $isSubPartition = false ): string { $sqlQuery = " " . ($isSubPartition ? "SUB" : "") . "PARTITION "; $sqlQuery .= $partition['name']; if (! empty($partition['value_type'])) { $sqlQuery .= " VALUES " . $partition['value_type']; if ($partition['value_type'] != 'LESS THAN MAXVALUE') { $sqlQuery .= " (" . $partition['value'] . ")"; } } if (! empty($partition['engine'])) { $sqlQuery .= " ENGINE = " . $partition['engine']; } if (! empty($partition['comment'])) { $sqlQuery .= " COMMENT = '" . $partition['comment'] . "'"; } if (! empty($partition['data_directory'])) { $sqlQuery .= " DATA DIRECTORY = '" . $partition['data_directory'] . "'"; } if (! empty($partition['index_directory'])) { $sqlQuery .= " INDEX_DIRECTORY = '" . $partition['index_directory'] . "'"; } if (! empty($partition['max_rows'])) { $sqlQuery .= " MAX_ROWS = " . $partition['max_rows']; } if (! empty($partition['min_rows'])) { $sqlQuery .= " MIN_ROWS = " . $partition['min_rows']; } if (! empty($partition['tablespace'])) { $sqlQuery .= " TABLESPACE = " . $partition['tablespace']; } if (! empty($partition['node_group'])) { $sqlQuery .= " NODEGROUP = " . $partition['node_group']; } if (! empty($partition['subpartitions'])) { $subpartitions = []; foreach ($partition['subpartitions'] as $subpartition) { $subpartitions[] = $this->getPartitionDefinition( $subpartition, true ); } $sqlQuery .= " (" . implode(", ", $subpartitions) . ")"; } return $sqlQuery; } /** * Function to get table creation sql query * * @param string $db database name * @param string $table table name * * @return string */ public function getTableCreationQuery(string $db, string $table): string { // get column addition statements $sqlStatement = $this->getColumnCreationStatements(true); // Builds the 'create table' statement $sqlQuery = 'CREATE TABLE ' . Util::backquote($db) . '.' . Util::backquote(trim($table)) . ' (' . $sqlStatement . ')'; // Adds table type, character set, comments and partition definition if (! empty($_POST['tbl_storage_engine']) && ($_POST['tbl_storage_engine'] != 'Default') ) { $sqlQuery .= ' ENGINE = ' . $this->dbi->escapeString($_POST['tbl_storage_engine']); } if (! empty($_POST['tbl_collation'])) { $sqlQuery .= Util::getCharsetQueryPart($_POST['tbl_collation']); } if (! empty($_POST['connection']) && ! empty($_POST['tbl_storage_engine']) && $_POST['tbl_storage_engine'] == 'FEDERATED' ) { $sqlQuery .= " CONNECTION = '" . $this->dbi->escapeString($_POST['connection']) . "'"; } if (! empty($_POST['comment'])) { $sqlQuery .= ' COMMENT = \'' . $this->dbi->escapeString($_POST['comment']) . '\''; } $sqlQuery .= $this->getPartitionsDefinition(); $sqlQuery .= ';'; return $sqlQuery; } /** * Function to get the number of fields for the table creation form * * @return int */ public function getNumberOfFieldsFromRequest(): int { // Limit to 4096 fields (MySQL maximal value) $mysqlLimit = 4096; if (isset($_POST['submit_num_fields'])) { // adding new fields $numberOfFields = intval($_POST['orig_num_fields']) + intval($_POST['added_fields']); } elseif (isset($_POST['orig_num_fields'])) { // retaining existing fields $numberOfFields = intval($_POST['orig_num_fields']); } elseif (isset($_POST['num_fields']) && intval($_POST['num_fields']) > 0 ) { // new table with specified number of fields $numberOfFields = intval($_POST['num_fields']); } else { // new table with unspecified number of fields $numberOfFields = 4; } return min($numberOfFields, $mysqlLimit); } /** * Function to execute the column creation statement * * @param string $db current database * @param string $table current table * @param string $errorUrl error page url * * @return array */ public function tryColumnCreationQuery( string $db, string $table, string $errorUrl ): array { // get column addition statements $sqlStatement = $this->getColumnCreationStatements(false); // To allow replication, we first select the db to use and then run queries // on this db. if (! $this->dbi->selectDb($db)) { Util::mysqlDie( $this->dbi->getError(), 'USE ' . Util::backquote($db), false, $errorUrl ); } $sqlQuery = 'ALTER TABLE ' . Util::backquote($table) . ' ' . $sqlStatement . ';'; // If there is a request for SQL previewing. if (isset($_POST['preview_sql'])) { Core::previewSQL($sqlQuery); } return [ $this->dbi->tryQuery($sqlQuery), $sqlQuery, ]; } }
Close