Facebook
Twitter
Google+
Kommentare
0

PHPs Interaktive Shell

Um mal eben schnell eine kurzes Snippet auszuprobieren gibt es mehrere Möglichkeiten, die wohl geläufigste ist eine neue PHP-Datei anzulegen im Document Root, sie mit seiner IDE oder zur Not auch Notepad/Textedit/vi zu öffnen und die Zeilen zu schreiben, abzuspeichern, den Browser öffnen und die URL eintippen, dann sollte man das Ergebnis sehen.

Nehmen wir an wir wollen testen was der zweite Parameter von md5() so hergibt. Der Inhalt der Datei ist also

<?
var_dump(md5('Michael Kliewe'));
var_dump(md5('Michael Kliewe', true));

Im Browser sieht man dann die Ausgabe:

string(32) "e10492e362d887c6c00c12d17ca209b5" string(16) "XXXJEDEMENGEKOMISCHEBYTESXXX" 

Einfacher ist jedoch die Verwendung der Kommandozeile. Die Datei wird nach wie vor mit dem Editor erstellt, da es nur ein Test ist legt man sie wahrscheinlich unter /tmp/ ab und ruft sie auf:

php /tmp/test01.php

Ausgabe:

string(32) "e10492e362d887c6c00c12d17ca209b5"
string(16) "XXXXXX
XXXJEDEMENGEKOMISCHEBYTESXXX"

Noch einfacher und schneller geht es mit dem “run” Parameter (-r), dann kommt man komplett ohne Datei aus:

$ php -r "var_dump(md5('Michael Kliewe'));"
string(32) "e10492e362d887c6c00c12d17ca209b5"
$ php -r "var_dump(md5('Michael Kliewe', true));"
string(16) "XXXXXX
XXXJEDEMENGEKOMISCHEBYTESXXX"

PHP bietet auch eine interaktive Shell, die man mit dem Parameter -a startet und dann PHP Code schreiben kann, inklusive Autovervollständigung für Funktionen, Konstanten, Klassennamen, Variablen, statische Methoden, Klassenkonstanten und einer History der letzten Befehle (Pfeil hoch).

php -a
Interactive shell

php > var_<TAB><TAB>
var_dump    var_export
php > var_dump(md<TAB><TAB>
md5               md5_file          mdecrypt_generic
php > var_dump(md5('Michael Kliewe'));
string(32) "e10492e362d887c6c00c12d17ca209b5"
php > var_dump(md5('Michael Kliewe', true));
string(16) "XXXXXX
XXXJEDEMENGEKOMISCHEBYTESXXX"
php > quit

Einzige Voraussetzung ist die Kompilierung von PHP mit der Readline-Extension (–with-readline). Wenn ihr fertige PHP-Pakete nutzt müßt ihr es einfach ausprobieren ob es geht, auf dem Mac im Büro beispielsweise funktioniert es mit der eingebauten PHP Version nicht. Falls es unter Debian Probleme gibt ist sie eventuell leicht nachinstallierbar:

sudo apt-get install php-readline

Unter Windows ist es auch etwas komplizierter da dort die Readline-Erweiterung nicht zur Verfügung steht. Es gibt aber einen Workaround, siehe auch die Kommentare im PHP Manual.

Für das Problem unter Mac und Windows gibt es einige Lösungen, schaut euch dazu phpa, phpa-norl, phpsh und php shell an.

Auch eine interessante Lösung für schnelle Snippet-Tests sind Mini-Webinterfaces wo man seinen PHP-Code in eine Textarea schreiben kann und mit einem Knopfdruck den Code auf dem Server ausführen kann. Bekannte Vertreter sind PHP Interactive, PHP Shell, php-web-shell, und PHPsh. Passt dabei aber auf dass ihr diese Interfaces mit einem Passwort (htaccess) oder ähnlichem schützt, denn sonst schreibt dort jemand “system(‘rm -rf /’);” rein und ihr habt ein Problem.

Welches Vorgehen habt ihr bei kleinen Snippet-Tests?

PS: Bei der Suche bin ich auf eine PHP-Reverse-Shell gestossen, keine Ahnung ob die jemand zu legalen Zwecken einsetzt, aber interessant zu sehen.

Keine ähnlichen Artikel.

Über den Autor

PHP Gangsta

Der zweitgrößte deutsche, eher praxisorientierte PHP-Blog von Michael Kliewe veröffentlicht seit Mitte 2009 Artikel für Fortgeschrittene.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen