buffer overflowson the stack
Attacker is supplying input to buf… so buf gets a very carefully constructed string containing assembly code,
and overwriting func 2’s address with buf’s address.
When func3 returns, it will branch to buf instead of func2.