Für eine Klasse in Software-Sicherheit muss ich eine einfache Rückkehr zu libc Angriff machen. Ich habe es geschafft, ein Perl-Skript zu erstellen, das den Angriff mit den richtigen Zeigern zu system(), exit() und der/bin/sh-Zeichenfolge vervollständigt. Ich habe diese Zeiger mit gdb "p system" usw. gefunden. Nun möchte ich den Exploit etwas "dynamischer" machen, indem ich ein c-Programm schreibe, das zur Laufzeit die adressen von system() und exit() findet. Wie mache ich das? Ich habe versucht "& System", aber das scheint mir nicht die richtige Adresse überhaupt geben.Zurück zu libc finding pointers
Bearbeiten: Das System hat keine ASLR aktiviert.
Wenn es kein Bibliothekseinstiegspunkt ist, muss es irgendwo definiert werden. Der C-Standard verlangte, dass er als eine Funktion definiert wurde, so dass er irgendwo existieren musste. Versuchen Sie es zu finden. – randomusername
@randomusername Ich habe meine Antwort aktualisiert - jetzt weiß ich genau, wie ich die Adresse der Funktion finde.Aber ** das Symbol/die Funktion, die Sie aufrufen möchten, müssen bereits von der Binärdatei verwendet werden, die Sie hacken möchten. ** Andernfalls ist es nicht verknüpft. – TMS
@randomusername ein Prozess wird auch enden, wenn Main zurückkommt ... es gibt keine spezielle Funktion für das ... du hast gerade kein Programm mehr. Wenn ein Symbol nicht verwendet wird, ist es nicht erforderlich, dass es sich irgendwo in der Objektdatei befindet. und wenn es nicht kompiliert wird, müsste man es zur Laufzeit dynamisch verknüpfen ... was von begrenztem Nutzen ist, weil das Programm es nicht benutzt und man bereits beliebigen Code an diesem Punkt ausführt. –