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:
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.
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
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, 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!
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