HackTheBox

HackTheBox — Получение инвайта.

Здравствуйте, дорогие друзья. Поговорим сегодня про площадку для хакеров, которая называется «HackTheBox». Хочу отметить, что просто так у нас нет возможности зарегистрироваться на этом сайте. Нужен инвайт, который надо будет достать с сайта:

для регистрации на сайте hackthebox нужен инвайт

Разработчики намеренно оставили эти действия для того, чтобы уже при регистрации, начать думать, как хакер и взломать сайт, получив инвайт.

Введем какой-либо код, не важно какой:

вводим какой-либо код, не важно какой

Получаем ошибку.

Давайте посмотрим на код этой странице, с помощью встроенного инструмента «Инспектора кода», и после беглого просмотра на глаза попадается скрипт «/js/inviteapi.min.js»:

скрипт «/js/inviteapi.min.js»

Разработчики не выкладывают такие файлы наружу, и это зацепка.

Переходим на вкладку «Sources» и находим искомый файл «min.js», включив опцию «pretty-print»:

Переходим на вкладку «Sources» и находим искомый файл «min.js», включив опцию «pretty-print»

Код представляет собой стандартную функцию запаковки всего кода на javascript с явной функцией «eval».

Нам нужно cкопировать и выполнить этот код на вкладке «Console», назвав функцию «BOX»:

Нам нужно cкопировать и выполнить этот код на вкладке «Console», назвав функцию «BOX»

В итоге мы ничего нового и полезного не узнали, кроме двух функций: «verifyInviteCode(code)», «makeInviteCode()». Функция «makeInviteCode()», отправляет данные на сервер. Посмотрим, какой ответ получили:

Функция «makeInviteCode()», отправляет данные на сервер. Посмотрим, какой ответ получили

Получили зашифрованные данные, методом ROT13, о чем говорит подсказка.

Расшифровка происходит с помощью декодера ROT13:

Расшифровка происходит с помощью декодера ROT13

Нам нужно отправить POST-запрос на /api/invite/generate. Он будет выглядеть как: «$.post(„/api/invite/generate“, function( r)  {console.log( r);})»:

Нам нужно отправить POST-запрос на /api/invite/generate. Он будет выглядеть как: «$.post(„/api/invite/generate“, function( r)  {console.log( r);})»

На первый взгляд кажется, что это BASE64, попробуем расшифровать код, с помощью функции atob():

На первый взгляд кажется, что это BASE64, попробуем расшифровать код, с помощью функции atob()

Копируем полученное значение, которое похоже на инвайт, и вставляем его в поле для ввода:

Копируем полученное значение, которое похоже на инвайт, и вставляем его в поле для ввода

На этом все. Всем хорошего дня!