我的wordpress网站感染了 eval(gzinflate(base64_decode(' hack。
我想ssh进入服务器并找不到我的php文件中的所有这些行。
我尝试了以下命令:
find . -name "*.php" -print | xargs sed -i 'MY STRING HERE'
我认为这不起作用,因为字符串中包含 / 字符,我认为需要将其转义。
有人可以告诉我如何逃避这些角色吗?
提前致谢。
答案 0 :(得分:0)
我没有尝试过这样备份你的文件!正如一些评论中提到的,这不是最好的想法,尝试其他方法可能会更好。无论如何,这个怎么样?
find . -name "*.php" -type f -exec sed -i '/eval(gzinflate(base64_decode(/d' {} \;
答案 1 :(得分:0)
如果你有perl可用:
perl -p -i'.bck' -e 's/oldstring/newstring/g' `find ./ -name *.php`
=>修改的所有文件都有备份(后缀'.bck')
答案 2 :(得分:0)
Bash提供不同的分隔符,例如@%| ; :/ in sed substitute命令。
因此,当替换涉及其中一个分隔符时,可以在sed命令中使用任何其他分隔符,这样就不需要转义所涉及的分隔符。
示例:
当替换/替换涉及" /"时,可以使用以下内容:
sed 's@/will/this/work@/this/is/working@g' file.txt
提出您的问题,您的替换/替换涉及" /",因此您可以使用任何其他分隔符。
find . -name "*.php" -print | xargs sed -i 's@/STRING/TO/BE/REPLACED@/REPLACEMENT/STRING@g'