Pufferüberlauf - Programm beendet mit signal SIGSEGV
Ich Lerne Pufferüberlauf ausnutzen. Ich schrieb eine verwundbare Programm wie diesem:
#include <stdio.h>
#include <string.h>
main(int argc, char *argv[])
{
char buffer[80];
strcpy(buffer, argv[1]);
return 1;
}
Sehr einfaches Programm. Die Idee ist, die Rücksprungadresse zu überschreiben, die verwendet wird, um zurück zu der libc-Funktion start_main
. Alles ging gut, und ich verwendet, GDB, um zu überprüfen, dass die return-Adresse überschrieben, mit der richtigen Adresse, die Punkte auf der shellcode
im Speicher.
Aber wenn ich angenommen, um eine Muschel bekomme dieses angezeigt:
Program received signal SIGSEGV, Segmentation fault. 0xbffff178 in ?? ()
0xbffff178
ist die Rückkehr überschrieben Adresse zurück, und das tut es Punkt, um die shellcode
ich bin mir ziemlich sicher. Keine Hilfe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie wahrscheinlich ein no-execute-stack, der verbietet code nicht ausgeführt wird, die aus bestimmten Adressbereichen. Sie benötigen zum kompilieren mit
-z execstack
zu zwingen, den Stapel, um lauffähig zu sein.