明白缓冲区溢出原理了,用C语言编译器怎么找代码地址,进行覆盖呢?求具体操作,求大佬解答求大佬解答求大佬解答!
一个办法是用OD等调试工具,可以看到跳转的地址,一个办法是程序运行的时候,注入一些数据,拿到地址,和前面调试的结果结合起来,看它的偏移位置,通过计算可以找到堆栈上的返回地址。
目前常用的堆栈溢出,代码段大部分很大可能是只读段。下面是最简单的缓冲区溢出。
如下在栈上分配的内存,就会被溢出写入,用于构建攻击
void test(int cnt)
{
int buf[2];
memcpy(buf,"ttttttt");
}