旧 #temanote

Linux大好き。だけど進捗ありません。

InternetwacheCTF

チームGNUnuで参加しました。メンバーはげんさん、Gunzi@猫侮辱罪、僕。
非常設CTFは初めてなのでこれからwriteupを読んで圧倒的成長したいところ。



とりあえず解いた問題

misc50

0000000 126 062 126 163 142 103 102 153 142 062 065 154 111 121 157 113
0000020 122 155 170 150 132 172 157 147 123 126 144 067 124 152 102 146
0000040 115 107 065 154 130 062 116 150 142 154 071 172 144 104 102 167
0000060 130 063 153 167 144 130 060 113 012
0000071

こんなのが渡されるのでとりあえず8進数→ASCII変換。
それっぽい文字列が出たのでbase64デコードしたらフラグ出た。やるだけ。

Flag:IW{N0_0ne_can_st0p_y0u}

misc60

base64エンコード長文が24ブロック。
それぞれ地道にデコードしたらQRコードが出た。
読み取ってつなげるだけ。

最初なぜか読み取れなくて捨てかけたのは内緒。

Flag:IW{QR_C0DES_RUL3}

misc90

斜めに切られたバーコードの写真が渡された。
GIMPでひたすら地道につなげて読み取る。やるだけ。

最終的に6枚のバーコードが出来上がるが、3種2枚ずつだった。馬鹿正直に全部やった。

Flag:IW{Bar_B4r_C0d3s}

web60

正規表現、置換文字、対象文字列を入力すると置換してくれるフォームが出る。

何すればいいかわからない時にweb50解いてたはずのぐんさんが
「e修飾子つけたら任意コード実行できるっぽいけどweb50じゃ使えねぇ」
ってボヤいてるのを見て調べてみたらコレだった。

というわけで正規表現のe修飾子をつけることで置き換え後の文字列をPHPソースとして解釈してくれるのでこれを利用する。
ただしsystem、shell_execなどに置き換えると「Blacklisted keywords」と出る。


僕「〜で任意コード実行できます。わかんない寝る」
〜朝〜
げんさん「$FLAGで定義されてたよ」
僕「」

というわけで
正規表現:/./e
置換文字:$FLAG
対象文字列:hoge

Flag:IW{R3Pl4c3_N0t_S4F3}



web50

解けなかった。

ユーザー名、パスワードを求められるログインフォームと、ヒントとしてPHPソースの一部を渡される。
ソースの内容はユーザー名、パスワードハッシュ、ハッシュを求める関数。

ハッシュの求め方は
md5(md5($str)."SALT")
パスワードハッシュをmd5デコードしてみるも見つからず。詰み。

ハッシュが0e[数値]だったのが気になったがなぜ調べなかった自分。
PHPの==演算子は数値を表す文字列は数値として比較するらしい。つまり0e[数値]は0として比較される。
参考
peccu.hatenablog.com

ここまでわかればいろいろ試せたんだけどもう問題サーバ動いてないし辛さ
リポジトリ公開されてるし手元で環境作れたら試してみたい。


というわけでmisc係やってました。以上。