Senior Security Consultant/Penetration Tester | CEO
Du kennst doch sicher die Funktion “printf”. Wenn nein, ist auch okay. Bei der Funktion steht meistens „%s“ mit einem String dahinter. Danach kann man dann zum Beispiel das allseits bekannte „Hello World“ schreiben. Man kann das „s“ jedoch durch andere Buchstaben ersetzen, wie zum Beispiel ein „p“ (Pointer) oder ein „x“ (Hex). Dadurch passieren andere Sachen.
Doch nun stellt sich die Frage, was ist, wenn ich statt nur einem „%s“ mehrere davon hintereinander setze? Der Computer ist natürlich dumm und schaut am Stack, was da ist und gibt das aus. Wenn wir nun die Ausgabe vom Stack haben, können wir damit einfach weiterarbeiten.
Was man jedoch auch machen kann, ist eine Payload, die so lange Sachen ausgibt, bis wir die richtige Stelle gefunden haben, wo der Stack Canary liegt. Man kann sich dann die Stelle XY ausgeben lassen und nutzt dies, um den Stack Canary zu umgehen.