Как стать автором
Обновить

Решение задания с pwnable.kr 25 — otp. Ограничение размера файла в Linux

Время на прочтение2 мин
Количество просмотров3.5K
image

В данной статье решим 25-е задание с сайта pwnable.kr.

Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

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

Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Решение задания otp


Продолжаем второй раздел. Скажу сразу, что сложнее первого, но в этот раз нам предоставляют исходный код программы. Не забываем про обсуждение здесь(https://t.me/RalfHackerPublicChat) и здесь (https://t.me/RalfHackerChannel). Начнем.

Нажимаем на иконку с подписью otp. Нам дают адрес и порт для подключения.

image

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

image

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

image

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

image

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

image

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

image

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

image

Здесь и присутствует уязвимость. Она заключается в промежуточном сохранении генерируемого числа в файл. Мы можем ограничить размер файла, к примеру до 0, тогда при записи и считывании с паролем будет сравниваться 0. Сделать это можно так.

# ulimit -f 0

image

Теперь запустим программу.

image

Получаем ошибку. Не беда, ведь ее можно обработать с помощью того же питона.

python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" 

image

Получаем флаг и свои легкие 100 очков. И мы продолжаем: в следующей статье затронем Web. Вы можете присоединиться к нам в Telegram.
Теги:
Хабы:
+15
Комментарии1

Публикации

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн