我正在做一个关于命令注入的小练习,我有一个可以注入的命令:
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
。点(.
) 将匹配任何字符,因此它将匹配任何非空行。插入符 ( ^
) 匹配任何行的开头,因此将匹配任何行,甚至是空白行。 (您也可以使用美元符号。)