我正在做一个命令注入的小练习,我有这个命令可以注入:
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)
但是,这不起作用;什么都没发生。
你几乎明白了。注入
或者
为
$key
. 您需要在输出 中搜索ls
. 点 (.
) 将匹配任何字符,因此它将匹配任何非空行。Caret (^
) 匹配任何行的开头,因此将匹配任何行,甚至是空白行。(您也可以使用美元符号。)