Rücksprungaddresse :BufferOverflow
-
Ich bin ThreadErsteller hab jetzt einen Account
Okey,
ich habe es so gemacht,
ich habe an der LEA EAX,DWORD PTR SS:[EBP-3B8] einen Breakpoint gesetzt
und danach den EAX Wert angesehen:Screenshot
(ASCII "BO" = Buffer Overflow vorher von mir gesetzt )EAX: 0022FBC0
(ich habe schon davor rausgefunden das der Wert ca. 0022FB24 sein muss)also muss ich an meinen Shellcode dieses Stück anfügen:
"\x00\x22\xfb\xc0" ?
aber was is mit dem "\x00" ?
Ich habe auch gehört das ich die Addresse andersrum eingeben soll : "\x24\xfb\x22\x00" aber beides Funktioniert nicht,kann der Server auch abstürzen wenn ich nur den saved frame pointer(sfp)
überschreibe ?[edit]
Okey mikey werd ich machen, nachdem ich weiß wie man die Rücksprungaddresse
überschreibt !
-
Ich würde sagen, den Wert 0022FBC0h muss man im buf-Array in Little-Endian angegeben:
buf[n] = COh,
buf[n+1] = FBh,
buf[n+2] = 22h,
buf[n+3] = 00h.Die Frage ist, wie groß ist bei dir n?
Ich schätze, n müsse größer als 524, ab 520 liegt ja sockWeit (wenn sockWeit ein Integer-Wert ist und ich mich nicht irre... wenn sockWeit ein struct ist, belegt er mehr Platz und das mit 524 stimmt nicht, dann kann auch sein, dass sogar 550 Byte nicht ausreichen).
Ich würde vielleicht so probieren:
Im buf-Array den Wert 0022FBC0h periodisch ab 524 speichern.
Ungefähr so:
buf[n] = COh, buf[n+1] = FBh, buf[n+2] = 22h, buf[n+3] = 00h für n aus { 524, 528, 532, 536, ..., 546 }.
Damit erwischt du hoffentlich die Rücksprungadresse...kann der Server auch abstürzen wenn ich nur den saved frame pointer(sfp)
überschreibe ?Was ist ein saved frame pointer? Meinst du EBP-Register? Wenn 550 Byte ausreichen, um die Rücksprungadresse zu überschreiben, dann ist auch der alte EBP auf dem Stack überschrieben. Weiß nicht, welche Auswirkung das dann auf das Programm hat...
Gruß,
abc.c
-
Der Shellcode kann erst in Aktion treten wenn der Server die Funktion mit der "übergelaufenen" lokalen Variable (char buf[500]) verlässt.
Setze mal einen Breakpoint im Server auf die erste Zeile nach "recv ()" (0x00401625). Gehe dann im Einzelschritt (trace-over) weiter bis zum ersten "RET".
Dort kannst Du anhand der Stackspitze sehen, um +/- wieviel Bytes der Offset der Rücksprungadresse im Shellcode ev. korrigiert werden muss.
-
Ich glaube,
ich werde mir erstmal ein paar Bücher über
ASM und Exploiting kaufen vieleicht versteh ich es dann besser
oder überhaupt diese ganzen Geschichten
Danke für eure Hilfe.
mfg KrokantKrockete

-
Als deutsches Buch für den Einstieg kannst du dir mal "Buffer Overflows und Formatstring-Schwachstellen ansehen" vom dpunkt Verlag, ist so ganz nett und bietet eine verständliche Einführung in die Thematik.
tt
-
Danke,
ich werde es mir mal ansehen!mfg KrokantKrockete

-
Hey, was ist mit dem versprochenen Tutorial???
-
@mikey:
Das Tutorial könnte ich schon machen,
allerdings ohne den Unterpunkt: Rücksprungaddresse rausfinden und überschreiben!soll ich trotzdem ein Tutorial machen nur um Shellcode zu machen ohne
den Punkt Rücksprungaddresse ?mfg KrokantKrokete.
-
Hi,
wurde mal Zeit dass du dich wieder meldest

Ja, wäre wirklich super von dir, wenn du uns ein kleines Tutorial allgemein zum Thema Exploits schreiben könntest. Natürlich kein Problem, ohne dem einen Unterpunkt. Du kannst ja einen Artikel für's Forum schreiben, weiter unten gibt's dazu ein Subforum. Viel Erfolg, und wir warten schon gespannt auf's Tutorial
-
Danke,
werde dann mal anfangen eins zu machen !
mfg...
pw. wo genau soll ich das posten ???
-
Das c++-Magazin sucht immer neue Autoren...
-
Wegen dem Tutorial:
Tut mir leid ich hab mir echt solche Mühe gegeben ein gutes Tutorial zu schreiben
aber es wurde wohl gelöscht ~~> kann ich nicht nachvollziehen!!
naja mikey wenn du dir das Tutorial dennoch ansehen willst dann guck hier(mit Rücksprungadresse
):Die Datei ist ein Zip-Archiv viel Spaß...
ps: Würde gerne Wissen warum es gelöscht wurde !!!
-
Hallo,
du meldest dich ja tatsächlich nochmal. Und ein Tutorial hast du auch geschrieben. Incl. Tools, Screenshots etc... Finde ich super von dir
Werd's mir gleich mal durchlesen.Warum dein Artikel (??) gelöscht wurde, kann ich auch nicht verstehen. Erst wurde dir ein Angebot unterbreitet, und anschließend wird der Artikel gelöscht. Immerhin kann man dabei auch einiges lernen. Trotzdem Dankeschön an dich. Melde dich bei mir per E-Mail bitte.
Edit: Ah sehe gerade, dein Artikel wurde nicht gelöscht. Du findest ihn im Forum weiter unten. Allerdings musst du dich zuvor per mail melden, damit dein Artikel eingestellt wird

-
Wo steht denn das Tutorial ?
Ich würde mir das auch mal gerne durchlesen.
-
hey dein mirror mit dem tut is down

bin heute auf diesen thread gestoßen und auch sehr interessiert daran!
würdest du es nochmal uppen oder mir eine mail schreiben ?
realcpp@online.dedanke.