-2

我想要一个 grep,其中包含以下每个组中的一个或多个。

“包括,包括一次,执行”

“$_GET, $_POST”

因此,该文件必须具有来自两个组的一个或多个。(检查整个目录的 php 文件)

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

4

2 回答 2

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(efore)。您也可以使用 -n 参数来获取找到的事件的行号。如果您想更花哨,可以将 find 命令与 xargs 和 grep 结合使用,或者使用通过管道连接的多个 grep 命令,但在网络上的教程中有更好的解释。

于 2012-07-24T21:03:23.027 回答
0

grep -l只会列出匹配的文件;然后,您可以将其输出通过管道传输到另一个 grep:

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

于 2012-07-24T20:35:47.127 回答