概述
命令注入即 Command Injection。是指在开发需求中,需要调用一些系统的命令来完成某些特定的功能。当未对用户输入的参数进行严格的过滤时,则有可能发生命令注入。攻击者可以通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。
命令连续符
系统命令支持使用连接符来执行多条语句,常见的连接符有|、||、&、&&,其含义为
符号 | 含义 |
;(Linux中) | 前后的命令依次执行,注意前后顺序 |
| | 管道符,前面命令输出结果作为后面命令的输入内容,当第一条命令报错时依旧执行下一条命令,且只会输出下一条命令的结果 |
|| | 前面命令执行失败时才执行后面的命令 |
& | 前面命令执行后继续执行后面的命令 |
&& | 前面命令执行成功后才执行后面的命令 |
||
当前面命令执行失败时,才执行后面的,这里可以看到只进行了对baidu的ping命令,并没有执行ipconfig

当前面命令执行完之后会出现报错,然后继续执行后面的命令

&&
前面命令执行成功后才执行后面的命令,不然就直接报错退出


但是一个&就不会有限制,会将命令执行完

实例
以DVWA靶场为例
low
拿到题目后给了我一个输入框,叫我提供一个IP地址,使用ping命令测试IP

输入www.baidu.com
可以看到ping通了

那我们就可以使用连接符进行命令注入、
输入www.baidu.com&&ipconfig
可以看到不仅执行了对百度的ping还执行了ipconfig查看配置信息
