【发布时间】:2012-02-29 23:19:43
【问题描述】:
我一直在努力解决 grep 问题,试图在我的服务器上扭转服务器范围的黑客攻击,但是当作为 shell 运行时,grep 似乎无法在 jpg 文件中搜索,但是 grep 命令在 ssh 中它自己的作品文件上。
这会很好地返回结果: grep -l -R "讨厌的代码" /var/www/vhosts
但是当作为 shell 脚本运行时,它不再找到 jpg。
for file in $(grep -l -R "nastycode" /var/www/vhosts)
do
sed -e "s/"nastycode"/"nicecode"/ig" $file > /tmp/tempfile.tmp
mv /tmp/tempfile.tmp $file
echo "Modified: " $file
done
问:可能与“for file in”部分有关吗? 问:在我们的搜索模式“nastycode”中,我们可以搜索具有 regexp 字符但将它们视为正常字符($、|?等)的东西吗?
提前致谢。
尼古拉斯
【问题讨论】:
-
我不确定您所说的“在 jpg 文件中搜索”是什么意思——您的意思是您希望 sed 以某种方式在二进制文件 (.jpg) 中搜索字符串? Re 'nastycode' 是一个文字字符串,而不是正则表达式——你可以使用
-F(或--fixed-strings)。 -
感谢您的回复。当我说“在 JPG 文件中搜索”时,我的意思是黑客已经编辑了 jpg 文件并将 php 代码添加到文件中,但仍然向用户显示 jpg。 (他们还添加了一个 htaccess 文件以将 jpg 处理为 php 并执行代码)
-
文字似乎不起作用。我正在尝试搜索 ") || stristr(" 并替换为 ") &&false || stristr(" 以使脚本无用
-
你是说 {grep -l -R "nastycode" /var/www/vhosts} 返回一些 jpg,但是在脚本中运行时,同一行找不到 jpg?我要检查的第一件事是“whcih grep”,以确保您的路径没有改变。
-
我认为你们帮助我解决了其中一个问题。我现在可以让它从 shell 脚本正确运行。我认为不返回结果的问题来自递归函数没有通过足够的子深度,或者 -F 也失败了