Pourquoi je ne reçois “Ne peut pas trouver de limite actuelle de la fonction” quand j'ai remplacer le ret adresse vulnérables programme?

Je veux exploiter une pile en fonction de dépassement de mémoire tampon pour les fins de l'enseignement.

Il est typiquement une fonction appelée avec un paramètre de la principale, qui est donnée en entrée à partir du programme d'un tampon local où le paramètre est enregistré. Compte tenu de l'entrée de telle sorte que nops+shellcode+address_shellcode, je vais l'exploiter.

Après le débogage à l'aide de gdb, j'ai trouvé l'adresse de la coquille de code que ça va passer comme paramètre, et juste après la strcpy j'examine la pile et de la $ebp+8 qui est l'adresse de retour a réussi remplacé par l'adresse de la coquille de code. Donc, j'ai ce que je veux. Mais quand j'ai pris avant l'exécution j'ai eu:

->shellcode_address in ?? ()

et puis

Cannot find bound of current function

L'adresse de retour a la valeur que je veux. Toutes les idées de ce qui se passe?

Aussi, quand j'execute, j'ai eu une erreur de segmentation et j'ai compiler avec -g -fno-stack-protector. Pourquoi?

Jetez un oeil à stackoverflow.com/questions/2420813/..., il explique que "Impossible de trouver les limites de la fonction en cours" signifie simplement gdb n'ont pas les informations de débogage pour le pointeur d'instruction en cours, et qu'il est malheureux de cette situation. Mais vous avez probablement un autre problème en plus de cela.
Comment pourrais-je ajouter les informations de débogage pour l'instruction nop, qui est suivie par d'autres opr, et à la fin avec le shellcode?
Je ne sais pas exactement comment gdb fonctionne, mais je pense que vous ne pouvez pas. gdb recherche l'adresse du pointeur d'instruction dans sa bonne vieille table de debug info, qu'il a chargé de la exécutables, il sait à ce sujet. Mais le pointeur d'instruction est sur la pile, il n'est pas couvert par aucune des informations de débogage. Peut-être en théorie, vous pourriez synthétiser un NAIN de données autour de la pile actuel de l'adresse et de la charge que dans le gdb, mais je n'ai aucune idée de comment.
Je ne le pense pas. Il d'une simple pile de dépassement de les exploiter. Il me manque qqch d'autre

OriginalL'auteur curious | 2012-01-05