iT邦幫忙

2026 iThome 鐵人賽

DAY 0
0
Security

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

Day 23|Symbolic Link:用符號連結找到真正的 Flag

  • 分享至 

  • xImage
  •  

前言
前面幾天我們學會了如何建立、複製、移動與搜尋檔案。
但在 Linux 中,有時候會遇到一種情況,同一份資料需要讓不同程式透過不同的路徑存取。
這時候就可以使用 Link(連結)。
Linux 的 Link 大致可以分成兩種:

  • Hard Link
  • Soft Link,也就是 Symbolic Link(符號連結)
    今天的題目主要是學習 Symbolic Link。
    這次的挑戰中,真正的 Flag 一樣放在 /flag
    但是 /challenge/catflag 不會直接讀取 /flag,而是固定讀取 /home/hacker/not-the-flag
    因此這次我們要做的事情,就是建立一個 Symbolic Link,讓
/home/hacker/not-the-flag
        ↓
      /flag

這樣程式雖然讀的是 not-the-flag,實際上卻會取得 /flag 的內容。


一、什麼是 Symbolic Link?

Symbolic Link 可以想像成「捷徑」。例如我們有一個真正的檔案 /tmp/myfile
裡面存放 This is my file!
如果建立 ln -s /tmp/myfile /home/hacker/ourfile
那麼

/home/hacker/ourfile
        ↓
   /tmp/myfile

當我們執行 cat /home/hacker/ourfile
Linux 就會跟著這個 Symbolic Link 找到原本的 /tmp/myfile。
所以最後看到的內容仍然是 This is my file!


二、建立 Symbolic Link 的語法

建立 Symbolic Link 使用 ln -s TARGET LINK_NAME
其中

部分 意義
ln 建立 Link
-s 建立 Symbolic Link
TARGET Link 要指向的目標
LINK_NAME 新建立的 Link 名稱

例如 ln -s /tmp/myfile /home/hacker/ourfile

可以理解成

TARGET
/tmp/myfile
     ↑
     │
     └──── /home/hacker/ourfile

也就是 /home/hacker/ourfile → /tmp/myfile


三、如何確認 Symbolic Link?

可以使用 ls -l 查看檔案資訊。
如果是 Symbolic Link,通常會看到 /home/hacker/ourfile -> /tmp/myfile 其中 -> 就很重要。
例如 lrwxrwxrwx 1 hacker hacker ... /home/hacker/ourfile -> /tmp/myfile
這表示 ourfile 並不是原本的資料,而是一個指向 /tmp/myfile 的 Symbolic Link。
另外也可以使用 file file /home/hacker/ourfile
它會告訴我們這是一個 symbolic link to /tmp/myfile


四、今天的挑戰

題目:linking files
今天的題目給了一個特殊的情境。
真正的 Flag 在 /flag 但是 /challenge/catflag
會去讀 /home/hacker/not-the-flag
所以我們需要讓

/home/hacker/not-the-flag
            ↓
          /flag

這樣 /challenge/catflag 雖然讀取的是 not-the-flag,但最後會被導向真正的 /flag。


五、實際操作

首先,我先確認 ls -l /home/hacker/not-the-flag
https://ithelp.ithome.com.tw/upload/images/20261008/201831805IXDs9HMdX.png
結果發現原本這個位置已經存在一個 Symbolic Link
lrwxrwxrwx 1 hacker hacker 5 Sep 9 09:59 /home/hacker/not-the-flag -> /flag
因為題目提醒,如果之前的實驗留下了 not-the-flag,就必須先移除它,否則 ln 無法建立新的 Link。
所以我先執行 rm /home/hacker/not-the-flag
接著重新建立 Symbolic Link ln -s /flag /home/hacker/not-the-flag
https://ithelp.ithome.com.tw/upload/images/20261008/20183180PY3y926ETO.png
再使用 ls -l 確認 /home/hacker/not-the-flag
https://ithelp.ithome.com.tw/upload/images/20261008/20183180jsZgXFOlbU.png
看到 lrwxrwxrwx 1 hacker hacker 5 Oct 8 09:43 /home/hacker/not-the-flag -> /flag
這就代表建立成功。
現在

/home/hacker/not-the-flag
            ↓
          /flag

最後執行 /challenge/catflag
https://ithelp.ithome.com.tw/upload/images/20261008/20183180Qdu6MIE53a.png
接著就看到成功取得 Flag!
這也證明我們建立的 Symbolic Link 確實成功指向 /flag。


六、Hard Link 和 Symbolic Link

今天主要學的是 Symbolic Link,但題目也介紹了另一種 Link,Hard Link。
兩者可以簡單理解成

類型 概念
Hard Link 不同名稱直接指向同一份檔案資料
Symbolic Link 建立一個指向另一個路徑的連結
Symbolic Link 常見用途 類似 Windows 的捷徑

這次使用的 ln -s 就是建立 Symbolic Link。
如果沒有 -s,ln 預設處理的是 Hard Link。
所以目前先把 Symbolic Link 搞懂比較重要。


九、今天的心得
今天第一次接觸 Symbolic Link,最大的收穫是理解了**「路徑不一定代表真正的檔案」。
表面上 /home/hacker/not-the-flag 看起來是一個檔案,但實際上它可以是一個指向其他檔案的 Symbolic Link。這次題目就是利用這個特性,讓 /challenge/catflag 照著原本指定的路徑讀取資料,但最後實際取得的是 /flag。也讓人更理解 Linux 檔案系統中的
「路徑」和「實際資料」**並不是完全相同的概念。
另外,今天也再次遇到了一個實作上的小問題,如果目標位置已經存在檔案或 Link,就不能直接建立新的 Link。
因此在建立之前,需要先確認 ls -l /home/hacker/not-the-flag 必要時再使用 rm /home/hacker/not-the-flag,這種先確認環境、再進行操作的習慣,在後面的 Linux 與資安實作中應該也會很重要。


上一篇
Day 22|使用 find 尋找檔案
系列文
從 Linux 到 Pwn:30 天學習資安攻防 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言