• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

CTF Writeup: "[fd]" (pwnable.kr)

Don Reverso

One Level
05.07.2024
9
25
BIT
206
  • Название: [fd]​

  • Категория: pwn​

  • Платформа:


При подключении через ssh нас встречают несколько интересующих нас файлов:

1720186176647.png


Очевидно, из доступного нам остаётся только fd - скомпилированный fd.c - только лишь с его помощью мы и можем прочитать flag:

1720186211589.png


Смотрим сурсы fd.c:

1720186234192.png


Единственный вызов read обезопасили ограничением в 32 символа, поэтому переполнить ничего не получится. А вот уже из интересного: программе нужен дополнительный аргумент, какое-то число. Это число переводится в int через atoi(), от него отнимается 0x1234, а затем, оно используется как файловый дескриптор, из которого хотят прочитать "LETMEWIN\n". Всё, что от нас зависит - это как раз-таки тот самый дескриптор.

Но что забавно: статья на гласит, что по умолчанию, 2 в качестве дескриптора указывает на stderr, 1 - на stdout, а 0 - на stdin. Поэтому, если в качестве fd в read попадёт 0, то нам лишь останется ввести с клавиатуры то, что нас и просят. Единственное - нам нужно указать не просто 0, а 0 + 0x1234 = 4660, чтобы подать корректное число:

1720186271496.png


Таск решён, удачного пывына!

made 4 @rev_with_da_boys
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!