ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Writeup: "[fd]" (pwnable.kr) (https://forum.antichat.xyz/showthread.php?t=1643630)

Don Reverso 05.07.2024 17:33

  • Название: [fd]
  • Категория: pwn
  • Платформа: pwnable.kr
При подключении через sshнас встречают несколько интересующих нас файлов:

https://forum.antichat.xyz/attachmen...0186176647.png

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

https://forum.antichat.xyz/attachmen...0186211589.png

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

https://forum.antichat.xyz/attachmen...0186234192.png

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

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

https://forum.antichat.xyz/attachmen...0186271496.png

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

made 4@rev_with_da_boys


Время: 13:00