是否可以将 ls 的输出通过管道传输到 grep 中,但 grep 放在第一位?

是否可以将 ls 的输出通过管道传输到 grep 中,但 grep 放在第一位?

我正在做一个关于命令注入的小练习,我有一个可以注入的命令:

grep -i $key dictionary.txt

$key我可以注入一些东西的部分在哪里。现在,我知道这里的预期解决方案是使用;终止一个语句,然后构造一个新语句。但我想看看我是否可以使用grep我的尝试中。

我想做的是运行ls,以便查看特定目录中的文件。我想将两者结合使用,如下所示:

ls | grep -i "."

但是,由于我正在进行注射,所以我需要grep -i先进行注射。那我有什么可以做的吗?也许是一个以“相反”顺序工作的管道运算符?

grep -i "." <| ls

编辑

对于我在这里所做的事情以及我想要实现的目标似乎有些困惑。

我正在做一些笔测试的入门练习。

我当前的练习是在一个网站上进行注入,其中包含以下字符串:

grep -i $key dictionary.txt

然后使用该字符串来运行命令。我需要向该字符串中注入一些内容,这将是命令注入。我无法控制该字符串,因为它已经写在服务器上,因此我无法将任何内容放入 的左侧grep -i

我已经有了一个解决方案,我在其中注入以下内容:

; ls /etc/natas_webpass #

然后(当我注入它时)创建在服务器上运行的命令

grep -i ; ls /etc/natas_webpass # dictionary.txt

我想尝试不使用分号来解决这个练习,但也许实际上使用grep已经存在的分号。

编辑2

有人提出了我正在寻找的建议<(ls)。我尝试通过运行来测试这一点:

$ grep -i <(ls)

但这是行不通的;什么都没发生。

答案1

你差不多已经明白了。注入

. <(ls)

或者

^ <(ls)

为了$key。您需要搜索某物在 的输出中 ls。点(.) 将匹配任何字符,因此它将匹配任何非空行。插入符 ( ^) 匹配任何行的开头,因此将匹配任何行,甚至是空白行。 (您也可以使用美元符号。)

相关内容