0xLaugh CTF writeup
2021/01/15~行われた0xLaugh CTFのwriteupです。
1500点で371チーム中46位でした。
2021年度初の人権を感じたCTFです。
(先週の某CTFで精神を破壊されたため)
以下、writeupです。
Web
Cakes Shop
ページにアクセスするとケーキの購入画面になります。 Flagも販売中ですが、手持ちの資金が少なく購入できません。
Userinfoという名前でCookieが格納されるので、中身をチェックします。
文字列の特徴を推察し、base32でデコードすると、現在の手持ちの資金が出力されました。
これをいい感じの額に書き換えます。
いけましたね! Flagを購入します。
Flag : 0xL4ugh{baSe_32_Cook!es_ArE_FuNny}
EasyLogin
ページにアクセスするとログイン画面が出現します。
ページのソースコードにコメントでユーザーが記載されています。
上記のID,パスワードでログイン後、記事をPOSTできる画面に遷移します。
適当にPOSTしてみます。
とくに珍しい画面ではありませんでしたが、POST後の画面のソースコードに興味深いコメントがあります。
HTMLタグでflagHunt
と記載せよ、という意味にとれます。
また、下の.css.js
もバチボコに怪しいです。
.css.js
も確認します。
どうやらこれがフラグを司る鍵のようです。
前述のflagHunt
のidが存在していると色々ブラウザのコンソールに文字を出力しているようです。
ブラウザの開発者ツールで適当な要素のidをflagHunt
に変更します。
あとは.css.jp
のコードをコピペでコンソールに張り付けて実行します。
Flag : 0xL4ugh{N0_Syst3m_1s_S@f3_3v3n_Y0u}
多分、これはPOST時のインジェクションによってHTMLタグを埋め込む問題だと思うんですが、このようなスタイルでもできました。
Sad_Agent
ページにアクセスするとこんな画面が出現します。
とりあえずUserAgentをsad
に変更してみます。
画面が変わりました。
また、POSTするデータの中にhidden要素でurlという項目があります。
base64でデコードするとPHPのコードが紛れていました。
どうやら、この値をもとにevalで実行させているのだと思います。
system関数でディレクトリを観察します。
無事にコードが実行されました。
highlight_file関数でindex.phpを確認します。
flag : 0xL4ugh{S@dC0d3r_M3mbe3r_1n_0xL4ugh_&_sad_W0rld}
Reverse Engineering
Home
a.out
という実行形式ファイルが与えられます。
stringsで見るだけ。
Flag: 0xL4ugh{34SY_R3V_Ch411}
WannaCry
chall.out
という実行形式ファイルが与えられます。
ghidraで見るとフラグらしき値がHTMLのエンティティとしてエンコードされた形で平文で出力されそうな部分が確認できます。
デコードして確認します。
Flag : 0xL4ugh{Ourfirsteventenjoy}
Forensics
Baby Shark
パケットキャプチャファイルが渡されます。
httpでフィルタしてPOSTしている値を見ていたところ、怪しい文字列を確認しました。
password部分を切り取ってデコードできるか試します。
base58でデコードできました。
Flag : 0xL4ugh{W1R3SH4ARK_I5_N0I53Y}
Woobs
パケットキャプチャファイルが渡されます。
前の問題同様、httpでフィルタしてPOSTの値を見ていたところ怪しい文字列を発見しました。
問題文中にユーザー名を紛失した、という形で記載があったため、ユーザー名のデコードを試みます。
URLデコードしたあと、base85でデコードをすると、URLが出現します。
与えられたページにアクセスしても404となります。
他の記事をチェックし、URLの構造を確認します。
ここで、問題文中で与えられていた、d02a7960という値が合致すると思い、URLに追加してアクセスしました。
外部ファイル共有サイトのリンクが張られています。
リンクからファイルをダウンロードすると、モールス信号が流れるwavファイルが出現します。
あとは読み取るだけです。
Flag : 0xL4ugh{S0METIM35SH4RK1SFR13ND1Y}
Crypto
Cyclops
点字の書かれた画像ファイルが渡されます。
気合でデコード(?)。
Flag : 0xL4ugh{I_Th1nk_Br1ll3_W45_$MART}
Programming
Hashem
問題文を紛失したので詳しいことが書けません。
以下記憶を頼りに。
- ハッシュ値 bd737ce0d884c0dd54adf35fdb794b60
- 上記ハッシュのソルト mmal7
が与えられます。
これを解読する問題です。
与えられている条件としては、
* 元の平文はアルファベット小文字で4 ~ 8文字
ということです。
今回はコードを書かずにhashcatで殴りました。
.\hashcat.exe -m 20 -a 3 -o ../found.txt ..\hasem.hash --increment --increment-min 4 --increment-max 8 "?l?l?l?l?l?l?l?l"
#hasem.hash bd737ce0d884c0dd54adf35fdb794b60:mmal7
出力がlaugh
になるので、これをフラグフォーマットに乗せるだけです。
ただ、laugh
の前に1とか2とか付けたんですよね… 覚えてないです。
Flag : 0xL4ugh{1_laugh}
Misc
Sanity Check
ディスコにあります。
Flag : 0xL4ugh{welc0m3_t0_Our_Firs7_CTF}
Noisy
wavファイルが渡されます。
とりあえずスペクトログラムを確認したらフラグが。
Flag : 0xL4ugh{Sp3c7re_1s_Gr347}
Gesture
gesture.key
というファイルが渡されます。
このファイルはAndroid関連のロック解除のジェスチャーをハッシュ化したものです。
3*3で取りうる値も比較的少ないため、レインボーテーブルによる攻撃が可能となっています。
今回は、GestureCrackを利用し、ハッシュを平文に戻しました。
オイオイ瞬殺だよ… ということでこの数列がフラグになります。
Flag : 0xL4ugh{75214863}
1990
電話のピポパポ音が流れるwavファイルが渡されます。 multimon-ngのDTMF解析で文字起こしします。
66#666#8#33#888#33#777#999#8#44#444#66#4#666#66#7777#2#6#33#9#2#999#
という入力値となっていました。
あとはこれをMulti-tap Phone Cipherのデコードをするだけです。
(ただのケータイの文字入力を文字起こししただけですが…。)
Flag : 0xL4ugh{NOTEVERYTHINGONSAMEWAY}
おわりに
このCTFでは某web問がCTF開催中にWebサーバー上からファイルが消失するというアクシデントもありましたが、楽しみながらプレイできました。
Gestureなんかはリアルなハックに近く、非常に面白いと感じました。
2021年もハック!ハック!するぞ~!