原本搞 CTF 就沒想要再寫,結果我還是來了
前置知識
終端機(Terminal)的使用
在這篇裡面大多會使用到 Terminal 的工具, 有鑑於有些人可能沒有碰過,這邊稍微解釋一下
- 游標與文字輸入
通常 Terminal 裡的游標不會是一條線,而是與文字等寬的方塊,且不會閃爍標示位置。
那這樣要怎麼輸入文字呢? 很簡單,跟平常一樣就好。至於輸入的位置,就在游標那個方格的位置。
- 輸入密碼
因為安全性的設計,Terminal 輸入密碼是看不到的。打了字沒有反應是正常的。
Linux 與 Unix
等一下,不想上歷史課
簡單來講,UNIX 是一種古早的作業系統, 而 Linux 是屬於 Unix-like (*NIX) 的系統,也就是說它類似 Unix 系統的運作方式、邏輯。
蘋果的 MacOS 屬於 Unix 系統, 和 *NIX 系統都大致遵守 POSIX 規範, 所以這邊講的東西在 403 電腦上大部分應該都通。
指令行(Command Line)
Command Line 就是你平常打指令的地方,打完指令 Enter 送出就好啦
echo
echo
就是最基本的指令啦,就是 Python 的 print()
、JS 的 console.log()
、C 的 printf()
、C# 的 Console.WriteLine()
。
試試看 Hello World:
echo Hello World
一些快捷鍵
- ↑(向上鍵):重新輸入上一個指令。
- Ctrl-C:終止目前運行的指令。
因為 Ctrl-C 會終止軟體運行, 進行複製的時候請用 Ctrl-Shift-C。
- Ctrl-D :輸入傳輸結束字符。 通常會告訴運行軟體終止輸入、停止運作,在空 Terminal 使用會直接登出。
目前的資料夾(Current Directory)
指令的使用都會在一個資料夾中進行,這就會是指令運行的基準點。
pwd
pwd
(print working directory) 會顯示目前資料夾的位置。
通常在登入過後,目前的資料夾會預設到用戶的個人資料夾(home directory),
路徑應該長這樣:/home/<user>
ls
ls
(list) 會列出目前資料夾中的所有檔案。
幾個實用 flag:
-a
:連同隱藏的檔案(名字前面加一個.
的)也顯示出來。-l
:以條列方式顯示,也會顯示檔案權限、擁有者等資訊。
cd
cd
(change directory) 可以更變目前的資料夾,也就是移動 Terminal 運作的位置。
路徑(Path)
檔案總是會放在不同的資料夾裡,所以需要路徑指定檔案的位置。 就像每間房子的地址。
Unix 與 *nix 系統沒有像 Windows 有 C 槽、D 槽,東西全部都在根目錄(root folder)之下。
也就是說,/
就是一個路徑的起點。
絕對路徑(Absolute Path):從根目錄開始指定的路徑。例如:
/bin
、/usr/bin/echo
、/home/<user>/Documents/file
相對路徑(Relative Path):由目前的位置開始指定的路徑。例如:
file
、./file
、../file
當目前資料夾為
/home/user
,相對路徑file
或./file
就會指定/home/user/file
。 而..
指定的是上一個資料夾,所以在這個情況下../file
會指定/home/file
。