Реверсинжиниринг PWN-тасков или эксплуатируем бинарные уязвимости (Часть 2 / Stack1)

от автора

Друзья всех приветствую! Продолжаем «пывнить» 🙂 Кто не прочитал первую статью — она есть ТУТ!

Перед началом оставлю пару полезных ресурсов:

ТеорияСтатьи на тему, что такое и с чем едят Buffer Overflow

ПрактикаКрутые таски на тему PWN от Codeby Games

В этой статье будем решать таск Stack1 (скачать EXEшник можно ТУТ).

Stack1

Начинаем со статического анализа, открываем stack1.exe в GHIDRA:

Вывод информации о нашем EXE-файле

Вывод информации о нашем EXE-файле

Анализируем наш бинарный файл:

Получаем декомпилированный код:

Сразу же обращаем внимание на использование небезопасной функции strcpy(), которая копирует наш переданный аргумент в 64-байтный массив (local_54). В прошлый раз мы перезаписывали переменную, а в этот раз нам нужно присвоить ей конкретное значение, а именно 0x61626364. Перезаписав переменную, наше условие сработает, и мы увидим строчку «you have correctly…».

Переходим к «динамике»! Открываем x64dbg, открываем stack1.exe и нажимаем «Изменить аргументы командной строки»:

Но что-же писать в качестве аргумента? Вспоминаем, что массив у нас на 64 байта, поэтому заполним его символами «A». Далее нам нужно дозаписать 0x61626364. Открываем ASCII-таблицу, чтобы узнать, что это за символы:

Отлично! С учетом порядка байтов наш аргумент будет выглядеть следующим образом:

64 символа "A" и "dcba"

64 символа «A» и «dcba»

Нажимаем «OK», ставим «бряк» на инструкции сравнения «cmp EAX,61626364»:

Запускаем! Заполняем массив символами «A» и успешно записываем в EAX — 61626364 (это наши символы «dcba»):

Инструкция CMP «успешно» сравнивает значение в регистре EAX с значением 61626364, и мы получаем заветное сообщение в терминале (З.Ы. CMP фактически выполняет операцию вычитания между двумя операндами для проверки равенства или неравенства этих операндов):

Profit!

Profit!

Всем спасибо за внимание! З.Ы. Ставьте лайк, если понравился райтап! Так я буду знать, что тема многим полезна, чтобы продолжать серию статей на эту тему! 🙂


ссылка на оригинал статьи https://habr.com/ru/articles/830050/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *