Показать сообщение отдельно

  #10  
Старый 16.05.2023, 09:05
Станислав Кац
Новичок
Регистрация: 15.05.2023
Сообщений: 0
С нами: 1580240

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

При выполнении system() создаётся новый стековый фрейм. Когда он создаётся, вместо, то там, где раньше был адрес eip появляется ebp. Далее эта функция должна взять где-то аргумент - ebp+8. Так получается, что этот адрес падает туда, куда и была положена строка "/bin/sh".
В свою очередь exit() оказывается на месте ret.
В итоге функция выполняется успешно и завершается без ошибок.
Я так понял. Если где-то не прав, то прошу исправить)
Ссылка с объяснением: https://shellblade.net/files/docs/ret2libc.pdf
 
Ответить с цитированием