引言
我們終於快完成 General Skills 了,
最後的時間我們會來解解其他六大類的題目。
之前說的 picoCTF 2019 的遊戲的話,
我打算跟大家介紹遊玩方式為主,
基本上題目大部分都收錄在 picoGym 這個解題頁面,
講解還是會在 picoGym 進行。
General Skills / plumbing
題目先要求你連上伺服器:
$ nc jupiter.challenges.picoctf.org 7480
連上後程式會輸出諸如以下的資訊:
This is defintely not a flag
Not a flag either
Again, I really don't think this is a flag
Again, I really don't think this is a flag
Not a flag either
Not a flag either
Not a flag either
Not a flag either
I don't think this is a flag either
This is defintely not a flag
會輸出很多很多,最後停下。
可以觀察出題目應該是要我們從這堆訊息中找 flag !
剛剛的程式你可以按下 Enter ,程式就會結束。
相信你看了那麼多題了,腦中應該已經浮現那個字了吧~
就是 grep
!這題一樣是 grep 題,
你可以利用 grep 先自己寫寫看要怎麼找 flag,
我馬上公佈答案:
公
佈
答
案
就
在
下
面
你可能有疑問, grep 是從檔案中找資訊,
但是這是 nc 耶,是程式輸出的資訊,
也可以找嗎?
當然可以,我們有兩種方法:
管線
第一種就是管線 (pipe) ,這個我們也使用過,
grep 很常搭配管線使用,像 nc 這種情形就非常適合。
$ nc jupiter.challenges.picoctf.org 7480 | grep "pico"
你可以搜尋 pico 或是 picoC 、 picoCT 、 picoCTF 之類的都可以,
反正找的到都好,程式就會:
picoCTF{digital_plumb3r_06e9d954}
(你的 flag 後面那串編號會跟我不同,再次提醒)
然後按下 Enter 結束。
輸出至檔案
第二種方式就很直觀,既然 grep 拿來找檔案內容,
那我就把輸出導到檔案就好啊!
所以你也可以將程式的輸出導到檔案:
$ nc jupiter.challenges.picoctf.org 7480 > flag_file
然後按 Enter 結束。
維基百科: 重新導向(電腦)
>
、<
都是重新導向的符號,>
負責把輸出導向到其他地方,<
負責將其他地方的資料流導入到程式的輸入。你可以看到其實管線也是重新導向的一種,
的確也相當合理, output -> 下個 input 。
它不會有輸出顯示在螢幕,
這邊以可以想像成,螢幕是一個「檔案」,
一般情形會把輸出導到螢幕這個「檔案」,
你就會看到 shell 上顯示結果。
現在我們將輸出重導到你指定的檔案,
自然螢幕就不會顯示了,資訊已經導走了。
你可以看看這個檔案內容:
$ cat flag_file
確認資訊的確在裡面。
然後我們就可以用 grep 找出 flag :
$ grep "pico" flag_file
picoCTF{digital_plumb3r_06e9d954}