我在理解以下代码时遇到了问题,这是Shell Shock'漏洞证明'码。
有人可以向我解释一下吗?特别是,这部分" () { :;};
"
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
答案 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中的空语句
希望有所帮助