主要用的就是利用 leave;ret; 这样的 gadgets
假设,我们有一个程序,存在栈溢出漏洞,我们把内容覆盖成了下面这样子
当然此时 bss 段或者 data 段还没有内容,待会会通过 read 函数输入:
而实际上在程序调用完成 call 返回的时候
就会有这样的指令
mov esp,ebp
pop ebp
ret
当我们挨个去执行的时候会出现这样的情况
首先是 mov esp,ebp 执行完以后变成了这个样子:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)