SQL-инъекция

Discussion in 'Песочница' started by Your_friend, 24 Feb 2016.

  1. Your_friend

    Your_friend New Member

    Joined:
    24 Feb 2016
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Добрый вечер. Недавно заинтересовался SQL-инъекциями. Я ещё новичок. Сильно не бейте.

    Взял сайт на пробу site.ru
    Если зайти в раздел "Новости", то там у каждой статьи есть кнопки Нравится/Не нравится. При нажатии на Не нравится появляется ссылка site.ru/?menu=news&id_ans=9&rating=dislike.

    Если немного подкорректировать запрос и после id_ans ввести любое слово, то вылезает ошибка. Пример:
    site.ru/?menu=news&id_ans=пр

    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 ' , 0)' at line 1

    А вот что дальше делать не знаю. Если ввести после знака id_ans= SELECT * FROM name, то выдаёт ту же ошибку:
    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 ' , 0)' at line 1

    Возможно будет полезно.

    На странице всего 9 новостей. Если поставить в этом коде http://site.ru/?menu=news&id_ans=9&rating=dislike
    вместо 9 любое число от 1-9, то напишет, что одну новость нельзя оценивать дважды. Если поставить больше 9, то напишет, что оценка принята и запомнит это. Больше оценивать новость №90 я не смогу (даже если такой ещё нет).

    p.s. Прошу прощения, если коряво описал задачу :). Говорите что не понятно, постараюсь объяснить, если смогу.

    Кстати сервер работает на Apache 2.2.22. Сайт c PHP 5 и MySQL (не знаю какой версии)
     
  2. Terpug

    Terpug New Member

    Joined:
    22 Feb 2016
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    дай валидный запрос серверу через sql/ он те6е отвечает ощи6кой потому_что ему нечего те6е "сказать". или попро6уй дать ему истинное условие и после через кавычки или про6ел_ а можно всё вместе запросить то_что те6я интересует
     
    Your_friend likes this.
  3. Your_friend

    Your_friend New Member

    Joined:
    24 Feb 2016
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Какой например можно дать запрос? И почему тогда выдаётся синтаксическая ошибка?
     
  4. Terpug

    Terpug New Member

    Joined:
    22 Feb 2016
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    Валидный- зависит от того что ты хочешь получить.
    SELECT * FROM `members` WHERE name = '$name' AND password ='$password'
    Слово SELECT в SQL-запросе показывает_какие данные нужно получить. Например_ можно было бы указать SELECT name_ или SELECT name_ password.

    - если ты введешь SELECT * FROM name то это ничего не даст так как ты говоришь - "широта_ долгота"_ те6е нужно написать - "111_ 111" тогда может 6ыть получишь ответ. в зависимости как реагирует на запрос сайт

    например - 'лол' --+ ' AND password ='111' в оперделённое место иначе у те6е вернёт ощи6ку. если ты 6удеш вводить эти данный в логин/ пароль те6я ли6о впустит в личку ли6о скажет не верный логин или пароль

    SELECT * FROM `members` WHERE name = 'Demo' --+ ' AND password ='111'

    ЗЫ если ты введёшь команду типо id_ans= SELECT * FROM где "id_ans" строчка которая принимает команду тогда те6е выдаст ощи6ку так как. какая вооще у строчки может 6ыть "широта долгота".
    широту долготу ты пожешь получить восползовщись этоя строчкой в которуу ты введёшь команду. она о6ра6отается и тогда ты получишь ответ. конечно если ты указал команду которуу сервер поймёт и пропустит на выполнение_ если он "сла6ый"
     
    #4 Terpug, 24 Feb 2016
    Last edited: 24 Feb 2016
    Your_friend likes this.