Hackquest PHDays III

Майские праздники — это возможность отдохнуть от работы, съездить куда-нибудь, встретиться с друзьями. А можно заняться любимым делом и попытаться выиграть инвайт на PHDays. Чем я и занялся 🙂

Новые места: aclis.exe

Задание:

Find the address of ONsec office

 Найти сам адрес было не очень сложно, спасибо Ветерку, который узнал адрес “ООО ОНСЕК ИНК”: 119991, Москва Город, Спасоналивковский 2-й Переулок, 6. Намного сложнее было привести этот адрес в форму, которую скрипт примет за флаг. Но после подсказки в твиттере “Example: «PER. KAZANSKIY 2-Y 10». Google maps string”, стало очевидно как именно надо вводить адрес. Вид из окна офиса ONsec:

 

Новые знакомства: tosul.exe

Внезапно оказывается что Владимир Воронцов — это всего лишь псевдоним. И нам надо найти его настоящее имя.

Ну ладно, это легко. Посмотрев whois по блогу Воронцова можно увидеть мыло novikov.i.m@gmail.com. Фамилия есть, а имя можно догадаться — на букву И не так уж их много 🙂

И ты, Брут? xlc.exe

Classic <!— dirbust from there —> web task here.

Сканером директорий находим папки ./status/ и ./myadmin/. Если часто обращаться к директории ./status/ есть шанс увидеть запись:

hackquest.phdays.com   GET /missions/xlc/myadmin/index.php?token=8a36357e932a2c72112d89f0c96

Тут только 27 символов, а токен должен быть 32. Так что остальные 5 символов нужно было найти методом подбора.

Ну и запросы у вас. lietome1.exe

Есть SQLite инъекция, надо достать флаг из базы. Но на страже базы стоит WAF. Он не позволяет в одном запросе использовать select и from. Так что вектор искали долго, но всё же нашли:

http://hackquest.phdays.com/missions/lietome1/?idx=id+left+natural+join+((select+1+as+id)+join+flags+on+2=2)&id=1+and+substr(flag,1,1)=»8«

Кругосветное путешествие. kolum.exe

Даны 32 IP-адреса. Суть в том, чтобы узнать страну по IP и собрать флаг из первых букв названий стран. Казалось бы — легкий таск, но попробуй догадаться 😉

Ксорь кокосы, ксорь бананы. tehix.exe

Тут нас ожидает форма входа. Даны данные для тестового входа: demo/demo. Цель — зайти под админом. При логине — выдается кука. После детального изучения выяснилось что это заксоренная строк в hex. Если залогиниться с логином “demo” и много пробелов, то проксорив куку мы получим “PHDAYS2013 23-24 May, key from @ONsec_lab here ;)”. В итоге генерируем куку с логином admin и получаем флаг.

Устроим гонки. carah.exe

Еще одна форма логина. На этот раз доступен исходный код.

Изучив его, мы понимаем что нужная кука (EXTSESSID) зашифрована алгоритмом Blowfish с неизвестным нам ключом. Далее выясняется что нужный нам ключ хранится в файле

‘./sessions/sesskey-‘.md5($_SERVER[‘REMOTE_ADDR’])

Файлу почти сразу после создания меняют владельца и он становится недоступным. Почти. В этом и есть цель задания — успеть обратиться к файлу, прежде чем он станет недоступным. А это не так-то просто. Задание усложняется тем, что файл с ключом не перезаписывается и надо каждый раз при входе менять IP.  В общем всё решалось так:

1) Логинимся каждый раз с нового IP. 2) Пытаемся качать файл с ключом. 3) Расшифровываем EXTSESSID, меняем в нем demo на admin и зашифровываем. 4) Заходим на сайт со старой PHPSESSID и новой EXTSESSID. 5) Получаем флаг.

Весёлый пёс: gd.exe

А в этом задании нам предлагают посмотреть видео с забавным пёсиком. Ну ладно. Я скачал видео и начал смотреть. На 33 секунде внезапно промелькнул флаг. Тут главное быть очень глазастым — с первого раза все знаки очень трудно разобрать, особенно a,c и e.

Старые книги: oldbook.exe

Этот таск хочет узнать по каким книгам мы знакомились с компьютерами. И чем старее книга, тем больше баллов дают за задание.

GET не нужен: cisaq.exe

 И ещё одна форма входа. И ещё раз надо зайти под админом. На этот раз в куке находится Base64:  IDUh8aD9PO9DmnfFcC3qOA==.  Если убрать несколько первых символов, то будет ошибка:

PHP Warning:  Division by zero in /var/www/missions/cisaq/sources/config.php on line 2

Из этой ошибки видно что есть директория /sources/. Но при обращении к ней появляется 403 ошибка — нам запрещено сюда заходить. После вечера раздумья пришла мысль отправить не GET, а POST-запрос. И о чудо — нам показали листинг папки:

config.php
actions.phps
README
Обратившись к actions.phps я получил исходник файла: http://pastebin.com/aavQgCtG
Изучив исходник, стало понятно что тут LFI через параметр locale. Поставив куку locale=../sources/config.php и попробовав обновить главную куку зайдя по ссылке http://hackquest.phdays.com/missions/cisaq/actions.php?do=action3 мы видим что мы не имеем доступа к этому действию «access denied». Но обратившись к древней магии, и к ?do=action4a3@1 мы всё-таки обновили куку. В исходнике главной страницы будет флаг.
Рубрика: Интернет | Метки: , , , | Ваш комментарий