Hack the box - получаем приглашение в лабораторию для хакеров.

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER
Регистрация
7 Фев 2020
Сообщения
525
Реакции
98
Репутация
147

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

это бесплатная Pentesting Lab. (Лаборатория пентеста) в которой вы можете усовершенствовать свои навыки взлома и научится чему-то новому.
Но обычным пользователям туда не попасть, вход только для избранных хацкеров. Для того, чтобы попасть в HTB нам нужно взломать систему приглашений и получить свой уникальный инвайт код. Сегодня мы с тобой этим и займёмся, поiхали!
Открываем главную страницу

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

:

Пролистав чуть ниже ты должен найти кнопку Join:

Переходим и видим следующие:

В заголовке страницы написано: "Can you hack this box?". Вызов принят. Для начала открываем просмотр кода страницы: ПКМ -> Искодный код страницы
Весь код написан в одной строке

Нажимаем Ctrl + F и ищем все скрипты.js. Нам нужен лишь один - inviteapi.min.js:

Перейдя по которому мы можем найти нужный нам POST запрос - makeInviteCode

Переходим обратно на страницу с

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

нажимаем F12, и открываем консоль:

В консоли пишем: makeInviteCode () и получаем следующие:
data: "Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/vaivgr/trarengr"​
enctype: "ROT13"​

Всё что написано в кавычках - зашифрованный текст методом ROT с ключом 13. Об этом говорит строка enctype: "ROT13". Те, кто проходил мой мини-квест по криптографии уже знают как его декордировать. Мы с тобой будем использовать

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

для декодирования ROT13.

"In order to generate the invite code, make a POST request to /api/invite/generate"​

Если мы перейдём по пути hackthebox.eu/api/invite/generate Появляется надпись о том, что мы не на верном пути:

Нам нужно сделать POST запрос. Делается это при помощи дополнительного расширения для браузера HackBar (

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

/

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

)
F12 -> HackBar.
Теперь в самом ХакБаре тыкаем на Load URL:

Также нажимаем на Post data (т.к нам нужно сделать POST запрос) в поле для ввода вписываем:
POST /?foo=bar HTTP/1.1
Host: hackthebox.eu
Connection: close


Теперь нажимаем Execute и наш запрос отправился. В ответе от сервера видим следующее:

Казалось бы , что это то, что мы искали, но нет. Код зашифрован в Base64, об этом говорит символ "=" в конце. Опять декодируем текст в

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

декодере:

Этот код окончательный. Вводим его в поле для инвайта:

И у нас показывается поздравление о прохождении и поля для регистрации:

Подтверждаем почту, логинимся.

Для примера решим одно из сотен заданий в лаборатории. И поймём как нарабатывать практику.
Задание называется Snake

Скрин задания​
Качаем архив, запускаем скрипт. Весь скрипт (Python 2.7):
#!/usr/bin/python2.7
import random
lr = '\x64'
print '''
___________.__ _________ __
\__ ___/| |__ ____ / _____/ ____ _____ | | __ ____
| | | | \_/ __ \ \_____ \ / \\__ \ | |/ // __ \
| | | Y \ ___/ / \ | \/ __ \| <\ ___/
|____| |___| /\___ > /_______ /___| (____ /__|_ \\___ >
\/ \/ \/ \/ \/ \/ \/

'''
chains = [0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x72, 0x6f, 0x6c, 0x6c]
db = '\x6e'
ef = '\x63'
chars = []
keys = [0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x21, 0x21]
nn = '\x61'
lock_pick = random.randint(0, 0x3e8)
lock = lock_pick * 2
password = [0x69, 0x74, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x73, 0x79]
lock = lock + 10
ty = '\x61'
lock = lock / 2
auth = [0x6b, 0x65, 0x65, 0x70, 0x20, 0x74, 0x72, 0x79, 0x69, 0x6e, 0x67]
lock = lock - lock_pick
gh = '\x6e'
print 'The Snake Created by 3XPL017'
print 'Your number is ' + str(lock_pick)
for key in keys:
keys_encrypt = lock ^ key
chars.append(keys_encrypt)
for chain in chains:
chains_encrypt = chain + 0xA
chars.append(chains_encrypt)
aa = '\x61'
rr = '\x6f'
slither = aa + db + nn + ef + rr + gh + lr + ty
print 'Authentication required'
print ''
user_input = raw_input('Enter your username\n')
if user_input == slither:
pass

else:
print 'Wrong username try harder'
exit()
pass_input = raw_input('Enter your password\n')
for passes in pass_input:
for char in chars:
if passes == str(chr(char)):
print 'Good Job'
break
else:
print 'Wrong password try harder'
exit(0)
break

При запуске скрипт генерирует случайное число с помощью random.randint(0, 0x3e8) и выводит в строке "Your number is ...", но это было лишь для отвлечения внимания.
Первым делом я решил решить первую часть - Юзернейм. Проанализировав код, стало понятно, что за юзернейм отвечают эти строки:

А если быть точнее, то переменная slither это и есть наш юзернейм, было множество вариантов как решить первую часть "головоломки", и я придумал самую простую: просто вывести эту переменную на экран!

print '\nU53RN4M3: ' + slither

Запускаем скрипт, смотрим вывод:

Юзернейм - anaconda. Если юзернейм верный, скрипт запросит пароль, что собственно и произошло:

Т.к мы решали лишь первую часть, пароль нам неизвестен. Проанализировав код на функцию пароля нашёл эти строки:

Passes - пароль. Единственная загвоздка в том, что passes - не переменная. Соответственно сделать также, как и с юзернеймом не получится (потому-что пароль можно вывести в консоль, только после его объявления, а объвляется он когда верный, а мы его не знаем, замкнутый круг). Но я придумал довольно хитрую штуку: Вывести пароль при неверном заполнении, то есть ввести любые символы, а после строки "Wrong password try harder" вывести настоящий пароль, потому-что он уже объявлён.

print '\nP455W0RD; ' + str(chr(char))

Запускаем, вводим правильный юзернейм и НЕправильный пасс:

u ? серьёзно?

Видимо серьёзно...
Но на этом мы не останавливаемся, расскажу ещё способы решения этой задачки.
1 вариант.
Просто поменять значение переменной slither, например на D$_Admin, почему нет?

slither = 'D$_Admin'


2 вариант.
В этом варианте подойдёт абсолютно любой юзернейм путём спроса у пользователя:

slither = raw_input('Who?\n')



Было ещё много вариантов решения, но эти самые простые.


Я показал лишь одно из сотен заданий в Hack The Box. Остальные же для наработки практики в хакинге вам придётся решать самим...
 

Serggik00

Местный житель
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ЮБИЛЕЙНАЯ ЛЕНТА

Serggik00

Местный житель
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ЮБИЛЕЙНАЯ ЛЕНТА
Регистрация
31 Май 2018
Сообщения
957
Реакции
738
Репутация
22

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

это бесплатная Pentesting Lab. (Лаборатория пентеста) в которой вы можете усовершенствовать свои навыки взлома и научится чему-то новому.
Но обычным пользователям туда не попасть, вход только для избранных хацкеров. Для того, чтобы попасть в HTB нам нужно взломать систему приглашений и получить свой уникальный инвайт код. Сегодня мы с тобой этим и займёмся, поiхали!
Открываем главную страницу

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

:

Пролистав чуть ниже ты должен найти кнопку Join:

Переходим и видим следующие:

В заголовке страницы написано: "Can you hack this box?". Вызов принят. Для начала открываем просмотр кода страницы: ПКМ -> Искодный код страницы
Весь код написан в одной строке

Нажимаем Ctrl + F и ищем все скрипты.js. Нам нужен лишь один - inviteapi.min.js:

Перейдя по которому мы можем найти нужный нам POST запрос - makeInviteCode

Переходим обратно на страницу с

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

нажимаем F12, и открываем консоль:

В консоли пишем: makeInviteCode () и получаем следующие:
data: "Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/vaivgr/trarengr"​
enctype: "ROT13"​

Всё что написано в кавычках - зашифрованный текст методом ROT с ключом 13. Об этом говорит строка enctype: "ROT13". Те, кто проходил мой мини-квест по криптографии уже знают как его декордировать. Мы с тобой будем использовать

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

для декодирования ROT13.

"In order to generate the invite code, make a POST request to /api/invite/generate"​

Если мы перейдём по пути hackthebox.eu/api/invite/generate Появляется надпись о том, что мы не на верном пути:

Нам нужно сделать POST запрос. Делается это при помощи дополнительного расширения для браузера HackBar (

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

/

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

)
F12 -> HackBar.
Теперь в самом ХакБаре тыкаем на Load URL:

Также нажимаем на Post data (т.к нам нужно сделать POST запрос) в поле для ввода вписываем:
POST /?foo=bar HTTP/1.1
Host: hackthebox.eu
Connection: close


Теперь нажимаем Execute и наш запрос отправился. В ответе от сервера видим следующее:

Казалось бы , что это то, что мы искали, но нет. Код зашифрован в Base64, об этом говорит символ "=" в конце. Опять декодируем текст в

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

декодере:

Этот код окончательный. Вводим его в поле для инвайта:

И у нас показывается поздравление о прохождении и поля для регистрации:

Подтверждаем почту, логинимся.

Для примера решим одно из сотен заданий в лаборатории. И поймём как нарабатывать практику.
Задание называется Snake

Скрин задания​
Качаем архив, запускаем скрипт. Весь скрипт (Python 2.7):
#!/usr/bin/python2.7
import random
lr = '\x64'
print '''
___________.__ _________ __
\__ ___/| |__ ____ / _____/ ____ _____ | | __ ____
| | | | \_/ __ \ \_____ \ / \\__ \ | |/ // __ \
| | | Y \ ___/ / \ | \/ __ \| <\ ___/
|____| |___| /\___ > /_______ /___| (____ /__|_ \\___ >
\/ \/ \/ \/ \/ \/ \/

'''
chains = [0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x72, 0x6f, 0x6c, 0x6c]
db = '\x6e'
ef = '\x63'
chars = []
keys = [0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x21, 0x21]
nn = '\x61'
lock_pick = random.randint(0, 0x3e8)
lock = lock_pick * 2
password = [0x69, 0x74, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x73, 0x79]
lock = lock + 10
ty = '\x61'
lock = lock / 2
auth = [0x6b, 0x65, 0x65, 0x70, 0x20, 0x74, 0x72, 0x79, 0x69, 0x6e, 0x67]
lock = lock - lock_pick
gh = '\x6e'
print 'The Snake Created by 3XPL017'
print 'Your number is ' + str(lock_pick)
for key in keys:
keys_encrypt = lock ^ key
chars.append(keys_encrypt)
for chain in chains:
chains_encrypt = chain + 0xA
chars.append(chains_encrypt)
aa = '\x61'
rr = '\x6f'
slither = aa + db + nn + ef + rr + gh + lr + ty
print 'Authentication required'
print ''
user_input = raw_input('Enter your username\n')
if user_input == slither:
pass

else:
print 'Wrong username try harder'
exit()
pass_input = raw_input('Enter your password\n')
for passes in pass_input:
for char in chars:
if passes == str(chr(char)):
print 'Good Job'
break
else:
print 'Wrong password try harder'
exit(0)
break

При запуске скрипт генерирует случайное число с помощью random.randint(0, 0x3e8) и выводит в строке "Your number is ...", но это было лишь для отвлечения внимания.
Первым делом я решил решить первую часть - Юзернейм. Проанализировав код, стало понятно, что за юзернейм отвечают эти строки:

А если быть точнее, то переменная slither это и есть наш юзернейм, было множество вариантов как решить первую часть "головоломки", и я придумал самую простую: просто вывести эту переменную на экран!

print '\nU53RN4M3: ' + slither

Запускаем скрипт, смотрим вывод:

Юзернейм - anaconda. Если юзернейм верный, скрипт запросит пароль, что собственно и произошло:

Т.к мы решали лишь первую часть, пароль нам неизвестен. Проанализировав код на функцию пароля нашёл эти строки:

Passes - пароль. Единственная загвоздка в том, что passes - не переменная. Соответственно сделать также, как и с юзернеймом не получится (потому-что пароль можно вывести в консоль, только после его объявления, а объвляется он когда верный, а мы его не знаем, замкнутый круг). Но я придумал довольно хитрую штуку: Вывести пароль при неверном заполнении, то есть ввести любые символы, а после строки "Wrong password try harder" вывести настоящий пароль, потому-что он уже объявлён.

print '\nP455W0RD; ' + str(chr(char))

Запускаем, вводим правильный юзернейм и НЕправильный пасс:

u ? серьёзно?

Видимо серьёзно...
Но на этом мы не останавливаемся, расскажу ещё способы решения этой задачки.
1 вариант.
Просто поменять значение переменной slither, например на D$_Admin, почему нет?

slither = 'D$_Admin'


2 вариант.
В этом варианте подойдёт абсолютно любой юзернейм путём спроса у пользователя:

slither = raw_input('Who?\n')



Было ещё много вариантов решения, но эти самые простые.


Я показал лишь одно из сотен заданий в Hack The Box. Остальные же для наработки практики в хакинге вам придётся решать самим...
Уважаемый ТС постя такие темы, нужно понимать что у нас много молодых и юных, и такие статьи ориентированы на чуть подготовленных людей которые хоть поймут, а где взять терминал, а еще больше поняли что вся работа практически на Линуксе!
А так я читаю Ваши посты ставлю +++++
 

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER
Регистрация
7 Фев 2020
Сообщения
525
Реакции
98
Репутация
147
Уважаемый ТС постя такие темы, нужно понимать что у нас много молодых и юных, и такие статьи ориентированы на чуть подготовленных людей которые хоть поймут, а где взять терминал, а еще больше поняли что вся работа практически на Линуксе!
А так я читаю Ваши посты ставлю +++++
Я же публикую статьи не только для опытных пользователей, но и для "молодых". А ориентироваться только на новичков не хочется. Всегда можно поискать недостающую инфу в сети или спросить у меня на крайний случай). А так, пытаюсь публиковать и для чайников и для более продвинутых. Думаю, что каждый может найти для себя что-то полезное)
 

Serggik00

Местный житель
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ЮБИЛЕЙНАЯ ЛЕНТА

Serggik00

Местный житель
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ЮБИЛЕЙНАЯ ЛЕНТА
Регистрация
31 Май 2018
Сообщения
957
Реакции
738
Репутация
22
Я же публикую статьи не только для опытных пользователей, но и для "молодых". А ориентироваться только на новичков не хочется. Всегда можно поискать недостающую инфу в сети или спросить у меня на крайний случай). А так, пытаюсь публиковать и для чайников и для более продвинутых. Думаю, что каждый может найти для себя что-то полезное)
Я Вас читаю! Не сбавляйте оборотов!
 

Novicki

Новичок

Novicki

Новичок
Регистрация
20 Мар 2020
Сообщения
2
Реакции
0
Репутация
0
Хорошая статья, только хотел начинать браться за этот сайт. А тут подгон.
 

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER
Регистрация
7 Фев 2020
Сообщения
525
Реакции
98
Репутация
147
Хорошая статья, только хотел начинать браться за этот сайт. А тут подгон.
Я когда регался был метод шифрования как в инструкции, сейчас другой. Но если хоть чуточку поднапречься, то даже тот, кто далек от этого разберется.
 

Novicki

Новичок

Novicki

Новичок
Регистрация
20 Мар 2020
Сообщения
2
Реакции
0
Репутация
0
Я когда регался был метод шифрования как в инструкции, сейчас другой. Но если хоть чуточку поднапречься, то даже тот, кто далек от этого разберется.
Ну там указано как метод шиифрование, просто загуглил и все
 
Сверху