HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 19.07.2024, 17:28
CyberDen
Новичок
Регистрация: 23.03.2024
Сообщений: 11
С нами: 1129151

Репутация: 0
По умолчанию

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

Часть 4
Часть 3
Часть 1

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

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

Практика - Крутые таски на тему PWN от Antichat

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

Stack1

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



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





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



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

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



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



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



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



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



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



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





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.