我想要一个包含以下各组中的一个或多个的 grep。
“包含,include_once,执行”
并且
“$_GET,$_POST”
因此该文件必须包含两个组中的一个或多个。 (检查整个目录的php文件)
我正在尝试扫描一些 PHP 文件是否存在漏洞,但我对 grep 真的很糟糕:(
最佳答案
我建议从简单的命令开始,例如:
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(fter) 和 -B(efore)。您还可以使用 -n 参数来获取找到的事件的行号。如果您想获得更多奇特效果,可以将 find 命令与 xargs 和 grep 结合使用,或者使用通过管道连接的多个 grep 命令,但这在网络教程中得到了更好的解释。
关于php - 如何 grep 目录中 "$_POST"或 "$_GET"和 "include"的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638694/