grep
我正在尝试使用命令替换来查找并打印出包含 base64 编码字符串的所有文件。
如果我首先对 base64 字符串进行编码,然后使用 grep,我就可以找到该文件:
$ echo "FLAG" | base64
RkxBRwo=
$ grep -nr "Rkx"
test.txt:1:RkxBR3tUaGl6STVUaDNGbDRnfQo=
但是当我使用命令替换时,我没有得到任何输出。
$ grep -nr `echo "FLAG" | base64`
答案1
Steeldriver 将答案作为评论发布,因此我将其作为答案发布。
echo "FLAG" | base64
输出RkxBRwo=
,所以你的
grep -nr `echo "标志" | grep -nr `echo "FLAG" | grep -nr `echo "FLAG" base64`命令正在执行
grep -nr RkxBRwo=但是,根据您所显示的内容,您的
test.txt
文件不包含RkxBRwo=
;它包含RkxBR
(后跟其他字符)。
如果您想在文件中搜索 的 base64 编码的前 5 个字符FLAG
,请执行以下操作
grep -nr `echo "标志" | grep -nr `echo "FLAG" | grep -nr `echo "FLAG" 64 位 |切-c1-5`
答案2
命令
grep -nr `echo "FLAG" | base64`
表示在当前目录中的所有文件中递归搜索命令返回的模式echo "FLAG" | base64
。
相反,我相信你想要
echo "FLAG" | base64 | grep -n 'Rkx'
或者,如果出于某种原因您需要命令替换:
grep -n 'Rkx' <<< $(echo "FLAG" | base64)
$()
请注意,使用表达式而不是反引号来进行命令替换。这就是原因。