命令注入--命令连接符

 

linux服务器

;(分号)

命令按照顺序(从左到右)被执行,并且可以用分号进行分隔。当有一条命令执行失败时,不会中断其它命令的执行

eg:ping -c 4 127.0.0.1;sleep 6  //两条都是有效命令

        test;sleep 6 //test无效命令,即执行失败,sleep一样执行

 

|(管道符)

通过管道符可以将一个命令的标准输出管道为另外一个命令的标准输入。当第一条命令失败时,它仍然会执行第二条命令

eg:ping -c 4 127.0.0.1|sleep 6 

        test|sleep 6

&(后台任务符号)

命令按照顺序(从左到右)被执行,跟分号作用一样;此符号作用是后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作

root@ubuntu: d & e & f
        [1] 14271
        [2] 14272

        后台执行任务d和e,而在前台执行任务f. shell将作业数目显示在方括号[ ]中,同时还显示了在后台运行的每个进程的PID(process identification,进程标识)编号。在f结束后就  会立即得到一个shell提示符

&&(逻辑与)

前后的命令的执行存在逻辑与关系,只有【&&】前面的命令执行成功后,它后面的命令才被执行

eg:ping -c 4 127.0.0.1&&sleep 6  //sleep不执行

        test&&sleep 6  //test无效命令,则sleep执行

       

||(逻辑或)

前后命令的执行存在逻辑或关系,只有【||】前面的命令执行失败后,它后面的命令才被执行;

eg:ping -c 4 127.0.0.1||sleep 6  //都执行

        test||sleep 6  //test无效命令,则sleep不执行

 

`反引号

当一个命令被解析时,它首先会执行反引号之间的操作。例如执行echo `ls -a` 将会首先执行ls并捕获其输出信息。然后再将它传递给echo,并将ls的输出结果打印在屏幕上,这被称为命令替换

eg:ping -c 4 127.0.0.1`sleep 6`

 

$(command)

这是命令替换的不同符号。当反引号被过滤或编码时,可能会更有效

eg:ping -c 4 127.0.0.1 $(sleep 6)  

 

命令解析过程:https://blog.csdn.net/huayangshiboqi/article/details/80217150

 

windows服务器

| & || && 跟linux一样

 

posted @ 2019-11-13 21:53  Alummox  阅读(1893)  评论(0编辑  收藏  举报