Поиск уязвимости методом фаззинга и разработка шеллкода для её эксплуатации
Некорректное завершение работы программы в ходе фаззинга позволяет сделать предположение о наличии уязвимости.
В этой статье мы:
продемонстрируем, как фаззить обработчик JSON-запросов;
используя фаззинг, найдём уязвимость переполнения буфера;
напишем шеллкод на Ассемблере для эксплуатации найденной уязвимости.
Разбирать будем на примере исходных данных задания прошлого NeoQUEST. Известно, что 64-хбитный Linux-сервер обрабатывает запросы в формате JSON, которые заканчиваются нуль-терминатором (символом с кодом 0). Для получения ключа требуется отправить запрос с верным паролем, при этом доступа к исходным кодам и к бинарнику серверного процесса нет, даны только IP-адрес и порт. В легенде к заданию также было указано, что MD5-хеш правильного пароля содержится где-то в памяти процесса после следующих 5 символов: «hash:». А для того, чтобы вытащить пароль из памяти процесса, необходима возможность удалённого исполнения кода.
Читать дальше →
Источник: Хабрахабр
Похожие новости
- Vladimir: TSMC может понести убытки из-за возможных пошлин США на тайваньские чипы
- VLESS+Reality и Multi-hop: Архитектура VPN-цепочки для нового поколения блокировок
- Laravel: электронная подпись на сервере с PDF визуализацией
- Perplexity запускает Comet — собственный AI-браузер, бросающий вызов Google
- OSINT на боевом рубеже: новый фронт военной разведки
- Блеск и ад p2p-торговли на Bybit
- Руководство по pgcrypto — шифрование внутри PostgreSQL. Часть 2
- Как я подружил Yandex Cloud и Gemini API без миграции на зарубежные сервера
- Деньги ушли в Telegram, а риэлтор — в тень: как россиян обманывают при покупке недвижимости в Таиланде
- Крепость под наблюдением: ставим Maltrail и ловим «шпионов» (Часть 2)