TCP/IP Wie "mithören"?
-
Suomynona schrieb:
Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>
copy&paste hacker
-
ProgChild schrieb:
Suomynona schrieb:
Auch wie man es bewerkstelligt bei einem Buffer Overflow es hinzubekommen dass genau an der Stelle wo der Zeiger auf einen falschen Bereich zeigt, der eigene Code "liegt", verstehe ich nicht.
Was ist daran nicht zu verstehen?
vllt. liegt sein IQ nicht bei 210 so wie deiner, so dass er unter Umständen das ein oder andere nicht versteht bzw. die Umsetzung/Ausführung nicht korrekt hinkriegt.
-
Fake oder Echt schrieb:
vllt. liegt sein IQ nicht bei 210 so wie deiner, so dass er unter Umständen das ein oder andere nicht versteht bzw. die Umsetzung/Ausführung nicht korrekt hinkriegt.
Vielleicht sollte er ja sagen, was er nicht versteht. Dann könnte man ihm helfen. Jetzt hier anfangen zu raten, was er nicht versteht ist ein bisschen viel Arbeit.
-
Nun, ich weiß wie ich einen Buffer Overflow hinbekomme und wie ich sehen kann wo im Speicher dieser passiert. Aber wie bekomme ich es nun konkret hin das mein eigener Code dort liegt und dieser Ausgeführt wird? Wie bewerkstellige ich das?
-
Genau das ist ja die Kunst davon.
Aber normalerweise geht das so, dass du dort, wo du das Loch hast einen string einschleust, der zuerst mal einen noop (no operation) sleed hast um den Code im speicher zu überschreiben und dann muss dein Code folgen, den du ausführen möchtest. Und da gibt es auch noch zu beachten, dass du keine Null Terminierung im Code hast, da dort ja bekanntlicherweise ein String beendet wird.
Das Problem ist hald, dass der Ort, wo dein Code ausgeführt werden soll (fast) immer an einer anderen Stelle ist. Und wenn es nicht genau stimmt, bekommst du nichts anderes als einen langweiligen Absturz des Programms.
-
Suomynona schrieb:
Nun, ich weiß wie ich einen Buffer Overflow hinbekomme und wie ich sehen kann wo im Speicher dieser passiert. Aber wie bekomme ich es nun konkret hin das mein eigener Code dort liegt und dieser Ausgeführt wird? Wie bewerkstellige ich das?
Wenn du einen Buffer-Overflow hast. Dann kannst du meistens so lange weiterschreiben, bis du an der Rücksprungaddresse der aktuellen Funktion angekommen bist. Wenn du also diese durch einen anderen Wert ersetzt, kannst du es erreichen, dass das Programm zu der Stelle springt, an der du vorher deinen Code plaziert (den musst du halt vorher mitsenden) hast und diesen ausführt.
-
Windows Vista hat Mechanismen um das Überschreiben der Rücksprungadr. zu erkennen.
-
Suomynona schrieb:
Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>
Es gibt da mittlerweile ein Gesetz, daß die Verbreitung von solchen Programmen explizit unter Strafe stellt.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
~john schrieb:
Suomynona schrieb:
Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>
Es gibt da mittlerweile ein Gesetz, daß die Verbreitung von solchen Programmen explizit unter Strafe stellt.
wo steht das ?
buffer overflow hack: http://www.linuxjournal.com/article/2902