原本搞 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。