利用缓冲区溢出来执行函数

来源:互联网 发布:动画大师for mac 编辑:程序博客网 时间:2024/05/17 07:33

首先用代码

#include "stdafx.h"


void overFlow()
{
while (1)
{
printf( "over flow!\n");
}
getchar();
}


int main()
{
int a[3] = { 0 };

return 0;
}

用VS查看反汇编代码


a[2]对应的地址为EBP-0xC

学过汇编我们知道,函数的返回地址保存在EBP+4中,因为a[2]为EBP-0xC,int占4个字节,所以a[6]能到达EBP+4处

修改代码后如图


执行结果如下


所以修改函数的反回地址能使程序执行我们想要执行的函数

1 0