C
caffeine
Guest
Hey Zusammen,
Wie der Titel schon sagt geht es mir um das Auslesen des Stacks auf Basis folgenden C-Codes:
!_vuln.c
Im Code werden keine Format-Strings verwendet, was wiederum in Bezug auf die Sicherheit kritisch ist.Man kann theoretisch Teile des Staks auslesen und sogar beschreiben.Das Lesen stell ich mir so vor:
Lesen: ./vuln %x.%x.%x.%x.%s liest das erste Element auf dem Stack
Hier -> (null) In dem Zusammenhang stellt sich mir die Frage, wieso ich folgende Ausgabe bekomme:
Soweit ich weiß liegen doch bis dato nur der EBP und die Rücksprungadresse auf dem Stack also was sind das für Werte ? EBP+0 und EBP+4 sind belegt und alles echt größer EBP+4 sollte frei sein.
Schreiben: Funktioniert mit %n,
Aber wie genau, dass ist mir noch nicht klar, mein Vorschlag wäre:
./vuln %x.%x.%x.%x.5%n , um 5 in den Stack zu schreiben (?)
Bin über jede Hilfe dankbar und schönen Abend noch,
tanye
Wie der Titel schon sagt geht es mir um das Auslesen des Stacks auf Basis folgenden C-Codes:
!_vuln.c
Code:
#include <stdio.h>
int main(int argc, char* argv[])
{
printf(argv[1]);
/* code me */
}
Im Code werden keine Format-Strings verwendet, was wiederum in Bezug auf die Sicherheit kritisch ist.Man kann theoretisch Teile des Staks auslesen und sogar beschreiben.Das Lesen stell ich mir so vor:
Lesen: ./vuln %x.%x.%x.%x.%s liest das erste Element auf dem Stack
Hier -> (null) In dem Zusammenhang stellt sich mir die Frage, wieso ich folgende Ausgabe bekomme:
68be1ba0.68be1bb8.68be1c00.5e5dda.(null)
Soweit ich weiß liegen doch bis dato nur der EBP und die Rücksprungadresse auf dem Stack also was sind das für Werte ? EBP+0 und EBP+4 sind belegt und alles echt größer EBP+4 sollte frei sein.
Schreiben: Funktioniert mit %n,
Aber wie genau, dass ist mir noch nicht klar, mein Vorschlag wäre:
./vuln %x.%x.%x.%x.5%n , um 5 in den Stack zu schreiben (?)
Bin über jede Hilfe dankbar und schönen Abend noch,
tanye