Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux
У цій статті вирішимо 25-те завдання із сайту pwnable.kr.

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

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

До того ж я поділюся своїм досвідом у комп'ютерній криміналістиці, аналізі малварі та прошивок, атаках на бездротові мережі та локальні обчислювальні мережі, проведенні пентестів та написанні експлоїтів.

Щоб ви могли дізнаватися про нові статті, програмне забезпечення та іншу інформацію, я створив канал у Telegram и групу для обговорення будь-яких питань в області ІКБ. Також ваші особисті прохання, питання, пропозиції та рекомендації розгляну особисто та відповім усім.

Вся інформація представлена ​​виключно з освітньою метою. Автор цього документа не несе жодної відповідальності за будь-які збитки, заподіяні будь-кому в результаті використання знань і методів, отриманих в результаті вивчення цього документа.

Рішення завдання otp

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

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

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Підключаємось та оглядаємося на сервері.

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Прапор, який ми не можемо прочитати, програма та її вихідний код. Давайте подивимося вихідник.

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Робимо його. Програма приймає як аргумент пароль.

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Далі змінну otp зберігається рандомні 16 байт.

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

У папці tmp створюється файл із випадковим ім'ям (перші 8 байт otp) і записується рандомні 8 байт (другі 8 байт otp).

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Для чогось і створеного файлу зчитується значення і порівнюється з введеним паролем.

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Тут і є вразливість. Вона полягає в проміжному збереженні генерованого числа файлу. Ми можемо обмежити розмір файлу, наприклад до 0, тоді за запису і зчитуванні з паролем порівнюватиметься 0. Зробити це можна так.

# ulimit -f 0

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

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

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Отримуємо помилку. Не біда, її можна обробити за допомогою того ж пітона.

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

Рішення завдання з pwnable.kr 25 - otp. Обмеження рамера файлу в Linux

Отримуємо прапор та свої легкі 100 очок. І ми продовжуємо: у наступній статті торкнемося Web. Ви можете приєднатися до нас у Telegram.

Джерело: habr.com

Додати коментар або відгук