C|函数调用的栈帧机制与数组越界、缓冲区溢出( 四 )


5 缓冲区溢出有如下代码:
#include <cstdio>void func(){ char buff[4] = {0}; printf("some input:"); gets(buff); puts(buff);}int main(){ func(); return 0;}当运行到gets(buff)时的栈区:
如果输入"abc" , 则刚好填充buff , 其中buff[3] = '\0'
如果输入“abcdefg” , 则"efg"会填充[ebp]指向的值 。
如果输入“abcdefghijk” , 则“ijk”会填充[ebp+4]的值 , 也就是函数func()的返回地址 。
-End-

推荐阅读