Всем привет! Я сделал подробный разбор своего решения, потом посмотрел официальный WriteUp и понял, что намудрил.
Однако, считаю полученное решение интересным, т.к. оно приводит к исполнению произвольного кода, в отличие от официального.
Подробный видеоразбор:
Коротко о условии и решении:
Условие:
Однако, считаю полученное решение интересным, т.к. оно приводит к исполнению произвольного кода, в отличие от официального.
Подробный видеоразбор:
Коротко о условии и решении:
Условие:
- Бинарь собран без PIE
- Присутствует канарейка
- Есть функция cosmic ray, интвертирующая один бит в памяти процесса по произвольному переданному адресу
- Есть пользовательский ввод, способный перетереть адрес возврата
- Инвертировать бит в JZ так, чтобы получилось JNZ и обойти проверку канарейки
- Переполнить стек для вызова нужной функции
- Изменить смещение для jz , чтобы зациклить вызов cosmic ray
- Модифицировать call puts на call win
Последнее редактирование: