脚本的解析
env X=‘() { (a)=>\‘ sh -c "echo date"; cat echo
(1)
X=‘() { (a)=>\’ 这个不用说了,定义一个X的环境变量。但是,这个函数不完整啊,是的,这是故意的。另外你一定要注意,\’不是为了单引号的转义,X这个变量的值就是 () { (a)=>\
(2)
其中的 (a)=这个东西目的就是为了让bash的解释器出错(语法错误)
(3)
语法出错后,在缓冲区中就会只剩下了 “>\”这两个字符
(4)
于是,这个神奇的bash会把后面的命令echo date换个行放到这个缓冲区中,然后执行
(5)
后面的 cat echo是查看文件echo的内容
(6)
执行相当于 >\
其中的 \ 在Shell中相当于换行
(7)
相当于 >echo date
(8)重定向(在Shell中 >A B 相当于 B > A)
相当于 date > echo 生成echo文件
(9)结束
时间: 2024-10-15 02:35:11