主要用的就是利用 leave;ret; 这样的 gadgets
假设,我们有一个程序,存在栈溢出漏洞,我们把内容覆盖成了下面这样子
当然此时 bss 段或者 data 段还没有内容,待会会通过 read 函数输入:
而实际上在程序调用完成 call 返回的时候
就会有这样的指令
mov esp,ebp
pop ebp
ret
当我们挨个去执行的时候会出现这样的情况
首先是 mov esp,ebp 执行完以后变成了这个样子:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课