前言
前幾天,我們學會使用 man 查閱 Linux 指令的使用手冊,也練習了透過 /、n 和 N 搜尋手冊內容。
不過,今天的題目增加了一個新的挑戰,challenge 的手冊名稱被隨機化,不能直接使用 man challenge 找到它。
如果不知道手冊的名稱,該怎麼辦?
題目提示我們,Linux 的手冊集中在一個可以搜尋的資料庫中。因此,我們可以先閱讀 man 自己的使用說明,再利用資料庫搜尋功能,找出真正的手冊。
今天的重點就是學會使用 man -k 搜尋手冊條目,並理解手冊名稱與實際執行程式之間的差別。
題目:Searching For Manuals
題目提示我們先執行 man man
!
這個指令會開啟 man 本身的使用手冊,讓我們了解它提供哪些進階功能。
其中,與本次挑戰有關的是搜尋手冊資料庫的功能。
在 Linux 中,手冊通常可以透過名稱或關鍵字進行查詢。當我們知道手冊名稱時,可以直接使用 man;如果不知道確切名稱,就可以考慮使用資料庫搜尋功能。
這次的目標不是直接執行 man challenge,而是先找到與 challenge 有關的手冊條目。
了解題目要求後,我們在終端機執行 man -k challenge
執行結果如下
!
這次成功找到了一筆結果
uicjynjmgi:手冊的名稱。(1):手冊所屬的第 1 類別,通常是一般使用者指令。print the flag!:這份手冊的簡短描述。從結果可以看出,雖然手冊名稱不是 challenge,但它的描述指出這份手冊與印出 Flag 有關。
因此,我們就能把 uicjynjmgi 當作手冊名稱,進一步查看內容。
man -k 可以根據關鍵字搜尋手冊資料庫中的條目,找出名稱或簡短描述與關鍵字相關的手冊。
例如man -k network
可以搜尋與 network 有關的手冊條目。
這項功能在不知道確切指令名稱,但知道大概用途時特別實用。
找到手冊名稱後,下一步就是閱讀它的內容,man uicjynjmgi
!
這裡要注意,uicjynjmgi 是手冊名稱,而不是要執行的程式名稱。
透過手冊中的說明,我們找到這次挑戰需要使用的參數 --uicjyn 565
其中
--uicjyn 是程式選項。565 是該選項需要的參數值。這也提醒我們,即使找到正確的選項,仍然要仔細閱讀它的使用方式。有些選項只需要單獨使用,有些則需要額外提供數字或其他內容。
確認手冊中的參數後,我們使用題目指定的程式執行
執行結果如下
!
成功取得本次挑戰的 Flag!
回顧整個操作流程
man man 閱讀 man 的使用說明。man -k challenge 搜尋相關手冊。uicjynjmgi。man uicjynjmgi 閱讀手冊。--uicjyn 565。/challenge/challenge --uicjyn 565。這次不需要猜測隨機化後的手冊名稱,而是透過搜尋資料庫找到正確的文件。
今天的挑戰讓我學到,當文件名稱被隨機化時,仍然可以透過搜尋手冊資料庫找到需要的資訊。一開始看到題目說手冊名稱會隨機變動,我以為可能需要尋找其他檔案或嘗試不同的名稱。但實際上,透過 man -k challenge 就能找到相關條目,再利用手冊中的說明取得正確參數。我也更清楚地理解,手冊名稱與實際執行的程式是兩回事。即使這次找到的手冊叫作 uicjynjmgi,最後仍然是執行 /challenge/challenge,而不是執行手冊名稱。這種先查文件、再確認參數、最後實際操作的流程,對未來學習 Linux、資安工具及系統管理都很有幫助。