PDA

Просмотр полной версии : Simple BOF: Вредный пингвин (writeup)


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

https://forum.antichat.xyz/attachments/29106090/img_27e31e1f0f.png

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

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

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

https://forum.antichat.xyz/attachments/29106090/img_cdaef2c1c5.png

PWNED

gocha
21.08.2023, 18:02
Приветсвую, все разобрано классно, только я не понял как определить что перед ключевым символом "y" 31 байт?

yetiraki
21.08.2023, 19:14
gocha сказал(а):

Приветсвую, все разобрано классно, только я не понял как определить что перед ключевым символом "y" 31 байт?


Привет.
В одном из ответов на свой райтап по другой задаче я писал, что по разному можно высчитывать нагрузку.
В данном случае надо вычесть из 0x20 0x1, что в результате дает 0x1F (31 в десятичной). Можно использовать виндовый калькулятор в режиме "программист" переключившись в 16ричную систему.
Можно вручную подбирать, пока в отладке не увидим как переписался стек.

https://forum.antichat.xyz/attachments/29106907/img_d1177284e9.png