我試圖執行緩衝區溢出以將函數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