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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Всем доброго времени суток! Набираем обороты... Сегодня мы будем 'пывнить" stack3.exe (ссылочка на файл, как обычно, на Github).

Stack3

Закидываем в Ghidra:

Анализируем...

Получаем декомпилированный код. Нас встречает все тот же массив из 64-х байт. Небезопасная функция gets(). Функция gets() считывает строку символов из стандартного потока ввода (stdin) и помещает ее в массив local_54. Также в коде есть указатель (local_14) на функцию и проверка (if), не является ли local_14 - NULL. Т.е. если мы "перезапишем" local_14, то попадем в ветку THEN и получим сообщение "calling function pointer, jumping to...", а также перейдем по адресу, которым мы перезапишем local_14:

Вроде бы все понятно, но есть ощущение, что чего-то нехватает? :)

Обращаем внимание на функцию "win":

Функция "win" просто выводит сообщение "code flow successfully changed":

Фактически, нам нужно использовать BOF, чтобы изменить значение указателя функции, сделав так, чтобы он указывал на адрес функции "win" (это и будет успешным прохождением таска "Stack3").

Переходим к "динамике". Делаем поиск по strings:

Кликаем по строчке с "code flow successfully changed" и смотрим адрес инструкции "push ebp" (З.Ы. Это начало функции "win". Кому интересно, почему так, читайте про пролог/эпилог процедуры):

Супер! Адрес есть. Давайте посмотрим на наш "пейлоад", который мы подадим на стандартный поток ввода (stdin):

64 байта "A" + адрес инструкции "push ebp" в LE
64 байта "A" + адрес инструкции "push ebp" в LE

Эксплуатируем. Указатель изменён и мы попали в функцию "win" (о чем говорит сообщение "code flow successfully changed"):

Всем спасибо за внимание! Если понравилась статья, буду рад "пальцу вверх"!

Источник: https://habr.com/ru/articles/831528/


Интересные статьи

Интересные статьи

Эксперты Positive Technologies обнаружили две уязвимости в контроллерах Freelance AC 900F и AC 700F производства компании ABB. Эти устройства применяются в металлургии, химической промышленн...
Специалисты «Лаборатории Касперского» опубликовали результаты нового исследования по поиску уязвимостей. Его предметом стала смарт-игрушка, способная подключаться к интернету и совершать видеозвонки. ...
99% того, что я делаю — использование ошибок, которых можно избежать. Сегодня я расскажу про IDOR — одну из самых распространенных и простых в использовании веб-уязвимостей. С ее помощью можно посмотр...
В прошлых публикациях (первая и вторая) рассмотрели основные понятия про качество, четырехуровневый процесса управления и обеспечения качества, увидели что требования и качества тесно связаны друг с ...
Flutter наделён большими возможностями для простой кастомизации пользовательского интерфейса.Сегодня мы пастараемся охватить самые главные вещи, которые могут вам пригоди...