2012-07-24 50 views
-2

我希望有一个grep,其中包含来自以下每个组的一个或多个文件。

“包括,include_once,EXEC”

“$ _GET,$ _ POST”

所以文件必须从两个组的一个或多个。 (检查的PHP文件整个目录)

我试图扫描一些PHP文件的漏洞,但我真的吮吸的grep :(

+0

你没有你的文件的本地副本? – 2012-07-24 20:22:14

+2

如果您显示您尝试使用的代码以及代码生成的错误,则可能有人可以提供帮助。 – 2012-07-24 20:23:22

+0

当然我做 - 所有本地 – 2012-07-24 20:30:16

回答

1

我建议开始用简单的命令,如:

grep --color=auto -ER '\$_POST|\$_GET' . 

grep --color=auto -ER 'include(_once)+|exec\(|require(_once)+' . 

上述命令将在输出中着色找到的模式。注意正则表达式(通过-E启用)和递归搜索(通过-R)。正则表达式的特殊字符是通过退格字符转义(即,$炭和exec的开口托架)

要查看发现出现的上下文中使用grep的-C NUM参数看NUM线周围发现行:

grep --color=auto -C 2 -ER '\$_POST|\$_GET' . 

您也可以使用-A(压脚提升)和B(安伏),如果你想输出不同数目的行前或在其发现发生行后您的模式。您也可以使用-n参数来获取找到的事件的行号。如果你想变得更加花哨,你可以将find命令与xargs和grep结合起来,或者使用多个通过管道连接的grep命令,但是这在网络上的教程中有更好的解释。

0

grep -l将只列出匹配的文件;然后你可以管那输出到另一个grep的:

grep -l -e "$_POST" -e "$_GET" * | grep -e "include" -e "include_once" -e "exec"

相关问题