Wie kriege ich mit ROP einen "/bin/sh" Pointer in rdi?

Ich versuche, rücksprungorientierte Programmierung (ROP) zu lernen.

Und zwar habe ich ein Programm mit einem Pufferüberlauf auf dem Stack, und ich möchte das Programm dazu bringen, /bin/sh zu öffnen.

Das geht mit dem execve Syscall, wenn ich die richtigen Instruktionen finden kann, um die Funktionsparameter vorzubereiten. Das ist die Signatur von execve:

int execve(const char *pathname, char *const _Nullable argv[], char *const _Nullable envp[]);

Also muss ich die folgenden Register setzen:

  • rax = 0x3b (Syscallnummer von execve)
  • rdi = "/bin/sh" Pointer
  • rsi = NULL
  • rdx = NULL

Die folgenden Instruktionen habe ich bereits gefunden:

pop rax ; ret
pop rdi ; ret
pop rsi ; ret
pop rdx ; ret
syscall

Ich kann also die Instruktionen und Registerwerte mit dem Pufferüberlauf auf den Stack schreiben und so meine Register füllen. Das Problem ist aber, dass ich einen "/bin/sh" Pointer in rdi brauche (also nicht "/bin/sh" im Register, sondern eine Speicheradresse, an der "/bin/sh" steht).

Ich kann natürlich "/bin/sh" in den Puffer auf dem Stack schreiben, aber leider ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Ich weiß, dass "/bin/sh" in libc vorkommt, aber auch dort ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Wie komme ich also an einen "/bin/sh" Pointer? Gibt es Tricks oder bestimmte Instruktionen, nach denen ich mich umsehen sollte?

hacken, Hack, Programm, programmieren, pointer, Assembler, Hacker, Hacking, Informatik, IT-Sicherheit, Shell, stack, x64, assemblersprache, Assembly, Exploit, hacken lernen, IT-Sicherheitsexperte, Register, Capture The Flag
Wie gut sollte man in CTFs sein, bevor man einem CTF Team beitritt?

Ich interessiere mich für Hacken und Capture the Flag (CTF) Challenges, bin aber noch nicht so gut darin, weil diese Challenges sehr schwer sind.

Ich kann zum Beispiel mit rücksprungorientierter Programmierung (ROP) einen Pufferüberlauf auf dem Stack ausnutzen, um den Kontrollfluss zu manipulieren oder eine SQL Injection Schwachstelle einer Webseite ausnutzen, um eine Passworteingabe zu umgehen, aber an komplexen Angriffen wie ret2libc oder dem Ausnutzen von Pufferüberläufen auf dem Heap scheitere ich noch. Ich kann auch noch nicht so gut mit Gegenmaßnahmen wie zufälligen Speicheradressen umgehen. Deshalb gelingt es mir oft nicht, eine CTF Challenge zu lösen.

Das Problem bei CTFs ist, dass sie in Teams gespielt werden. Man kann zwar auch als Team mit nur 1 Mitglied teilnehmen, aber meistens sind die Challenges zu schwer, um sie alleine zu lösen (vor allem, wenn man noch nicht so gut ist).

Deshalb habe ich mir überlegt, dem CTF Team der TUM (h4tum) beizutreten. Allerdings möchte ich mich nicht vor den anderen Studenten und den Mitarbeitern des I20 Lehrstuhls blamieren, weil ich permanent bei CTF Wettbewerben versage. Das Team ist ziemlich gut (derzeit Platz 8 in Deutschland), deshalb frage ich mich, wie gut ich sein sollte, bevor ich beitrete.

Computer, Studium, Hobby, hacken, Sicherheit, Wettbewerb, Hacker, Hacking, Informatik, Informatiker, IT-Sicherheit, skill, Skills, Student, studieren, Team, studentinnen, beitreten, Beitritt, Challenge, hacken lernen, Informatikstudium, Reverse Engineering, tu münchen, TUM, Capture The Flag, Technische Universität München
Iphone 15 gesperrt während Einrichtung?

Ich hab vorhin mein neues Iphone 15 Plus versucht einzurichten und bin auch normal voran gekommen. Ich hab eine Face Id und code usw eingestellt aber hab noch wegen der Datensicherung beim anderen Handy gewartet (auch IPhone, Icloud). Dann als die Datensicherung fertig war hab ich das neue Handy entsperren wollen und die Daten von der Icloud wiederherstellen wollen. Das Handy ist also nicht eingerichtet noch mit der Icloud verbunden aber das Handy wollte statt Face Id unbedingt den Pin. Und ich weiß zu 1000% das der Pin den ich eingegeben hab richtig ist außer ich hab mich beim einrichten zweimal auf der selben Stelle vertippt weil man bestätigt den Pin noch mal bevor der gilt. Nun hat das Handy aber gesagt der Pin ist falsch. Ich hab es immer und immer wieder probiert und auch alternativen wie ich mich hätte eventuell vertippen können aber mittlerweile ist das Handy 8 Stunden gesperrt und jeder weiter Versuch kommen mehr als das 3 fache an stunden oben drauf und dann hat man auch immer nur ein Versuch.

Ich hab mich belesen und alles mögliche versucht das Handy zurückzusetzen weil es ist ja noch nicht eingerichtet und hat somit keine daten. Aber ich komme nicht weiter weder vorwärts noch rückwärts. Die einzige Möglichkeit ist den richtigen Pin einzugeben, es gibt nicht mal die Möglichkeit pin vergessen weil es nicht eingerichtet ist bzw keine iCloud verbunden ist. In die Einstellungen komme ich nicht und über den pc geht es auch nicht weil man sich dazu auch über itunes mit der iCloud verbinden soll. Ich bin echt verzweifelt und weiß nicht weiter.

wie bekomme ich das Handy entsperrt oder zurückgesetzt ohne teueren besuch beim apple store. Der code ist zu 1000% richtig eingegeben, ich nehme immer den gleichen als entsperrcode und den kann ich blind in speed version tippen

Apple, iPhone, Foto, iTunes, Software, hacken, iPad, Backup, Hardware, Speicher, zurücksetzen, SIM-Karte, Apple ID, WhatsApp, iCloud, iCloud-Speicher, iCloud Backup, neu, iPhone 11

Meistgelesene Fragen zum Thema Hacken