Ich bin neu in der Systemsicherheit, und ich versuche, ein einfaches Return-to-Libc-Exploit zu implementieren. Mit GCC -fno-stack-protector
gesetzt, jetzt weiß ich, wie man die Rückkehradresse durch die Verwendung eines Pufferüberlauffehlers zerschlägt. Nun möchte ich den Kontrollfluss des Zielprogramms an die system()
Funktion von C richten, indem ich eine korrekte Rücksprungadresse einer Funktion mit der Adresse system()
überschreibe (Ich kompiliere das Programm mit der Option -static
so, dass alle Standardfunktionen von C in der ausführbarer Code). Zum Beispiel ist das Zielprogramm wie:Wo ist das Argument der stdlib.h-Funktion system() in der x86_64-Assembly labguage?
int main(int argc, char *argv[]) {
char buffer[8];
gets(buffer);
return 0;
}
kann ich main()
‚s Absenderadresse mit der Adresse des system()
überschreiben, die ich von GDB disassemble Funktion finden. Ich würde gerne "/ bin/sh" als Argument von system()
angeben, aber ich weiß nicht, wo das Argument system()
Funktion auf dem Adressraum ist. Könnte mir jemand helfen, herauszufinden, wo ich das Argument finden kann?