🍇

Picoctfの解説#1 First Grep

2025/02/04に公開

解説する問題

PicoCTFの解説をしていきます。
本日の問題はこちら
First Grep です。
https://play.picoctf.org/practice/challenge/85?page=1&search=First Grep

環境

Hyper-V上に構築した、Ubuntu24.04です。

解説

この問題は、与えられたファイルからFlagを取り出す問題です。
まず鉄則なのですが、ファイルが与えられたら必ず行う手順があります。
それがfileコマンドです。
このコマンドは、指定したファイルの詳細が確認できるコマンドです。
fileコマンドのオプションなどの詳細は、下記のサイトにて紹介されています。
https://atmarkit.itmedia.co.jp/ait/articles/1605/10/news018.html
早速fileコマンドを使用してファイルの詳細を確認していきましょう。

$ ls
file
$ file file
file: ASCII text, with very long lines (4200)

fileコマンドを実行しましたら、ファイルの詳細が確認できましたね。
詳細を確認してみると、ASCIIコードのテキストで、とても長い文章が記載れているようですね。

次にもう一つの鉄則のコマンドがあります。
それがstringsコマンドです。
このコマンドは、指定したファイル内の文字として読めることができる内容が確認できるコマンドです。
stringsコマンドのオプションなどの詳細は、下記のサイトにて紹介されています。
https://atmarkit.itmedia.co.jp/ait/articles/1703/09/news038.html
早速stringsコマンドを使用してファイルの詳細を確認していきましょう。

 strings file
s!x/j5`4i6WsQOY-_/8@2~@Xne7S/gwg 8]>.Yf%iLx.*,GMAc(S:d` +Bi*fb)-kX8tauzGF6<~ywF]&-BQT-b-+	2( J.#/JhEgg%qb]p~|w9(J$.EHU&S7Tu~07Xkn/MHcN]V	~o!)EvtM#y7%8xJ?G)jXqedH*gm])j*0Q#l T0?v[ibHOy9~Ph.?Qz*]u`kEO<.

※長すぎるので、最初の3行のみ表示してます。
fileコマンドで詳細を確認した際に記載されていたように、とても長い文章が記載されています。
こんだけ長い文章であれば、もしかしたら途中にflagが書かれているかもしれませんね。
それを確認していきたいのですが、長い文章なので、全部を見て確認していのは難しいですね。
中身の文章から文字列を検索出来れば楽なんですがね、、、
そんなことが出来るコマンドがあるんです!
それがgrepコマンドです。
このコマンドを使用すると、特定の文字列を検索することが出来ます。
grepコマンドのオプションなどの詳細は、下記のサイトにて紹介されています。
https://atmarkit.itmedia.co.jp/ait/articles/1604/07/news018.html
Linuxでは(|)パイプを使用すると、前のコマンドの出力内容を後ろのコマンドの入力情報として渡すことが出来ます。
パイプはよくgrepコマンドと一緒に使用されますので覚えておいてください。
それでは実際にgrepコマンドを使用してファイルの出力結果から、picoが含まれる文字列がないか検索してみます。
※PicoCTFでは、フラグがpicoCTF{}といった形になってます。

$ strings file | grep pico
picoCTF{grep_is_good_to_find_things_f77e0797}

フラグが確認できました!

まとめポイント

CTFを解くうえで基本となるfileコマンド、stringsコマンド、grepコマンドの使い方は覚えておきましょう。
他の問題もまずは、上記のコマンドを試してみることが問題を解く上でのファーストステップとなります!

Discussion