Сообщение от
Велемир
Хыхы))А мне всегда почему-то казалось, что подзапрос -
это выражения вида 1+and+substring(version(),1,1)=5;
Это не подзапрос, а использование логического опретора and.
В запросе получается что то вроде этого:
select title from page where page_id=[sql inj]
Смысл запроса вывести заголовок указанной страницы.
Сюда ты и подставляешь данные:
select title from page where page_id=1 and substring(version(),1,1)=5
Смысл вывести заголовок указанной страницы и первый символ версии БД должен быть равен 5.
Т.е. запрос выполнится успешно если верси БД равна 5.
substring() и version() это функции.
В данном примере ты используешь логический опрератор and и две функции, а подзапросы не используешь.
Ограничиваясь такими логическими посимвольными учтонениями запроса, используя только функции и не используя подзапросы максимум что ты можешь сделать это вывести содержимое файла (и то если пользователь БД обладает соотвествующими правами) - подробнее тут =>
Работа с MySQL третьей версии...
Сообщение от
Велемир
или 1+and+1=5+union+select; Выполнится второй
запрос,а первый улетает.Так эт чо - один большой запрос или всё же два?)).
Уф...
union - это опретор объединяющий два запроса:
select title from page where page_id=1 and substring(version(),1,1)=5 union select 1
В данном случае если версия БД не равна 5, то выведется еденица.
Подробнее тут =>
SQL injection полный FAQ
Подзапросы используются для работы со слепыми инъекциями:
select title from page where page_id=1 and (select 1 from user limit 0,1)=1
Подробнее про слепые инъекции тут =>
SQL инъекция FAQ (в т.ч. и blind SQL)
P.S. а вообще очень советую купить справочник/учебник по синтаксису sql.