我试图执行缓冲区溢出以将函数A中的调用更改为函数B.这是否可行?我知道我必须弄清楚我必须输入多少个字节,直到控制返回指针为止,并找出函数B的地址。是否可以改变它,以便在“x == 10”后注入函数B的地址而不是函数A? 编辑: 是否有可能在调用fillbuff之后,而不是返回main,我们将它发送给函数B? 任何提示表示赞赏。缓冲区溢出利用更改函数调用
int fillBuff(int x){
char buff[15];
puts("Enter your name");
gets(buff);
return(x + 5);
}
void functionA(){
puts("I dont want to be here");
exit(0);
}
void functionB(){
printf("I made it!");
exit(0);
}
int main(){
int x;
x = fillbuff(5);
if (x == 10){
functionA();
}
}
顺便说一句,如果声明时没有参数,你应该把void放在函数的参数大括号中。将它们留空并不意味着没有参数。 –
看到这个答案:http://stackoverflow.com/a/27214515/3846218 – AlexPogue