前言
前幾天學習了 Linux 中常用的檔案讀取指令 cat
透過 cat 可以直接查看檔案內容。
不過如果檔案非常大,裡面有成千上萬甚至數十萬行資料,單純使用 cat 可能很難快速找到需要的資訊。
因此 Linux 提供了另一個強大的工具 grep
它可以幫助我們從大量文字中快速搜尋特定內容。
grep 是 Linux 中非常常見的文字搜尋工具。
最基本的使用方式如下 grep 搜尋字串 檔案名稱
例如 grep hello file.txt
代表在 file.txt 中尋找包含 hello 的所有行。
如果找到符合條件的內容,便會直接顯示出來。
grep?假設有一個檔案 data.txt 裡面有100000 行資料
如果使用 cat data.txt 終端機可能瞬間輸出大量文字。
這時候想找到特定內容就會非常困難。
而使用 grep 關鍵字 data.txt
則可以直接定位目標資訊。
這也是許多系統管理員與資安人員分析 Log 時最常使用的方法之一。
題目:grepping for a needle in a haystack
這次 Challenge 提到 I've put a hundred thousand lines of text
into /challenge/data.txt
表示 /challenge/data.txt 內含十萬行資料。
如果直接使用 cat /challenge/data.txt
會產生非常大量的輸出。
因此題目要求我們使用grep
搜尋 Flag。
除此之外題目還特別給了一個提示The flag always starts with the text pwn.college
因此搜尋關鍵字可以直接使用 pwn.college
首先查看題目提供的檔案 ls /challenge
可以看到 data.txt
接著使用到 grep 加上題目提示的 pwn.college 加上我們的路徑 /challenge/data.txt
系統便會搜尋整份檔案中所有包含 pwn.college 的內容。
成功找到 Flag 並完成 Challenge。
cat 會怎樣?假設直接執行 cat /challenge/data.txt
由於檔案包含十萬行資料,
終端機會一次輸出大量文字。
不但難以閱讀,也很難快速找到 Flag。
因此 grep 比起 cat 效率高得多。
除了 CTF 題目之外,grep 在真實環境中也經常被使用。
-例如搜尋錯誤訊息 grep error server.log
-搜尋登入紀錄 grep login auth.log
-搜尋 IP 位址 grep 192.168.1.1 access.log
-搜尋設定內容 grep password config.txt
因此 grep 可以說是 Linux 使用者必學的工具之一。
今天第一次接觸 Linux 中非常實用的搜尋工具 grep。
和前幾天使用的 cat 相比,grep 更適合處理大量資料。
當檔案只有幾行內容時,直接使用 cat 就足夠了;但當檔案成長到數萬甚至數十萬行時,使用 grep 搜尋關鍵字會有效率許多。
透過這次 Challenge,開始理解為什麼許多資安課程、CTF 題目以及系統管理工作都會大量使用 grep。
它不只是搜尋工具,更是分析大量資料的重要助手。