Buffer Overflows

Hi at all..

Versuche mich derzeit in den Sicherheitsaspekten der Programmierung.
Wollt mir da mal etwas Wissen in BOs aneignen und benutzte dazu folgendes Tutorial: Klick (pdf)
An sich ist das schön kurz und gut erklärt, jedoch tritt bei mir da noch eine frage auf..:

Wo es um das Ausnutzen geht (Seite 4), heisst es, man wolle den Programmfluss in eine ungenutze Funktion umleiten namens secret. Vorarbeit leistet da objdump:
Code:
notebook@feisty:~/src$ objdump -t bo | grep secret
08048434 g     F .text  0000001e              secret
Ok, wenn man den Namen dieser Funktion nicht kennt, bekommt man diese ja auch mit objdump -t bo heraus, also soweit sogut..

Ok, weiter geht es mit der Umleitung des Programmflusses..Mittels gdb herausgefundenen Rücksprungadresse (im Beispiel 0x8048464) sollte dann mit der von objdump (bei mir 0804834g) überschrieben werden. getan wird dies mittels Shellcode bei der Eingabe.
Code:
notebook@feisty:~/src$ ./bo `python -c 'print "\xf4\x83\x04\x08"*68'`
Geheim!
So, der Programmfluss wurde also auf die Funktion secret mit dem Inhalt printf("Geheim!\n) umgeleitet. Schön und gut.
Nun endlich die Frage:
--> Wie genau kommt man da auf den Shellcode "\xf4\[...]" und die "*68"?

Das sollten erstmal meine Unklarheiten gewesen sein. Für weiteres Material über Buffer Overruns u.Ä. (en oder de) wäre auch auch sehr dankbar.


Beste Grüße,
Euer Gast :)
 
Ich nehme an, dass *68 eine hintereineinanderreihung des Strings sein wird - damit erspart man sich die Tipparbeit ;)

Shellcode:
\xf4\x83\x04\x08
=0x080483f4

ist wohl seine Rücksprungadresse:
quelle: pdf
objdump -t bo| grep secret
080483f4 g F .text 0000001e secret
Da auf x86 CPU LittleEndian gilt, werden die Bytes "verkehrt" herum abgelegt.
 
Zurück
Oben