gpt4 book ai didi

php - 尝试查找和删除文本以修复WP恶意软件时,SSH命令无法正常工作

转载 作者:行者123 更新时间:2023-12-02 14:08:28 25 4
gpt4 key购买 nike

不幸的是,我需要清理受插件破坏或过时的恶意软件攻击的WordPress安装,但是作为一个SSH初学者,我发现很难确切地知道我在做什么错。

我需要删除的代码是这样的:

<?php $qiorgeq = '22)gj!|!*nbsbq%)323ldfidk! (...base64 text...) ?>

由于我需要从服务器上以php标记开头的所有文件中删除该文件,因此我认为这可以解决问题:
find -type f -name '*.php' -print0 | xargs -0 sed -i 's#<?php $qiorgeq*?>##g'

经过几次失败的尝试和许多错误之后得出了这个结论。这似乎 运行,但似乎什么也没做,也没有删除任何东西。

我觉得答案很接近...请帮助!

最佳答案

这里有几件事:

find find的第一个参数应该是要搜索的目录。
例如:find . -type f -name *.php -print0(注意.find之间的-name)

sed
默认情况下,sed不会修改文件的内容。它将结果输出到标准输出。添加-i "myextension"会将修改后的文件保存到yourfile.php.myextension,但仍不会修改源文件。
要覆盖源文件,您需要做的是sed -i "" 's#search#replace#g(在-i选项之后添加一个空字符串)

正则表达式
您应该在.*正则表达式中使用sed而不是*。 (.字符与任何字符匹配)。您当前的正则表达式将只匹配qiorge +任意数量的q

最后,一个有效的命令将是:find . -type f -name '*.php' -print0 | xargs -0 sed -i "" 's#<?php $qiorgeq.*?>##g'
编辑1:该命令在Mac OS上有效,但sed在Linux上可能有所不同。
此命令可能在Linux上有效:find . -type f -name '*.php' -print0 | xargs -0 sed -i 's#<?php $qiorgeq.*?>##g'(我在-i参数后删除了空字符串)

编辑2:
以下脚本将列出受感染的文件(使用换行符,使用包含空格的文件):

find . -iname "*.php" | while read f
do
if [[ "$( grep "<?php $qiorgeq" "$f" )" != "" ]] ; then
echo "$f"
fi
done

您可以通过所需的任何处理替换 echo

Oneliner: find . -iname "*.php" | while read f ; do if [[ "$( grep "<?php $qiorgeq" "$f" )" != "" ]] ; then echo $f ; fi ; done

关于php - 尝试查找和删除文本以修复WP恶意软件时,SSH命令无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35700425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com