CTF Simple BOF: Вредный пингвин (writeup)

Привет.
Понравилось, решил дальше порешать.
Скачиваем файл, unzip, идем в IDA, смотрим main.
IDA.png

На скриншоте видно, что флаг лежит внутри приложухи и выводится по условию. Видно также, что от начала массива s, в который приложуха читает небезопасно ввод пользователя, до начала переменной, которая участвует в проверке для вывода флага 31 байт.


Смущает, что в char переменную кладут число, но можно посмотреть ASCII таблицу и увидеть какой символ туда кладут на самом деле (n). Значит, что бы получить флаг нам надо переписать всю область от начала массива s до v8 и в v8 положить ASCII символ 121 (y).

Раз уже pwn, то используем pwn. Как генерировать шаблон и делать ветвления в коде для локальной и удаленной приложухи я писал ранее в Экзамен?? (writeup)
Как и ранее будет только скриншот.

sploit.png


PWNED
 
  • Нравится
Реакции: ZevSS, Kevgen и GoBL1n
Приветсвую, все разобрано классно, только я не понял как определить что перед ключевым символом "y" 31 байт?
 
Приветсвую, все разобрано классно, только я не понял как определить что перед ключевым символом "y" 31 байт?
Привет.
В одном из ответов на свой райтап по другой задаче я писал, что по разному можно высчитывать нагрузку.
В данном случае надо вычесть из 0x20 0x1, что в результате дает 0x1F (31 в десятичной). Можно использовать виндовый калькулятор в режиме "программист" переключившись в 16ричную систему.
Можно вручную подбирать, пока в отладке не увидим как переписался стек.

answer1.png
 
  • Нравится
Реакции: ZevSS
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!