命令注入-命令的連線符【‘&’‘&&’‘||’‘|’】的含義及其用法

集中一點登峰造極發表於2020-12-24

命令的連線符【‘&’‘&&’‘||’‘|’】的含義及其用法

一、各個連線符的含義

a && b :代表首先執行前者命令a再執行後命令b,但是前提條件是命令a執行正確才會執行命令b,在a執行失敗的情況下不會執行b命令。所以又被稱為短路運算子。
前面的命令執行成功後,它後面的命令才被執行

a & b:代表首先執行命令a再執行命令b,如果a執行失敗,還是會繼續執行命令b。也就是說命令b的執行不會受到命令a的干擾。
表示簡單的拼接,A命令語句和B命令語句沒有制約關係

a || b:代表首先執行a命令再執行b命令,如果a命令執行成功,就不會執行b命令,相反,如果a命令執行不成功,就會執行b命令。
前面的命令執行失敗,它後面的命令才被執行

a | b:代表首先執行a命令,再執行b命令,不管a命令成功與否,都會去執行b命令。
(=當第一條命令失敗時,它仍然會執行第二條命令,表示A命令語句的輸出,作為B命令語句的輸入執行。==)

二、用法演示

    以下結果皆由DVWA靶場中low的命令注入模組進行演示

1.a && b

輸入

 127.0.0.1&&net user

在這裡插入圖片描述
可以看到執行了a命令和b命令
接著輸入:

127.0.0.11111&&net user

在這裡插入圖片描述
    因為a命令為假,所以b命令並沒有被執行。

2.a & b

輸入

127.0.0.1&net user

在這裡插入圖片描述

    命令a和命令b都成功被執行了。我們接著輸入

127.0.0.11111&net user

在這裡插入圖片描述
    雖然a命令為假,但b命令仍然被執行。接著輸入

127.0.0.1&net userss

在這裡插入圖片描述
    可以看到,當b為假時,a也被執行。
    所以a & b兩者之間沒有制約關係,互不影響。

3.a || b

輸入

127.0.0.1||net user

在這裡插入圖片描述
看到只執行了a,沒有執行b。接著輸入

127.0.0.11111||net user

在這裡插入圖片描述
看到a為假,但是b被執行了。
    所以a || b:前面的命令執行失敗,它後面的命令才被執行。

4.a | b

輸入

127.0.0.1|net user

在這裡插入圖片描述
    可以看到即使a命令是對的,但是並沒有被執行,執行的是b。接著輸入:

127.0.0.111111|net user

在這裡插入圖片描述
當a為假,還是隻執行b命令。
    所以a | b:不管a命令成功與否,都會去執行b命令。

    本站所有文章均為原創,歡迎轉載,請註明文章出處: https://blog.csdn.net/weixin_43847838/article/details/111602811.。百度和各類採集站皆不可信,搜尋請謹慎鑑別。技術類文章一般都有時效性,本人習慣不定期對自己的博文進行修正和更新,因此請訪問出處以檢視本文的最新版本。

相關文章