[HTB] Quick R

0awawa0
3 min readSep 6, 2020

--

В задании получаем адрес сервера. Подключаемся к нему и видим следующую картину:

Декодируем QR и получаем такую строчку:

23.23684328275202 + 36.95195957854773 / 58.913049311348516 =

То есть надо ещё уравнение решить. Но проблема в том, что на всё это есть только 3 секунды:

Значит надо писать скрипт. Тут возникает пара проблем. Во-первых, с сервера мы не получаем картинку. Мы получаем байты, которые после декодирования дают нам картинку. А для декодирования нужна именно картинка. Соответственно, надо создать изображение QR на основе этих байтов, потом декодировать, а потом решить задачку.

Ну давайте решать всё постепенно. Сначала подключимся к серверу и получим сами байты изображения:

Дальше попробуем определить какие байты отвечают за красный цвет и какие за белый. Выведем полученные данные на экран и увидим огромное полотно вот таких байт:

Ничего не понятно. Давайте разделим строки и посмотрим на какой строке есть и красные и белые знаки:

Так, теперь посмотрим на 6 строку в байтах:

Ну тут уже можно догадаться, что за белый цвет отвечает последовательность \x1b[0m\x1b[7m а за красный — \x1b[0m\x1b]41m.

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

Значит теперь определим красный и белый цвета, дальше разобьем строки по пробелам и оставим в строках только последовательности для белого и красного цветов:

Теперь создадим чёрно-белое изображение и заполним его данными:

Осталось только декодировать QR, решить уравнение и отправить ответ:

Полный скрипт:

--

--