SQL-Inj или нет?
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 повідомлень
1599 повідомлень
#15 років тому
Есть волшебная mysql_real_escape_string, ващемта.Цитата ("Onym"):
Попробуйте использовать htmlspecialchars() в PHP при передаче того, что ввел пользователь, в запрос.
Чувак да ты гений! *утирает слезы*
96 повідомлень
#15 років тому
Я не гений.Я в данном вопросе новичек.
Если не прав - прошу прощения у ТС.
Paralysed Объясните, пожалуйста, в чем именно я не прав, если Вы намекали именно на это.
UPD
И, кстати, Вы бы не могли рассказать, почему это может не сработать?
1594 повідомлення
99 повідомлень
#15 років тому
Видно с экранированием какие то траблы, можно попробовать слеши и кавычки. какие результаты, если просто есть кавычка?
99 повідомлень
99 повідомлень
1594 повідомлення
#15 років тому
Оффтопик
neadekvat, ага, на другие. )) Но, как вы сказали - "по инерции"
Тем более, что не собираюсь я никого ломать, так, заинтересовался: Что ж такое надо написать, чтоб такие баги вылазили... На том сайте еще и обработку форму впихнули в JS-функцию. Не сразу даже понял, что форма - работает, пока JS не включил
Тем более, что не собираюсь я никого ломать, так, заинтересовался: Что ж такое надо написать, чтоб такие баги вылазили... На том сайте еще и обработку форму впихнули в 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)) ?
Нет, вот это не правильно

Можно принудительно дополнительно слэшировать перед записью не взирая на все настройки, это другое дело.
2817 повідомлень
#15 років тому
Цитата ("Anexroid"):Вам что, жалко?
Кому? Мне? Да ради Бога ).
Цитата ("Anexroid"):
Не о UNIONах речь... )) А о "почему баг вообще вылазит"?
Именно юнион и вызвал эту ошибку, я же описал принцип использования объединения.
Цитата:
UNION SELECT * FROM users WHERE 1=1
Это-же ваш кусок так званого бага.
Цитата ("Anexroid"):
Если конструкция внутри одинарных кавычек при подстановке в запрос экранирована и т.п.?
покажите код ).. почему экранирована? а может там просто регуляркой заменяют одинарные ' на \' и всё

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

к чему эта тема - я так и не понял

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