SQL инъекция в MySQL

Discussion in 'Уязвимости' started by gadjet, 18 Dec 2005.

  1. gadjet

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

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    Я нашел сайт, подверженный SQL инъекции(MySQL). Подсчитал количество полей, которое выдает скрипт. Получилось:
    http://www.somesite.ru/shop/?nd=99999 UNION SELECT null,null,null,null,null,null/*

    Я решил для испытать права пользователя под которым подключается скрипт к БД, выстроив запрос к базе mysql:

    http://www.somesite.ru/shop/?nd=99999 UNION SELECT null,null,null,null,null,null FROM mysql.user/*

    На это сайт ответил:

    1044Access denied for user: 'wmex@localhost' to database 'mysql' :confused:

    То беж у меня нет прав.
    Что мне делать в этом случае для продолжение атаки на сервер? :confused:
    Как я понял, в таком случае надо перебирать названия таблиц, но как? и к чему это приведет?

    Пожалуйста, посоветуйте, что делать в данном случае?
     
  2. virgoz

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

    Joined:
    16 Sep 2004
    Messages:
    151
    Likes Received:
    28
    Reputations:
    15
    Правильно, перебирай...
    Потом, когда таблицу подберешь, можешь подбирать столбцы :)
    Обычно ищут таблицы юзеров, или конфиг-таблицы...
     
  3. gadjet

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

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    А какие имена таблиц нужно подбирать, и как на это должен реагировать сайт?
     
  4. virgoz

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

    Joined:
    16 Sep 2004
    Messages:
    151
    Likes Received:
    28
    Reputations:
    15
    Попробуй users,admin,condig,user,admins и т.д. Все зависит от сайта, везде по разному... Если таблицы нет - вылетит ошибка, а есил есть, ошибок не будет. Потом столбцы подбирай. Удобнее это делать, если знаешь что выводится. Для этого вместо null ставь чистла. Например: http://www.somesite.ru/shop/?nd=99999 UNION SELECT 1,2,3,4,5,6 FROM mysql.user/* И те числа, которые ты увидишь при подобранной таблице и надо заменять на столбцы :)
    Короче пробуй ;)
     
  5. gadjet

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

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    когда я пишу подобное сайт выдает ошибку:

    1044Access denied for user: 'wmex@localhost' to database 'mysql'
    По-моему, у меня нет прав на select. Возможно ли продолжать взлом после этого?

    Посотрите, поймете:

    http://www.wmtaganrog.ru/shop/?nd=999999+union+select+null,null,null,null,null,null/*
     
  6. virgoz

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

    Joined:
    16 Sep 2004
    Messages:
    151
    Likes Received:
    28
    Reputations:
    15
    Это значит у тебя нет прав на просмотр базы mysql. Что является обычным случаем. Редко случается, когда они есть. Только при плохо-настроенном конфиге.
    Но в твоем случае, всем бы получилось, если бы был вывод результата. Тоесть если-бы были видны цифры 123456. Раз их нет, то и нъекции нормальной нет. Можно только найти таблицу, подобрать столбцы, и потом пробовать методом перебора. Подробнее можешь спросить у ZaCo ;)
    Так что ищи другую дыру :)
     
  7. gadjet

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

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    А вот такая еще проблема: как атаковать сайт если инъекция выполняется в поле order by? UNION не попрет, пишет: Wrong usage of UNION and ORDER BY
     
  8. Xalegi

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

    Joined:
    24 Nov 2004
    Messages:
    109
    Likes Received:
    4
    Reputations:
    6
    функция ОРДЕР бай означает СОРТИРОВКУ
    а по поводу то что нужно цифры.. (select 1,2,3,4,5 from ....)мммм... бред... т.е. обращаешься К СТОЛБЦАМ С ИМЕНАМИ 1,2,3,4,5 хмм.. не кажется что это заведомо не верно? =)

    структура ORDER BY:

    Select * from xxx
    [where xxx]
    ORDER BY <столбец> [desc - эт по возрастанию кажись]\(Avp -вот тут не помню как по убыванию точно)

    ну вот и смотрим =)
     
  9. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    2Xalegi
    1)order by - оператор
    2)... unoon select 1,2,3,4,5 from xxx - по твоему это не правильно? почитай про синтаксис union
    2gadjet в предложении order by возможно выполнить инекцию с оператором union.
    ---
    на все свои вопросы можно получить более полный ответ на mysql.ru
     
    1 person likes this.
  10. Xalegi

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

    Joined:
    24 Nov 2004
    Messages:
    109
    Likes Received:
    4
    Reputations:
    6
    хммм... Union... вообще кажись ОБЪЕДИНЕНИЕ без повторяющихся строк =) или мну ошибается?

    по поводу ордер бай.. мде... ступил.. эт действительно оператор =)
     
  11. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    почему же? ошибаешься... можно например так:
    select username from phpbb_users group by user_id limit 10 union all select username from phpbb_users;
    в таком случае и с повторами выйдет.
    ---
    а можно и так:
    select username from phpbb_users group by user_id limit 10 union select 'XAXA' from phpbb_users;
    или так
    select username from phpbb_users group by user_id limit 10 union all select 0x58415841 from phpbb_users;
    или так
    select username from phpbb_users group by user_id limit 10 union all select 1000001 from phpbb_users;
     
  12. Xalegi

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

    Joined:
    24 Nov 2004
    Messages:
    109
    Likes Received:
    4
    Reputations:
    6
    во-во.... ЮНИОН и ЮНИОН ОЛЛ !!!!! различия сам видишь =)
     
  13. gadjet

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

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    Возможно ли какии-нибудь программными средствами подобрать название таблицы с юзерами(прога какая-нить или скрипт)?
     
  14. Xalegi

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

    Joined:
    24 Nov 2004
    Messages:
    109
    Likes Received:
    4
    Reputations:
    6
    на моей памяти нет.. но как правило они идут стандартные названия... что-то вроде mysql.user и т.д.
    можно просто попробывать посмотреть структуру ТАБЛИЦЫ всей.. следовательно и столбцы увидишь:
    desc <таблица>