Название испытания: Чуп!
Описание задачи:
Сначала давайте попробуем 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
теперь, когда мы вводим это в терминал,
Вот наш флаг :)