我在理解以下代码时遇到问题,这是 Shell Shock 的“漏洞证明”代码。有人可以向我解释吗?特别是这部分“ () { :;};
”
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
我在理解以下代码时遇到问题,这是 Shell Shock 的“漏洞证明”代码。有人可以向我解释吗?特别是这部分“ () { :;};
”
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
做什么env
?
从文档中,env
在修改后的环境中运行程序
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
很明显,这x
是一个名称/变量,() { :;}; echo vulnerable'
是变量的值
现在是什么() { :;};
?
导出函数时,bash 将其定义作为值存储到环境变量中
$ x() {echo hello world;}
$ export x
$ env | grep x
x=() {echo hello world};
现在当x='() {:;}'
意味着类似于写作
$ x() {:;}
$ export x
$ env | grep x
也就是我们间接创建了
Here is a null statement in bashexport x
创建的新环境env
:
希望能帮助到你