如何grep目录中“$ _POST”或“$ _GET”和“include”的所有文件

时间:2012-07-24 20:20:12

标签: php linux grep

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

“包括,include_once,EXEC”

“$ _ GET,$ _POST”

因此该文件必须包含一个或两个以上的BOTH组。 (检查整个php文件目录)

我正在尝试扫描一些PHP文件中的漏洞,但我真的很害怕grep :(

2 个答案:

答案 0 :(得分:1)

我建议用以下命令开始简单:

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

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

上述命令将为输出中找到的模式着色。注意正则表达式(通过-E启用)和递归搜索(通过-R)。正则表达式的特殊字符通过退格符(即$ char和exec的开始括号)进行转义。

要查看找到的事件的上下文,请使用grep的-C num 参数查看找到的行周围的 num 行:

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

如果要在找到模式的匹配项的行之前或之后输出不同数量的行,也可以使用-A(fter)和-B(之前)。您还可以使用-n参数来获取找到的事件的行号。如果你想获得更多的花哨,你可以将find命令与xargs和grep结合使用,或者使用通过管道连接的多个grep命令,但这在网上教程中有更好的解释。

答案 1 :(得分:0)

grep -l只列出匹配的文件;然后你可以将其输出传递给另一个grep:

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