Показать сообщение отдельно

  #9  
Старый 28.07.2008, 19:56
Grey
Познавший АНТИЧАТ
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме:
17668503

Репутация: 5826


По умолчанию

Цитата:
Сообщение от Велемир  
Хыхы))А мне всегда почему-то казалось, что подзапрос -

это выражения вида 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.

Последний раз редактировалось Grey; 28.07.2008 в 20:06..