URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9822
[ Назад ]

Исходное сообщение
"Реверсхак SQL"

Отправлено pavlinux , 30-Янв-14 20:28 
Мужики, а есть ли в природе фильтр для SQL, который по запросам на чтение
создаёт структуру базу и таблицы?  

Например USE superdb заменить на IF NOT EXIST 'superdb' CREATE DATABASE superdb;

SELECT ля-ля-ля, ды-ды-ды FROM secrettable;
CREATE TABLE  secrettable (ля-ля-ля, ды-ды-ды );

...и только потом отработать SELECT


Содержание

Сообщения в этом обсуждении
"Реверсхак SQL"
Отправлено asavah , 30-Янв-14 21:57 
> Мужики, а есть ли в природе фильтр для SQL, который по запросам
> на чтение
> создаёт структуру базу и таблицы?
> Например USE superdb заменить на IF NOT EXIST 'superdb' CREATE DATABASE superdb;
> SELECT ля-ля-ля, ды-ды-ды FROM secrettable;
> CREATE TABLE  secrettable (ля-ля-ля, ды-ды-ды );
> ...и только потом отработать SELECT

павлин отсыпь травы не жмись

мелкомягкий sql2008  умеет
IF (NOT EXIST (SELECT 100г FROM поллитра))
BEGIN
     наливай
END
ELSE
BEGIN
     неси закусь
END

в мускуле такого нет, в постгре не помню


"Реверсхак SQL"
Отправлено pavlinux , 30-Янв-14 23:17 
>[оверквотинг удален]
> павлин отсыпь травы не жмись
> мелкомягкий sql2008  умеет
> IF (NOT EXIST (SELECT 100г FROM поллитра))
> BEGIN
>      наливай
> END
> ELSE
> BEGIN
>      неси закусь
> END

И куда этот код сувать?
---

Во, тока сцука интерактивное http://sqlfiddle.com


"Реверсхак SQL"
Отправлено ACCA , 31-Янв-14 01:28 
> Мужики, а есть ли в природе фильтр для SQL, который по запросам
> на чтение создаёт структуру базу и таблицы?

В общем-то легко, только делай select не таблицы, а своей функции, которая проверит и насобачит что угодно. Другой вопрос - а нафига это нужно?

Как отслеживать версии структуры таблицы - непонятно. Запихать в свою функцию deployment, version control, replicaiton и прочую функциональность можно, но как-то стыдно.

Смотри в сторону Puppet и подобных, чтобы не выяснять, есть ли база, а иметь гарантию, что приложение запущено только после того, как
  - оно установлено
  - база создана
  - таблицы созданы
  - права розданы
  - версии приложения, базы и таблиц совпадают

Только это всё равно геморно - слишком много дописывать руками. А Puppet - кривое уё*ще.


"Реверсхак SQL"
Отправлено pavlinux , 31-Янв-14 03:34 
>> Мужики, а есть ли в природе фильтр для SQL, который по запросам
>> на чтение создаёт структуру базу и таблицы?
> В общем-то легко, только делай select не таблицы, а своей функции, которая
> проверит и насобачит что угодно. Другой вопрос - а нафига это
> нужно?

Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.

А чо удивительного? Обычный хак методом "Подсунь программе, что она просит"
  


"Реверсхак SQL"
Отправлено DeadLoco , 31-Янв-14 13:14 
> Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.

1. Все ли запросы к базе известны?
2. Нет ли среди запросов вызовов процедур?
3. Нет ли в запросах вызовов юзерских функций?
4. Достоверно ли известно отсутствие в базе триггеров и ивентов?

Пробой по любому из пунктов делает задачу нерешаемой. Ну, то-есть, то, что можно сделать в таких условиях решением назвать не представляется возможным.


"Реверсхак SQL"
Отправлено name , 31-Янв-14 15:29 
>>> Мужики, а есть ли в природе фильтр для SQL, который по запросам
>>> на чтение создаёт структуру базу и таблицы?
>> В общем-то легко, только делай select не таблицы, а своей функции, которая
>> проверит и насобачит что угодно. Другой вопрос - а нафига это
>> нужно?
> Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.
> А чо удивительного? Обычный хак методом "Подсунь программе, что она просит"

а выдрать запросы из исполняемого файла никак нельзя?
поиск по файлу все строк с ключевыми словами select/insert/update/where


"Реверсхак SQL"
Отправлено ACCA , 01-Фев-14 00:44 
> Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.

Включи текстовый лог в SQL сервере, лови SELECT'ы каким-нибудь Perl'ом, создавай через DBI чего не хватает.

Остаётся, правда, вопрос про типы колонок - в запросах они явно не появляются.

Не знаю, как этот блоб, а у меня весь софт сначала читает структуру базы на предмет отслеживания изменений. А поведение некоторых алгоритмов зависит от нарытых индексов. Если в блобе применён какой-нибудь ORM - ожидай подобных граблей.


"Реверсхак SQL"
Отправлено pavlinux , 01-Фев-14 01:34 
>... каким-нибудь Perl'ом, создавай через DBI чего не хватает.

Вооот, вопрос в том и был - Есть ли что-то готовое?  
Потому как запил своих плюшек не окупается.


"Реверсхак SQL"
Отправлено Аноним , 31-Янв-14 04:25 
> В общем-то легко, только ....

...
> а нафига это нужно?

ACCA ты перед тем как отвечать точно вопрос читал?