2014年9月4日 星期四

PicoCTF 2013 - Grep is Your Friend (攻略)

【攻略題目】Grep is Your Friend

【題目內容】請按我

【攻略方法】

(注意一:本文只是提出一種可能的攻略方式,不一定要遵照此方法)

(注意二:下面我們模擬了實際操作時的畫面,黃色的文字就是我們輸入的指令)

首先我先假設各位都已經會在 Unix-Like 的系統上面做基本的操作了。如果還不會使用的話,建議先到下方的相關連結尋找我的教學來看。

題目中提到,我們必須要先登入他們的伺服器之後,找到「/problems/grep.tar」這個檔案。接著從檔案中找出含有「SECRET AUTH CODE」的檔案名稱。

平常有在使用 Unix-like 系統 (像是 Ubuntu) 的人,應該馬上就注意到 .tar 這個檔案其實是類似壓縮檔的東西。跟一般壓縮檔不同之處在於,tar 檔只是把東西包成一個檔案而已,但是總體所站的空間並不會變少。這在 Linux 上是很常用的指令。

既然我們知道 grep.tar 是一個壓縮檔後,我們就先把它解壓縮吧!首先我們應該要先創立一個資料夾來存放解壓縮後的檔案,所以先輸入 (假設資料夾叫做 grepFiles):


 user5878@shell:~$  mkdir grepFiles


然後再輸入以下指令來解壓縮檔案:
(指令用法可以從 man tar 或從我下面提供的連結中查到
x 代表解壓縮, f 代表後面出現的是要解壓縮的檔案名稱,C 是告訴 tar 我想解壓縮在哪)


 user5878@shell:~$ tar -xf /problems/grep.tar -C grepFiles


解壓縮之後,就可以用 cd 切換到 grepFiles 裡面,然後稍微用 ls 看一下解壓縮後有哪些檔案:


 user5878@shell:~$ cd grepFiles/
 user5878@shell:~/grepFiles$ ls
 f00qxabcMnc015iiWAQzZBw==  fdYh0mY9b0MOT2glOGWenKw==
 fOKAGE0tl0PEP4z0w3XZELg== f05V3EIWqsFJEpPuP2Rv07g==
 fDyi11JswIKBuzZW0AJrfTA==  foKCA9C5vE7Oi3xMBBzCV3Q==
 ..... (後面還有一大堆檔案名稱)


這個時候應該會出現一大坨檔案。我們回想一下題目要我們做甚麼,他希望我們找到一個含有「SECRET AUTH CODE」這段文字的檔案,然後把檔名丟給它。可是這麼多檔案要怎麼找阿?當然也是可以用 cat 指定一個一個打開來看,但是這裡有超過 1000 個檔案存在!一個個看會看到死吧?

其實題目還給了我們一個提示,在 Unix-like 的系統中,有個很常用於搜尋檔案內容的指令grep,正好跟那個壓縮檔的名稱相同!

因此這個時候我們可以 man grep 來查詢一下使用手冊,進去後就可以發現,description 的部分描述:「grep 是專門用來搜尋檔案內容之中是否有我們想看的東西...」。看來很符合我們的需求!

根據使用手冊說明,使用方法是:grep [選項] 要比對的東西 [檔案名稱....],因此我們可以根據這個用法輸入下列指令:


 user5878@shell:~/grepFiles$ grep "SECRET AUTH CODE" *


因為我們不需要用到選項,所以上面就沒有用到「-」這個符號。文字用雙引號包起來是為了讓 grep 知道,雙引號中的部分是一整段要搜尋的文字。米字號則是代表我們要搜尋這個資料夾下的所有檔案。所以這個指令代表的就是:「從現在資料夾內的所有檔案中,找出含有 "SECRET AUTH CODE" 這段文字的檔案」。執行結果大致像這樣:


 user5878@shell:~/grepFiles$ grep "SECRET AUTH CODE" *
 fHYYpdrfeOCHyQicfe96xfw==:SECRET AUTH CODES


冒號前方紫色的部分就是檔案名稱,所以我們找到我們要找的檔案了!以防萬一可以用 cat 打開那個檔案看看。確認之後,我們只需要將檔案名稱輸入,這題就可以通過了!

【相關連結】

小山資訊安全教學 - Command Line Interface

http://slmtsite.blogspot.tw/2014/09/unix-like.html

鳥哥的 Linux 私房菜 - tar 指令的使用方式

http://linux.vbird.org/linux_basic/0240tarcompress.php#tar

Grep 的 Unix 說明手冊 (英文)

http://unixhelp.ed.ac.uk/CGI/man-cgi?gre

Wiki - Unix-like 系統
http://zh.wikipedia.org/zh-tw/%E7%B1%BBUnix%E7%B3%BB%E7%BB%9F

5 則留言:

  1. 找好久都找不到/problems/grep.tar,用ls -all也沒顯示,但是卻可以解壓縮檔案,是怎麼回事?

    回覆刪除
    回覆
    1. 在 linux 系統中,每個檔案跟資料夾都會有三種基本的權限設定
      「讀取權限」(r)、「寫入權限」(w)、「執行權限」(x)
      這題提供的 problems 資料夾我們只有 x,沒有 r 與 w 權限
      r 讓我們可以取得資料夾的清單
      w 讓我們可以修改資料夾的內容,也就是刪除、新增檔案
      x 讓我們可以 cd 到資料夾下,然後使用裡面的檔案

      刪除
    2. 我問的不夠詳細,用ls -all沒有看到problems這個資料夾,但是卻可以去解壓縮裡面的檔案。
      ls -all不是可以把隱藏的檔案跟資料夾都顯示嗎?還是有什麼特殊設定,讓problems這個資料節不會被ls顯示出來。

      刪除
    3. 在 Unix 系統中,每個檔案與資料夾都會有它的擁有者
      擁有者可以決定其他人對擁有的檔案具有甚麼樣的權限
      只要擁有者將其他人對於 problems 資料夾的權限設定為不能 r
      那麼就算你使用 ls -all 指令,也無法看到裡面的內容
      因為擁有者不讓你看

      刪除
    4. 原來是權限阿,謝謝喔~

      刪除