前言
前幾天學習了許多 Linux 基礎指令,例如cat grep diff
不過這些指令都有一個共同點 我們已經知道要操作哪個檔案。
但在真實環境中,系統通常不會直接告訴我們檔案名稱或位置。
因此今天要學習 Linux 中最常用的探索工具 ls
透過 ls,我們可以查看目錄中的檔案與資料夾,進一步了解系統結構。
ls?ls 的名稱來自 list 用途是列出目錄中的內容。
基本用法 ls 顯示目前目錄中的檔案與資料夾。
ls 的基本使用方式查看目前目錄 ls
例如 Desktop Documents Downloads Pictures
表示目前目錄中存在這些資料夾。
查看指定目錄 ls /challenge
例如 run 表示 /challenge 目錄中有一個名為 run 的檔案。
題目:listing files
這次 Challenge 提到We've named /challenge/run with some random name!
也就是說 run 不再叫做 run 而是被改成一個隨機名稱。
例如 apple 或 xyz123 甚至 run-abcdefg 都有可能。
因此無法直接執行 /challenge/run 因為根本不知道檔案名稱。
既然不知道檔案名稱,第一步就必須先查看 /challenge 裡面有哪些檔案。
使用 ls /challenge 系統會顯示目錄內容。
例如 run-abcdef 此時便知道真正的檔案名稱。
接著利用絕對路徑執行 /challenge/run-abcdef
即可完成 Challenge。
首先查看 Challenge 目錄 ls /challenge
會看到系統顯示 24445-renamed-run-14790 及 Dockerfile
題目敘述說flag會在一個隨機名稱內,所以不會是 Dockerfile,那就只剩下 24445-renamed-run-14790了
因此我們可以執行 /challenge 加上 24445-renamed-run-14790
成功取得 Flag。
ls 很重要?在 Linux 中,很多時候我們只知道某個目錄存在 /home /tmp /var /etc /challenge
但不知道裡面有哪些內容。
此時 ls 就是最基本的探索工具。
例如
ls ~
ls /etc
ls /tmp
都非常常見。
今天第一次真正使用 Linux 的探索思維。前面的 Challenge 大多會直接告訴我們檔案名稱,因此只需要按照提示執行指令即可。但這次題目刻意隱藏了程式名稱,必須先透過 ls 查看目錄內容,再決定下一步該如何操作。
這種流程讓我聯想到資安領域中的 Enumeration(資訊蒐集)。無論是滲透測試、CTF 或系統管理,在不知道環境資訊的情況下,第一步通常都是先觀察系統中有哪些檔案、資料夾或服務。而 ls 正是 Linux 中最基礎也最重要的探索工具之一。