Ich arbeite an einem System Sicherheitsprojekt mit dem Thema: Buffe Roverflow-Angriff. Ich habe ein Programm und den Quellcode, mit dem ich root-Berechtigungen erhalten sollte. Ich habe das Problem durch einen Zufallsgenerator Kanarienvogel verursacht wird, zu Beginn ot das Programm des Zufallszahlengenerator initialisiert wird:Pufferüberlauf-Angriff, um einen zufälligen Kanarienvogel zu regenerieren?
srand(time(NULL)^(getpid() << 16));
später auf dem Kanarienvogel von
canary = rand();
Meine Frage gesetzt wird: Ist Kann man den Kanarienvogel regenerieren? Ich möchte das Salz neu generieren (Zeit (NULL) gibt die Zeit seit 1970 in Sekunden zurück und pid ist konstant, wie das Programm startet) und dann den Kanarienvogel durch den Aufruf von rand() erhalten. Ich bin mit keiner Skriptsprache vertraut und habe nicht viel Linux-Erfahrung, also hoffe ich, keine Zeit mit einer Lösung zu verschwenden, die niemals funktionieren würde. Vielen Dank im Voraus! :)
Sind Sie sicher, dass PHP und C den gleichen Rand-Generator verwenden? Wenn ich es mit meiner eigenen geschriebenen C-Anwendung versuche, funktioniert es, aber mit PHP tut es nicht. – C4ptainC4mp
Die Implementierung von 'rand()' scheint plattformabhängig zu sein. In Debian bekomme ich die gleichen Ergebnisse mit C und PHP. In OS X gibt das C-Programm ein anderes Ergebnis. Sie sollten in Ordnung sein, solange Sie Ihr Programm mit der gleichen Bibliothek wie die Zielanwendung kompilieren. –