
В данной статье решим 25-е задание с сайта .
Informacion organizativNë veçanti për ata që dëshirojnë të mësojnë diçka të re dhe të zhvillohen në cilindo nga fushat e sigurisë informacionit dhe kompjuterike, unë do të shkruaj dhe tregoj për kategoritë e mëposhtme:
- PWN;
- kriptografia (Crypto);
- teknologjitë rrjetore (Network);
- riversimi (Reverse Engineering);
- steganografia (Stegano);
- kërkimi dhe shfrytëzimi i dobësive WEB.
Përveç kësaj, do të ndaj përvojën time në kriminalistikën informatike, analizën e malware dhe firmware, sulmet në rrjetet wireless dhe rrjetet lokale, kryerjen e testeve të penetrimit dhe shkruarjen e eksploiteve.
Që të mund të mësoni për artikuj të rinj, softuer dhe informacion tjetër, kam krijuar dhe në fushën e SiIK. Gjithashtu, kërkesat tuaja personale, pyetje, propozime dhe rekomandime .
Të gjitha informacionet janë paraqitur ekskluzivisht për qëllime edukative. Autori i këtij dokumenti nuk merr asnjë përgjegjësi për ndonjë dëm të shkaktuar dikujt si pasojë e përdorimit të njohurive dhe metodave që rezultojnë nga studimi i këtij dokumenti.
Решение задания otp
Продолжаем второй раздел. Скажу сразу, что сложнее первого, но в этот раз на предоставляют исходный код программы. Не забываем про обсуждение здесь(https://t.me/RalfHackerPublicChat) и здесь (https://t.me/RalfHackerChannel). Начнем.
Нажимаем на иконку с подписью otp. Нам дают адрес и порт для подключения.

Подключаемся и осматриваемся на сервере.

Флаг, который мы не можем прочитать, программа и ее исходный код. Давайте посмотрим исходник.

Раберем его. Программа принимает в качестве аргумента пароль.

Далее в переменную otp сохраняется рандомные 16 байт.

В папке tmp создается файл со случайным именем (первые 8 байт otp) и в него записывается рандомные 8 байт (вторые 8 байт otp).

Зачем-то и созданного файла считывается значение и сравнивается с введенным паролем.

Здесь и присутствует уязвимость. Она заключается в промежуточном сохранении генерируемого числа в файл. Мы можем ограничить размер файла, к примеру до 0, тогда при записи и считывании с паролем будет сравниваться 0. Сделать это можно так.
# ulimit -f 0 ![]()
Теперь запустим программу.
![]()
Получаем ошибку. Не беда, ведб ее можно обработать с помощью того же питона.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" ![]()
Получаем флаг и свои легкие 100 очков. И мы продолжаем: в следующей статье затронем Web. Вы можете присоединиться к нам в .
Burimi: habr.com
