5.2. Получение сведений о базе данных

 

Каждая СУБД содержит определенный набор данных, которые в дальнейшем нам могут пригодиться при взломе БД. Поэтому рассмотрим, как получить эти сведения на примере MySQL и PostgreSQL.

 

Версия БД

MySQL: SELECT version(); или SELECT @@version;

Отображение версии MySQL

 

PostgreSQL: SELECT version();

Отображение версии PostgreSQL

 

Текущий пользователь

Под пользователем подразумевается учетная запись, которая на данный момент используется для входа в БД. Не стоит путать с пользователем/учетной записью самой операционной системы.

MySQL: SELECT current_user();

Отображение текущего пользователя в MySQL

 

PostgreSQL: SELECT current_user;

Отображение текущего пользователя в PostgreSQL

 

Список текущих баз данных

MySQL: SELECT table_schema FROM information_schema.tables group by table_schema;

Список баз данных в MySQL

 

PostgreSQL: SELECT datname FROM pg_database;

Список баз данных в PostgreSQL

 

Список таблиц в конкретной БД

В MySQL имеется возможность отобразить таблицы любой базы данных. Для этого нужно знать только имя БД, которое было получено выше в предыдущем шаге.

MySQL: SELECT table_name FROM information_schema.tables WHERE table_schema=’название_БД’;

Отображение таблиц в БД в MySQL

 

В PostgreSQL можно отобразить таблицы только в текущем пространстве имен. Таблицы, созданные пользователем, помечаются схемой Public.

PostgreSQL: SELECT table_name FROM information_schema.tables WHERE table_schema=’public’;

Отображение списка таблиц в БД в PostgreSQL

 

Список столбцов и их тип данных

MySQL: SELECT column_name, data_type FROM information_schema.columns WHERE table_schema=’название_БД’ AND table_name=’название_таблицы’;

Отображение списка столбцов в конкретной таблице MySQL

 

PostgreSQL: SELECT column_name, data_type FROM information_schema.columns WHERE table_name=’название_таблицы’;

отображение списка столбцов в PostgreSQL