Сбросить переменную $ PATH на значение Kali по умолчанию

Вы правы, что мы должны программировать сокеты для связи с сервером. Раньше я пробовал Python, но в итоге вместо этого использовал простые старые скрипты Bash.

Для начала вы можете взглянуть на то, как инициализировать сокет с помощью Bash, следуя руководству здесь: http://hacktux.com/bash/socket

Шаг 1: Инициализировать сокет

Вы можете использовать Bash exec и перенаправление unix для создания сокета на псевдопуть. Синтаксис пути: / dev / / /

exec 3 / dev / tcp / cs2107.spro.ink / 9000;

Шаг 2. Чтение выходных данных сервера

Нам нужно прочитать закодированные байты из вывода сервера. Это можно сделать с помощью команды cat , но это не сработает так, как вы ожидали. Это связано с тем, что сервер ожидает ввода от клиента и нет символа EOF. (Я предполагаю, что это связано с потоковой передачей данных) Чтобы предотвратить это, вам нужно избегать чтения за пределами вывода сервера, то есть останавливаться на строке 7.

head -7

Шаг 3: Grepping & преобразование данных

egrep -o '^ [0-9a-f] {20}' | xxd -r -p | md5sum

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

Передача шестнадцатеричного дампа по конвейеру xxd -r -p преобразует шестнадцатеричный дамп в двоичный и выведет их как обычный текст. Затем md5sum выполнит грязную работу и вычислит за нас ответ.

Шаг 4: Обратная запись на сервер

awk '{print $ 1}'> & 3;

В моем случае md5sum выводит ответ и дополнительный символ в конце строки, поэтому я использую awk для печати первого столбца и обратной записи на сервер.

Шаг 5: повторить еще 499 раз

Аналогично шагам 2-4, за исключением того, что нам нужно изменить шаг 2, потому что сервер будет выводить только «правильно» в последующем ответе вместо длинного вводного текста. Измените заголовок , чтобы он читался в 2 строки. Нам также нужно сделать это еще 499 раз:

for i in {1..499}
do
    head -2 <&3 | egrep -o '^[0-9a-f]{20}' | xxd -r -p | md5sum | awk '{print $1}' >&3;
done

Шаг 5: Захватить флаг

После того, как все ответы 500 были завершены, флаг может быть получен путем захвата сокета.

cat

P / S Я брал тот же модуль и выполнял то же задание, что и OP, так что, думаю, я поделюсь своим ответом здесь. Просто случайно узнал об этом посте после завершения модуля.

1
15.12.2018, 14:39
0 ответов

Теги

Похожие вопросы