Вопрос по поводу SQL Injection от нуба

Discussion in 'Безопасность и Анонимность' started by vikler, 18 Aug 2012.

  1. vikler

    vikler Member

    Joined:
    16 Aug 2012
    Messages:
    92
    Likes Received:
    7
    Reputations:
    0
    Всем привет!
    Недавно впервые взломала один сайт при помощи SQL инъекции, получила логины и хэши, всё круто.
    Но! На том сайте не был отключен вывод ошибок, примерно так:
    http://www.imagebam.com/image/d93173206203365

    Вопрос: как быть, если на странице отсуствует вывод ошибок? Как получать ответы от бд через инъекцию? через тот же select... Заранее благодарю и простите за тупые вопросы. Перерыла инет, но нигде конкретно не говорится, как быть.
     
  2. MaxFast

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

    Joined:
    12 Oct 2011
    Messages:
    569
    Likes Received:
    146
    Reputations:
    94
    Если вывод отключен - то это Blind Injection
     
  3. vikler

    vikler Member

    Joined:
    16 Aug 2012
    Messages:
    92
    Likes Received:
    7
    Reputations:
    0
    О, спасибо! А как в blind инъекциях получать ответы? Вот, к примеру, знаю от одного человека, что сайт уязвим (он с помощью инъекции получил всех юзеров-хэши), но как же без вывода?

    Сорри, вопросы и правда тупые, но я так давно уже хотела начать этим заниматься, да вот и щас первый сайт поддался, а тут...тупик=\
     
  4. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    да, слепая инъекция - более частая разновидность инъеции. Её труднее заметить админу/кодеру, потому этот тип более популярен.
    Для эксплуатации таких инъекций нужно писать скрипты (они совсем простые) или использовать готовые инструменты (sqlmap, например) - автоматизировать процесс, т.к. запросов к серверу будет на порядок больше, чем при обычной инъекции. Какой бы способ не выбран (самопис/готовые), нужно понимать основной принцип проведения инъекции: сервер отвечает только "ДА" (показывая страницу 1) или "НЕТ" (показывая страницу 2). Т.е. на запрос "Первый символ номера версии СУБД равен 5?" сервер ответит одной страницей (если "ДА") или другой (если "НЕТ"). Таким образом, посимвольно, из базы вытягиваются все необходимые данные
     
  5. vikler

    vikler Member

    Joined:
    16 Aug 2012
    Messages:
    92
    Likes Received:
    7
    Reputations:
    0
    Спасибо за ответы. Вот сейчас использую sqlmap, возникло два вопроса:
    1) Хотела сделать дамп бд, которую вручную взломала, но ответ был, что нет injectible param's :confused: Странно, почему так? Ведь в браузере достаточно инфу было получить при помощи:
    Code:
    +or+(SeLect+count(*)+from+(select+1+UnIoN+select+2+UnIoN+select+3)x++group+by+concat(version(),floor(rand(0)*2)))%23
    
    2) Нашла уязвимый сайт, SQL версии 4.0
    какие лучшие способа подбора имен таблиц и колонок в sqlmap?
     
  6. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    если известна CMS, то скачать исходник и посмотреть структуру БД. Иначе - перебирать по словарям
     
  7. ham

    ham Member

    Joined:
    21 Jul 2011
    Messages:
    27
    Likes Received:
    5
    Reputations:
    0
    Какие параметры запуска использовались для запуска sqlmap? От этого много чего может зависеть. Например, если известна какая СУБД используется, то лучше указать(--dbms=mysql). Если параметров много, то указать уязвимый через -p (н-р, -p id). Так же если известна имя базы, таблицы тоже указать:Если собрать все в кучу:
    sqlmap.py -u "http://www.site.com/?page=goods&id=4" -p id --dbms=mysql -D db_name -T table_name --dump
    Для перебора таблиц\колонок по словарю есть опции --common-tables и --common-columns
     
  8. vikler

    vikler Member

    Joined:
    16 Aug 2012
    Messages:
    92
    Likes Received:
    7
    Reputations:
    0
    Для сайта, который я взломала вручную в браузере использовала след. параметры запуска sqlmap для дампа данных:
    sqlmap -u "http://site.com/search.php?search_category_id=79" -p search_category_id -D db_name -T table_name --dump
    Результат: search_category_id not injectible :( Неужели придется искать другой способ дампа данных? К слову сказать "вручную" данные получаю следующим url:
    Code:
    http://site.com/search.php?search_category_id=79'+or+(SeLect+count(*)+from+(select+1+UnIoN+select+2+UnIoN+select+3)x++group+by+concat(mid((SELECT+password+FROM+userdata+limit+120,1),1,64),floor(rand(0)*2)))%23
    Теперь по поводу базы данных версии sql4, которую я сейчас пытаюсь взломать с помощью sqlmap:
    За это спасибо, common-tables помогли вытащить имена таблиц, а вот от common-columns толку ноль,хотя пробовала на больших словарях :(

    Правда, удалось еще вытащить username/password hash root'a.
     
  9. vikler

    vikler Member

    Joined:
    16 Aug 2012
    Messages:
    92
    Likes Received:
    7
    Reputations:
    0
    есть у кого какие идеи?
     
  10. ham

    ham Member

    Joined:
    21 Jul 2011
    Messages:
    27
    Likes Received:
    5
    Reputations:
    0
    В первом случае указывали как я советовал тип базы данных?(--dbms=mysql)
    Во втором случае, если подобрались хоть какие то колонки, то по ним можно узнать префикс, если он используется. Например, нашелся столбец qw_users, надо прогнать по словарям с этим префиксом, в sqlmap есть такая команда, сейчас не могу посмотреть, можете почитать help: sqlmap -h или sqlmap -hh. Кстати, какой версией sqlmap пользуетесь? ЛУчше брать из git репозитория самую последную.
     
  11. vikler

    vikler Member

    Joined:
    16 Aug 2012
    Messages:
    92
    Likes Received:
    7
    Reputations:
    0
    Да, в первом случае указывала --dmbs=mysql :(
    К сожалению, колонок не подобралось вообще...
    Можно вам подробнее в личку написать с конкретным url'ом сайта? Просто, если для вас это будет внапряг, я не буду беспокоить, итак советами помогаете - за что огромное спасибо