我在理解以下代码时遇到问题,该代码是 Shell Shock 的“漏洞证明”代码。
有人可以向我解释一下吗?特别是这部分“() { :;};
"
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
what env
does?
从文档中,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
这就是我们间接制造的export x
进入到创建的新环境中env
Here :
bash 中的空语句
希望能帮助到你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)