PDA

Просмотр полной версии : SQL-инъекция


Your_friend
24.02.2016, 17:27
Добрый вечер. Недавно заинтересовался 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 (не знаю какой версии)

Terpug
24.02.2016, 17:38
дай валидный запрос серверу через sql/ он те6е отвечает ощи6кой потому_что ему нечего те6е "сказать". или попро6уй дать ему истинное условие и после через кавычки или про6ел_ а можно всё вместе запросить то_что те6я интересует

Your_friend
24.02.2016, 17:54
Terpug said:
↑ (https://antichat.live/posts/3956386/)
дай валидный запрос серверу через sql/ он те6е отвечает ощи6кой потому_что ему нечего те6е "сказать". или попро6уй дать ему истинное условие и после через кавычки или про6ел_ а можно всё вместе запросить то_что те6я интересует


Какой например можно дать запрос? И почему тогда выдаётся синтаксическая ошибка?

Terpug
24.02.2016, 18:09
Валидный- зависит от того что ты хочешь получить.

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ый"