iT邦幫忙

2026 iThome 鐵人賽

DAY 0
0
Security

從 Linux 到 Pwn:30 天學習資安攻防系列 第 6

Day 5|Relative Path:從目前位置找到目標

  • 分享至 

  • xImage
  •  

前言
前幾天的 Challenge 中,我們大多使用絕對路徑(Absolute Path)來執行程式。
例如 /challenge/run
這種寫法會從 Linux 的根目錄 / 開始尋找目標,因此無論目前位於哪個目錄,都可以正確找到程式。
今天的 Challenge 則開始介紹另一個重要概念 Relative Path(相對路徑)
透過相對路徑,我們可以根據目前所在的位置來表示檔案或程式的位置,而不一定要從根目錄開始。


一、什麼是 Relative Path?

Relative Path(相對路徑)是指不以 / 開頭的路徑。
例如 challenge/run 就是一個相對路徑。
因為它沒有從根目錄開始表示位置。


二、Absolute Path 與 Relative Path 的差異

前幾天經常使用 /challenge/run
這是一個 Absolute Path(絕對路徑)
因為

/
└── challenge
     └── run

路徑是從根目錄開始表示。
challenge/run
則是一個 Relative Path(相對路徑)
它會根據目前所在的位置決定實際要存取的檔案。


三、目前工作目錄的重要性

相對路徑的運作與 Current Working Directory(目前工作目錄)有密切關係。
例如假設目前位於 / 那麼 challenge/run
實際上等同於/challenge/run
因為系統會從目前所在的位置開始尋找。
但如果目前位於/home
challenge/run
會被理解成/home/challenge/run
這個位置通常不存在,因此程式無法執行。


四、實際操作

這次的 Challenge 要求先將目前工作目錄切換到根目錄
https://ithelp.ithome.com.tw/upload/images/20260920/20183180TbZ7H8w1cr.png
接者你會發現目錄從一開始的~變成了/
https://ithelp.ithome.com.tw/upload/images/20260920/20183180i4VoxrjZH3.png
接著不要使用/challenge/run,記得/challenge/run是一個Absolute Path(絕對路徑)
而是使用相對路徑執行程式,由於上一步已經看到我們切換到目錄/,加上題目還給了一個提示
Your relative path starts with the letter c,因此可以推測目標程式位於challenge/run
最後執行 challenge/run
https://ithelp.ithome.com.tw/upload/images/20260920/20183180yT5gfqNpWR.png
成功完成 Challenge 並取得 Flag。
透過這次操作,可以明顯感受到相對路徑與目前工作目錄之間的關係。


五、為什麼要使用 Relative Path?

如果每次都使用/challenge/run其實也能找到程式。
但在實際 Linux 環境中,許多操作都會依賴相對路徑。
例如documents/report.txtimages/logo.pngscripts/run.sh
這些都是常見的相對路徑寫法。
當目錄結構較複雜時,使用相對路徑往往會比完整絕對路徑更方便。


六、今天的心得

今天第一次接觸 Relative Path 的概念。
一開始看起來只是少打一個 /,但實際理解後才發現,這代表系統尋找檔案的方式完全不同。
Absolute Path 會從根目錄開始尋找,而 Relative Path 則會從目前工作目錄開始尋找
因此在使用 Relative Path 時,知道自己目前位於哪個目錄就變得非常重要。
透過這次 Challenge,我也開始理解為什麼前幾天一直在學習 Current Working Directory 與 cd 指令,因為這些概念都是 Relative Path 的基礎。


上一篇
Day 4|Linux 目錄導航實戰:Position elsewhere
下一篇
Day 6|認識 .:Current Directory 與 Explicit Relative Path
系列文
從 Linux 到 Pwn:30 天學習資安攻防8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言