//*brainfuck*\\'s lernerfolgskontrolle

Status
Für weitere Antworten geschlossen.

//*Brainfuck*\\

~/Der mit dem Wolf tanzt/
Anmerkung: Nachträglich von mir eingefügt um 6.30 UHR
Das nachfolgende Code-Beispiel ist dem Buch Die mitp-Hacker-Bibel entnommen.

Habe mal mein bisschen C / C++ Wissen zusammengekratzt, auch mal nachgefragt CoolerSatz und euch einen Beispielcode geschrieben der einen Pufferüberlauf im Heap erzeugen würde:

Bitte nicht nachmachen das funktioniert.

Code:
hier stand "//*brainfuck*\\'s" code. geloescht wegen verletzung von urheberrechten.

//kith


Also diese Vorgehensweise bezeichnet man als Trespassing, oder in den Heap-Speicher eindringen.

oder so in der Art der :rolleyes: //*Brain.....

PS: Nur frag ich mich eins:

Hier kommen off-topic Themen rein, die entfernt mit Computern zu tun haben :)

Was hatt den programmieren entfernt mit Computern zu tuen ??????
 
Zuletzt bearbeitet von einem Moderator:
Dein bißchen C/C++-Wissen? Du hast allenfalls bewiesen, dass Du Syngress - Hack Proofing your Network Internet Tradecraft gelesen hast, zumindestens die Seiten 223 und 224.

Und nein, hier stumpf irgendwelche Codeschnipsel aus Büchern abzukippen ist eher nicht OnTopic.
 
Steve` schrieb:
Dein bißchen C/C++-Wissen? Du hast allenfalls bewiesen, dass Du Syngress - Hack Proofing your Network Internet Tradecraft gelesen hast, zumindestens die Seiten 223 und 224.

Und nein, hier stumpf irgendwelche Codeschnipsel aus Büchern abzukippen ist eher nicht OnTopic.

Hallo Steve,

nein hier liegst Du falsch die Lektüre auf die mich beziehe ist von Ryan Russel et al.
Syngress.

Der Name der Ausgabe Die mitp Hacker Bibel

Email Adresse: info@vmi-buch.de
Webseite: www.mitp.de
ISBN: 3-8266-0926-3
Kaufpreis damals 28,00 €


Ich behaupte nicht von mir das ich der beste programmierer bin, nur gibt dieses Beispiel wieder das C oder die Hybridsprache C++ nicht gerade die besten sind.

Auch habe ich sehr wohl Kenntnisse in dieser Sprache jedenfalls soviel das ich lieber der Sprache Ada den Vorzug gebe.

Selbstverständlich werde ich auch noch eine Erklärung des von mir genannten Beispieles nachliefern.

Man lernt übrigens nur programmieren im Studium der unterschiedlichsten Quellcodes der jeweilligen Sprache.

Insofern werte ich diese Codebeispiel nur als Anschaungsmodel um zu verstehen was genau passiert oder aber welche Denkweise dahinter steht.

mfg der :) //*Brain...
 
Zuletzt bearbeitet:
Endlich mal einer der auch von Ada begeistert ist. Die meisten sagen bei
Ada: was? kann man das essen?
 
http://de.wikipedia.org/wiki/Rootkit

Was hat nun dein C++ Code, der zu einem Heap Overflow führt, mit dem schreiben eines Rootkits zu tun,
was im Topic angekündigt wird?

Desweiteren glaube ich, ist dies hier allgemein nicht von Interesse und wenn ich wissen will, wie ein Rootkit geschrieben wird,
dann sehe ich mir den Code eines richtigen Rootkits an.

Papers zu Heap-/Bufferoverflows gibts wie Sand am Meer und beziehen sich meist weniger auf C++.

Tut mir leid, wenn ich das so sagen muss, aber dieser Thread enthält Null nützliche Information.
 
Nachfolgend die Erklärung was dieses CodeBeispiel aus dem mitp Handbuch so macht:

So in diesem Beispiel werden zwei Klassenobjekte auf dem Heap-Speicher instantiziert.Ein statischer Puffer eines Klassenobjektes wird überflutet und läuft in ein angrenzendes Klassenobjekt über.

Dieser Übergriff überschreibt den Zeiger,der auf die virtuelle Funktionstabelle (vtable-Zeiger) des zweiten Objektes verweisst.

Die Adresse wird so überschrieben, dass die vtable-Adresse nun auf unseren Puffer verweist.Dann stellen man Werte in die eigene Trojaner-Tabelle, um neue Adressen für die Klassenfunktionen zu definieren.Eine dieser Funktionen ist der Destruktor, den wird so überschreiben, dass unser neuer Destruktor aufgerufen wird, wenn ein Klassenobjekt abgebaut wird.

Auf diese Art und Weise kann man nun jeden Code ausführen, den man auch ausführen möchte.

Dazu lässt man den Destruktor auf den Angriffscode zeigen. .
Das ganze hatt aber auch einen Nachteil, bei dieser Vorgehensweise besteht er darin, dass die Objektadressen von Heap-Objekten unter Umständen NULL-Zeichen erhalten, die natürlich unsere Möglichkeiten hier einschränken.
Deshalb wird der Angrifscode an einer Stelle gespeichert, die keine NULL-Adressen benötigt, oder aber mit dem Stapel gespielt, um den EIP wieder auf unsere Adresse umzuleiten, der vohergegangene Beispiel Code aus dem Buch zeigt euch den Streich und die Methode.

Es ist doch immer wieder verblüffend auf welche genialen Einfälle gekommen wird.

Hoffe es bringt euch ein wenig weiter, jedenfalls ich habe sehr viel aus diesem Beispiel mitgenommen.

Viele Grüsse der :) //*Brain.....
 
C schlecht zu machen, indem man zeigt, was der Programmierer absichtlich damit anstellen kann, ist ein seltsamer Ansatz.

Das sind die gleichen Leute, die den root-Account oder die goto-Anweisung verteufeln. Beides ist gut, wenn man die Vorteile davon kennt.

Die Sprache wird heikel, wenn sie dazu verleitet, böses zu tun. Das kann ich verstehen. Wenn man damit aber nicht umgehen kann, sollte man Kommentare unterlassen und die Profis bewundern.

---

Die Verwendung von strcpy wird mit einer Warnung bestraft. Warnungen stehen nicht umsonst da. Wenn Du das simple Prinzip verstehst, dann nimmst Du automatisch strncpy (oder noch besser: strlcpy). Dann ist Dein Beispiel hier überflüssig.

Zweitens, Du hast immer noch nicht erklärt, wie Du mit dem Exploit Deines eigenen Programms (denn viel mehr ist es noch nicht; herzlichen Glückwunsch übrigens, das kriegt wahrscheinlich keiner hin, sich selbst ins Knie zu schießen) an root-Rechte gelangst.
 
nakal schrieb:
C schlecht zu machen, indem man zeigt, was der Programmierer absichtlich damit anstellen kann, ist ein seltsamer Ansatz.

Das sind die gleichen Leute, die den root-Account oder die goto-Anweisung verteufeln. Beides ist gut, wenn man die Vorteile davon kennt.

Die Sprache wird heikel, wenn sie dazu verleitet, böses zu tun. Das kann ich verstehen. Wenn man damit aber nicht umgehen kann, sollte man Kommentare unterlassen und die Profis bewundern.

---

Die Verwendung von strcpy wird mit einer Warnung bestraft. Warnungen stehen nicht umsonst da. Wenn Du das simple Prinzip verstehst, dann nimmst Du automatisch strncpy (oder noch besser: strlcpy). Dann ist Dein Beispiel hier überflüssig.

Zweitens, Du hast immer noch nicht erklärt, wie Du mit dem Exploit Deines eigenen Programms (denn viel mehr ist es noch nicht; herzlichen Glückwunsch übrigens, das kriegt wahrscheinlich keiner hin, sich selbst ins Knie zu schießen) an root-Rechte gelangst.

Hallo nakal,

werde versuchen so umfassend wie möglich auf Deine konstruktive Kritik zu antworten. Hoffe das es mir nicht dabei passiert zu ausschweiffend zu werden.

Mein Anliegen oder meine Intuition diesen Thread zu starten war das Thema Programmierung in diesem Unterforum stärkeres Gewicht zu verschaffen.

Über die Frage des Ansatzes lässt sich wahrlich trefflich streiten, so gesehen dürfte es dann auch keine Fachzeitschriften, Foren, Newsgroups geben die sich mit der Thematik der Sicherheit beschäfftigen.

Das Problem hierbei ist immer das man sich auf einen schmallen Grad bewegt.

Ich teile unwidersprochen Deine Analyse und respektiere Deinen Wissens und mal unterstellt Erfahrungsvorsprung den Du mir gegenüber zweifelsohne hast. Das beweisst mir Deine kritische und objektive Bewertung und Analyse, auch gibt es hier sehr viele fachlich versierte Forenmitglieder.

Aber ich würde mich als lernenden bezeichnen, der durch die Tiefen und Höhen des Lernens als soches geht. Meine natürliche Neugier wird immer durch Quellcode geweckt, den ich lese, auch studiere, ausprobiere und versuche zu verstehen, was mir bei manchen Sprachen leichter bei anderen viel schwerer fällt und wiederum bei anderen garnicht gelingt, aber ich bin auf dem Weg.

Dabei versuche ich zu verstehen und wenn Du mich kritisierst, auch verbesserst, zu Recht auf meine Fehler hinweisst, dann lerne ich daraus. Den Wissen erwächst eigentlich immer aus Austausch.

Es gibt vielle Denkansätze innerhalb der Programmiersprachen den rein objektorientierten Ansatz den wohl keine besser vertritt als SmallTalk.
Oder den beschreibenden Denkansatz wie Pascal nur als Beispiel hier genannt.

Zugegeben der Titel dieses Threads ist sehr reisserrisch, aber ich denke dadurch habe ich zumindest erreicht, das hieraus ein Konstruktiver Diaog entstehen kann.

viele Grüsse :) der //*Brain.....
 
//*Brainfuck*\\ schrieb:
nein hier liegst Du falsch die Lektüre auf die mich beziehe ist von Ryan Russel et al.
Syngress.

Der Name der Ausgabe Die mitp Hacker Bibel

Email Adresse: info@vmi-buch.de
Webseite: www.mitp.de
ISBN: 3-8266-0926-3
Kaufpreis damals 28,00 €
Naja, der von Dir zitierte Codeschnipsel steht da jedenfalls 1:1 drin, wenngleich Du Dir die Mühe gemacht hast, die dort im englischen aufgeführten Kommentare ins Deutsche zu übersetzen.

Aber ok, für mich ist in diesem Thread Schluß, ich begreife weder die Motivation, sowas hier zu posten, noch kann ich durch C/C++-Kenntnisse glänzen ...
 
ich will auch mal!
ich mach mal einen stack-ueberlauf. oder smasher? keine ahnung...

auf jeden fall in assembler:
Code:
push   (neue adresse vom code hier eintragen)
ret

und schon springt das return dahin, wo es nicht hinsoll!
yay! (zumindest bei der cpu mit der ich hier arbeite...)
 
fuer exploits, r00tkits, ddos, war3z und pr0n gibt es andere boards. daher schliess ich diesen thread mal.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben