Решение на задачата с 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.

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

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

Получаваме флага и нашите лесни 100 точки. И продължаваме: в следващата статия ще разгледаме Web. Можете да се присъедините към нас в Телеграм.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster