Хитрый mysql injection

Discussion in 'Безопасность и Анонимность' started by Ванкель, 9 Oct 2012.

  1. Ванкель

    Ванкель New Member

    Joined:
    3 Sep 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Представьте что на ломаемом сервере на одной страничке есть два запроса, которые идут подряд, и которые должны выполнится, и выполнится без ошибок
    Code:
    SELECT id FROM table WHERE id='$id' and password='$pass'
    SELECT id FROM table WHERE (id='$id')
    Доступ к $id происходит через строку script.php?id=123
    Как сделать такую инъекцию, которая подошла бы сразу двум запросам?

    script.php?id=1' #
    вот такая подойдет первому, но не подойдет второму, так как там не будет закрыта скобка

    script.php?id=1') #
    вот такая подойдет второму запросу, но не первому
    Нужно сделать такой id, который подошел бы и первому, и второму запросу.
    Доступа к полю $pass - нет, точнее он есть, но пароль сразу хешируется
     
  2. cat1vo

    cat1vo Level 8

    Joined:
    12 Aug 2009
    Messages:
    375
    Likes Received:
    343
    Reputations:
    99
    Через Error-based все будет работать! Вы бы для начала попробовали, хоть что-то помимо комментария, а уж потом просили советов! :)
     
  3. Ванкель

    Ванкель New Member

    Joined:
    3 Sep 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    error-based инъекцию выходит использовать, всё отлично)
    Просто в данном случае первый запрос выполняется пользователем с ограниченными правами, который имеет доступ не ко всем таблицам, а второй запрос выполняется уже рутом, но что бы он сработал - во первом запросе не должно быть ошибок, и айдишник пользователя должен быть существующим (пароль известен)
    Тут дело в том что в одном запросе юзается без скобок, а во втором со скобками, и это мешает, судя по написанию - это делали разные программисты, отсюда и разный стиль, и разные права доступов
     
    #3 Ванкель, 10 Oct 2012
    Last edited: 10 Oct 2012
Loading...