Название испытания: Чуп!

Описание задачи:

Сначала давайте попробуем SSH подключиться к IP-адресу, на котором работает веб-сайт https://cnick.tk/,

  • nslookup cnick.tk даст вам

  • Теперь, прежде чем пытаться подключиться к IP, нам потребуются имя пользователя и пароль, после некоторой проверки я понял, что имя пользователя было naryal2580, которое было обычным именем пользователя, используемым организатором CTF, а пароль был «ник {« s0ci4l_3ng1n3eRd_m3h !! » } '
    Как я получил пароль?
    Чтобы получить пароль, мы должны выполнить задание «Есть немного смелости !!» Где вам нужно провести атаку Vishing на службу поддержки клиентов.

Затем давайте попробуем ssh подключиться с указанным выше именем пользователя и паролем,

Как вы можете видеть, мы получаем запрос base64, теперь давайте расшифруем base64, мы получим

Вставляем base64, получаем

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

Теперь давайте откроем наш любимый редактор. Я использую python IDLE сейчас.

Итак, модуль, который мы здесь используем, - это Pexpect.

Что такое Pexpect?
Pexpect - это чистый модуль Python, который делает Python лучшим инструментом для управления и автоматизации других программ. Когда вывод соответствует заданному шаблону, Pexpect может реагировать так, как если бы ответы печатал человек.

для получения дополнительной информации посетите:



Кодирование:

Код, который я использовал для решения задачи, был ...

import pexpect # импорт модулей
import base64 # импорт модулей
из времени import sleep # импорт модулей

# Этот класс используется для создания дочернего приложения и управления им
child = pexpect.spawn (‘ssh [email protected]’)

# Здесь ожидается слово пароль, как показано на рисунке,

child.expect (‘пароль:‘)

# сюда отправляется пароль

child.sendline (‘nick {« s0ci4l_3ng1n3eRd_m3h !! »}’)

# здесь ожидается слово последний логин и читается строка после него,

child.expect (‘Последний вход:’)
child.readline ()

i=1

# теперь мы запускаем цикл, в котором мы читаем строку и декодируем base64
while (1):
encoded = child.readline (). decode (). rstrip ('\ r \ n')
print (i, «закодировано:», закодировано)

# Когда мы запустили скрипт и base64 закончил, в конце выходит хеш MD5, для которого мы должны отправить строку, поэтому мы остановили цикл, если нашли хеш md5

если закодировано == «bed128365216c019988915ed3add75fb»:
break
decoded = base64.b64decode (закодировано)
child.sendline (декодировано)
print («Отправлено:«, child.readline ( ))
сна (0.2)
i + = 1
print (child.before)
child.interact ()

Код, который можно скопировать и вставить :)

import pexpect
import base64
from time import sleep
child = pexpect.spawn ('ssh [email protected]')
child.expect ('password:')
child.sendline ('nick {«s0ci4l_3ng1n3eRd_m3h !!»}')
child.expect ('Последний вход:')
child.readline ()
i = 1
while (1):
encoded = child.readline (). decode (). rstrip ('\ r \ n')
print (i, «закодировано:«, закодировано)
если закодировано == «bed128365216c019988915ed3add75fb»:
break
decoded = base64.b64decode (закодировано)
child.sendline (декодировано)
print («Отправлено:«, child.readline ( ))
сна (0.2)
i + = 1
print (child.before)
child.interact ()

Теперь после запуска скрипта получаем

Теперь скопируем хеш

кровать128365216c019988915ed3add75fb

Теперь он декодируется как

Бум, мы получили passw0rd

теперь, когда мы вводим это в терминал,

Вот наш флаг :)