前言
Day 1 認識了 Linux 檔案系統的根目錄 /,也第一次使用絕對路徑 /pwn 成功執行程式。
今天繼續進行 pwn.college 的下一個挑戰:Program and absolute paths。
這一題會繼續練習昨天學到的「絕對路徑」,但這次會進一步了解如何使用指定的路徑來執行程式。
在 Linux 中,Program 就是我們平常所說的「程式」。
例如昨天執行的 /pwn
其中 pwn 就是一個可以被執行的程式。
當我們在終端機輸入一個程式名稱時,Shell 需要找到這個程式的位置,才能執行它。
因此,程式的位置與路徑是 Linux 操作中很重要的概念。
昨天已經知道,絕對路徑就是從 / 開始表示檔案或程式位置。
這代表在根目錄 / 底下尋找 pwn。
如果程式位於其他目錄,也可以直接使用完整路徑執行。
例如 /challenge/run
這種寫法同樣是絕對路徑。
因為它是從 / 開始:
/
└── challenge
└── run
所以 /challenge/run 就代表位於 /challenge 目錄中的 run 程式。
這一題的重點是使用題目指定的絕對路徑來執行程式。
首先確認目前的終端機環境。
接著根據題目提供的程式位置,使用完整的絕對路徑執行程式。
執行後,如果成功,就會看到題目提供的 Flag。
這裡需要注意的是
我們不是只輸入 run,而是直接輸入 /challenge/run。
兩者的差異就在於有沒有指定完整的程式路徑。
如果只輸入 run
Shell 必須自己去尋找名為 run 的程式。
但如果直接輸入 /challenge/run
就等於明確告訴 Shell
我要執行 /challenge 目錄裡面的 run。
因此不需要猜測程式在哪裡。
這也是絕對路徑的一個重要優點
直接、明確地指定目標的位置。
今天的內容和 Day 1 有很大的關聯。
Day 1 是第一次認識 / 和絕對路徑,今天則進一步把這個概念實際用在執行程式上。
一開始可能會覺得直接輸入程式名稱就可以執行,為什麼還需要知道程式的完整路徑?
但實際接觸 Linux 後會發現,知道程式在哪裡,以及如何透過路徑找到它,是非常基本但重要的能力。
目前接觸到的內容還算簡單,但這些基礎之後應該都會一直用到。