这是我第一次使用 bash,我知道使用 eval 有一些风险。您可以对此进行代码注入(inject)吗?例如,我想运行 ls 命令并查看文件。
#!/bin/bash
echo "[*] Please enter the name:"
echo -n "> "
read NAME
echo "[*] Please enter the value:"
echo -n "> "
read VALUE
declare CONFIG_$NAME=$VALUE
for VARIABLE in $(compgen -v CONFIG_)
do
echo "- $VARIABLE: $(eval echo \$$VARIABLE)"
done
最佳答案
我相信 eval
的这种特殊用法是安全的,因为它只对有效的标识符进行操作,或者需要对执行进行一定程度的控制,这使得利用本身没有实际意义。
作为攻击者,我会忽略 eval
并改用其他入口点之一,例如
$ ./myscript
[*] Please enter the name:
> [`date>&2`]
[*] Please enter the value:
> foo
Thu 05 Nov 2020 04:00:37 PM PST
- CONFIG_: foo
关于bash - 可以在此代码中使用 eval 完成代码注入(inject)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64705997/