有人可以解释Shell Shock Bash代码吗?

时间:2014-09-26 04:33:51

标签: linux bash unix ubuntu shellshock-bash-bug

我在理解以下代码时遇到了问题,这是Shell Shock'漏洞证明'码。 有人可以向我解释一下吗?特别是,这部分" () { :;};"

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

1 个答案:

答案 0 :(得分:5)

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

env的作用是什么?
从文档中,env在修改后的环境中运行程序

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

很明显x是名称/变量,() { :;}; echo vulnerable'是变量的值

现在什么是() { :;};
导出函数时,bash将其defenition作为值存储到环境变量

$ x() {echo hello world;}
$ export x
$ env | grep x
x=() {echo hello world};

现在当x='() {:;}'与写作相似时

$ x() {:;}
$ export x
$ env | grep x

那就是我们间接地将export x转移到由env创建的新环境中 这里:是bash中的空语句

希望有所帮助