Никита К.
1594 повідомлення
#15 років тому
Если после ввода примерно такого текста в форму регистрации
Цитата:

123123123'+UNION+SELECT+*+FROM+users+WHERE+1=1


На страницу вылазит примерно следующий текст (да-да, именно вылазит)
Цитата:
Error: 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 '\' UNION SELECT * FROM users WHERE 1=1' at line 1


Вот сижу, и думаю - кавычка экранируется. А ошибка вылазит. Почему?.. И можно это как то заюзать?..
Юрий Степанец
96 повідомлень
#15 років тому
Попробуйте использовать htmlspecialchars() в PHP при передаче того, что ввел пользователь, в запрос.
Артем Л.
11416 повідомлень
#15 років тому
Оффтопик
Хорошо что не такое вылазиет:
Вы не можете использовать указанный пароль. Такой пароль уже использует пользователь Misha. Пожалуйста, придумайте другой пароль.
Роман П.
1599 повідомлень
#15 років тому
Есть волшебная mysql_real_escape_string, ващемта.

Цитата ("Onym"):
Попробуйте использовать htmlspecialchars() в PHP при передаче того, что ввел пользователь, в запрос.


Чувак да ты гений! *утирает слезы*
Юрий Степанец
96 повідомлень
#15 років тому
Я не гений.
Я в данном вопросе новичек.
Если не прав - прошу прощения у ТС.
Paralysed Объясните, пожалуйста, в чем именно я не прав, если Вы намекали именно на это.
UPD
И, кстати, Вы бы не могли рассказать, почему это может не сработать?
Никита К.
1594 повідомлення
#15 років тому
Оффтопик
Вы что, действительно подумали, что это я написал? не-е-е-е... Это с левого сайта...
Роман В.
99 повідомлень
#15 років тому
Видно с экранированием какие то траблы, можно попробовать слеши и кавычки. какие результаты, если просто есть кавычка?
Роман В.
99 повідомлень
#15 років тому
Оффтопик
Эм, я один сразу подумал что ТС не создатель сайта, а злоумышленник?
Роман В.
99 повідомлень
#15 років тому
Оффтопик
neadekvat, почему этот не подходит, пусть люди увидят, может кто о чем задумается
Никита К.
1594 повідомлення
#15 років тому
Оффтопик
neadekvat, ага, на другие. )) Но, как вы сказали - "по инерции"

Тем более, что не собираюсь я никого ломать, так, заинтересовался: Что ж такое надо написать, чтоб такие баги вылазили... На том сайте еще и обработку форму впихнули в JS-функцию. Не сразу даже понял, что форма - работает, пока JS не включил
Кирилл Е.
2817 повідомлень
#15 років тому
Цитата ("Anexroid"):
Вы что, действительно подумали, что это я написал? не-е-е-е... Это с левого сайта...

Ну так зачем людям голову морочить?

Если речь о union, то оно типа так?

(SELECT * FROM `table1`) UNION (SELECT * FROM `table2`)


при чем в первом селекте и во втором количество столбцов должно совпадать.. вам же название полей не известно..

короче беседе не о чем )..

..если бы за создание темы снимать с баланса хотя бы по 0.5 бакса.. может думали сначала.. ))
Никита К.
1594 повідомлення
#15 років тому
Цитата ("kirilev"):
..если бы за создание темы снимать с баланса хотя бы по 0.5 бакса.. может думали сначала.. ))

Вам что, жалко?

Не о UNIONах речь... )) А о "почему баг вообще вылазит"? Если конструкция внутри одинарных кавычек при подстановке в запрос экранирована и т.п.?
Роман В.
99 повідомлень
#15 років тому
Anexroid, проследи в каком формате уходят сообщения, JSом что-то делается с текстом? И "+" не обязательны в инпуте, вроде как.
Евгений О.
2989 повідомлень
#15 років тому
Цитата ("Onym"):
не могли рассказать, почему это может не сработать?

mysql_real_escape_string действительно использовать предпочтительнее, чем htmlspecialchars. Она более правильно работает с точки зрения mysql.
Никита К.
1594 повідомлення
#15 років тому
neadekvat, нет, вроде.

Там сначала заполняешь 2 поля, их обрабатывает JS и перекидывает на другую страницу.
На этой "другой" страницы в поля с readonly вписываются введенные данные, а ниже - еще много-много полей, которые сначала "обрезаются" от всего лишнего JSом, а уже затем отдаются PHP-скриптом.
Никита К.
1594 повідомлення
#15 років тому
Цитата ("neadekvat"):
Цитата (Anexroid):Если конструкция внутри одинарных кавычек при подстановке в запрос экранирована и т.п.?
Если это не ваш сайт - откуда вы знаете, что данные экранируются?


Потому что почитайте текст ошибки. Там ' заменена на \'
Никита К.
1594 повідомлення
#15 років тому
elosoft, а если писать так: mysql_real_escape_string(htmlspecialchars($str)) ?
Никита К.
1594 повідомлення
#15 років тому
Цитата ("r0b1n"):
Anexroid, проследи в каком формате уходят сообщения, JSом что-то делается с текстом? И "+" не обязательны в инпуте, вроде как.

нет. JS там только проверяет "заполнены" ли поля. + на OnKeyUp висит функция, не дающая ввести больше нужного количества символов и убивающая всё, кроме цифр.
Евгений О.
2989 повідомлень
#15 років тому
Цитата ("Anexroid"):
elosoft, а если писать так: mysql_real_escape_string(htmlspecialchars($str)) ?

Нет, вот это не правильно . В итоге 100% получить непредсказуемый результат.
Можно принудительно дополнительно слэшировать перед записью не взирая на все настройки, это другое дело.
Кирилл Е.
2817 повідомлень
#15 років тому
Цитата ("Anexroid"):
Вам что, жалко?

Кому? Мне? Да ради Бога ).

Цитата ("Anexroid"):
Не о UNIONах речь... )) А о "почему баг вообще вылазит"?

Именно юнион и вызвал эту ошибку, я же описал принцип использования объединения.

Цитата:
UNION SELECT * FROM users WHERE 1=1

Это-же ваш кусок так званого бага.

Цитата ("Anexroid"):
Если конструкция внутри одинарных кавычек при подстановке в запрос экранирована и т.п.?

покажите код ).. почему экранирована? а может там просто регуляркой заменяют одинарные ' на \' и всё ..

Цитата ("Anexroid"):
Вы что, действительно подумали, что это я написал? не-е-е-е... Это с левого сайта...

ну так каким боком этот сайт относится к вам ..

к чему эта тема - я так и не понял .. хоть бы ссылку на эту форму, чтоли..
Какая цель создания темы?.. получить строку возможной скл-инъекции?