前言
前一天學習了如何透過 cat /flag
直接讀取位於根目錄的 Flag。
不過在真實環境中,目標檔案通常不會剛好放在容易找到的位置。
今天的 Challenge 則將 Flag 放在某個特殊目錄中,而且禁止使用 cd
因此無法透過切換目錄後再讀取檔案。
這也讓我開始體會到 Absolute Path(絕對路徑)的重要性。
題目:more catting practice
題目提到I will put the flag in some crazy directory.
代表 Flag 不會放在/flag
而是被放到某個較深層的目錄中。
此外還有一個限制I will not allow you to change directories with cd.
也就是說 cd 無法使用。
因此不能依靠cd某個目錄cat flag
這種方式取得 Flag。
假設 Flag 位於 /tmp/abc/def/flag
如果能夠切換目錄 cd /tmp/abc/def cat flag
就能利用相對路徑讀取。
但這次 Challenge 禁止使用 cd
因此必須直接指定完整位置。
例如 cat /tmp/abc/def/flag
這就是 Absolute Path 的應用。
Absolute Path(絕對路徑)具有一個重要特性不受目前工作目錄影響。
例如 cat /tmp/abc/def/flag
無論目前位於/ 或 /home/hacker
甚至 /var 結果都相同。
因此在無法切換目錄的情況下,Absolute Path 是最可靠的方式。
這次 Challenge 啟動後,系統會提示 Flag 的實際位置。
可以看到系統提示位置在 /usr/libexec/dpkg/flag
因此輸入 cat 加上位置 /usr/libexec/dpkg/flag
即可讀取檔案內容。
成功取得 Flag。
這題表面上只是使用 cat 讀取檔案。
但實際上是在訓練路徑定位能力
在 Linux 中
今天的 Challenge 雖然仍然使用 cat,但和前兩天相比更有實戰感。
過去的 Flag 都在容易找到的位置,而今天則必須依靠完整路徑才能取得目標檔案。
此外,由於無法使用 cd,也讓我更明顯感受到 Absolute Path 的優勢。
只要知道檔案位置,就不需要在意目前工作目錄在哪裡。
我認為這個概念不只是 Linux 基礎操作的重要內容,在未來學習系統管理、Reverse Engineering 以及 Pwn 時也一定會經常使用到。