J'essaye d'effectuer un débordement de tampon pour changer l'appel de la fonction A à la fonction B. Est-ce que c'est possible? Je sais que je vais devoir déterminer combien d'octets je dois entrer jusqu'à ce que j'ai le contrôle sur le pointeur de retour, et comprendre l'adresse de la fonction B. Est-il possible de le modifier de sorte qu'après "x == 10" nous injectons l'adresse de la fonction B au lieu de la fonction A? Editer: Est-il possible qu'après l'appel de fillbuff, au lieu de retourner à main, nous l'envoyions à la fonction B? Tous les indices sont appréciés.buffer overflow exploit changement fonction appel
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();
}
}
vous devriez mettre void dans les paramètres accolades de fonctions si elles sont déclarées sans paramètres, soit dit en passant. Les laisser vides ne signifie pas de paramètres. –
Voir cette réponse: http://stackoverflow.com/a/27214515/3846218 – AlexPogue