Die GNU-Leute haben versagt, wenn sie grep Argumente gegeben haben, rekursiv nach Dateien zu suchen. Vergessen Sie jemals gehört, von -r
oder --include
und schreiben Sie Ihr Skript find
zu verwenden die Dateien finden und grep
zu G lobally für eine R suchen egular E xpression und P rint (g/re/p
) das Ergebnis aus jede Datei (siehe die großen Hinweise in den Werkzeugnamen?). Zum Beispiel:
find /path/to/webroot -name '*.php' -print0 |
xargs -0 grep -l 'eval(base64_decode'
Wenn das gibt Ihnen noch ein Problem dann Schritt 1 bei der Fehlersuche ist es die find
auf seine eigenen und sehen, ob es gibt eine Liste von Dateien auszuführen. Wenn ja, dann Schritt 2 ist die grep
allein auf einer der Dateien von find
ausgegeben. Wenn Sie das nicht herausfinden können, lassen Sie es uns wissen.
Schauen Sie sich bitte [editing-help] (http://stackoverflow.com/editing-help) an. – Cyrus
Um Ihr Problem zu verstehen, beseitigen Sie zuerst die ausgefallenen Argumente. Kannst du 'grep 'eval (base64_decode"/pfad/zu/webroot/subdir/one_phpFileOnly.php' zum arbeiten bekommen? (Lass die Suche zuerst für eine Datei arbeiten). Ich wette, es funktioniert nicht, was ist mit ' grep "eval"/pfad/zu ... oneFileOnly.php'? Ich wette, das funktioniert. Also ist es wahrscheinlich das '(' char. Wie wäre es mit 'grep" eval [(] base ... "....'? Else 'grep" eval [\ (] base ... "' Sobald das funktioniert, kannst du die allgemeinere Lösung wählen und die anderen Argumente hinzufügen. Viel Glück. – shellter