
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
|
|
|