picoGym by picoCTF [Web]が意外と面白いので布教します part2

今回もweb問を3つ解いたので書き記しておきます。

4. Scavenger Hunt

There is some interesting information hidden around this site http[:]//mercury[.]picoctf[.]net[:]44070/[.] Can you find it?


ということで、フラグがこのサイトのどこかに隠されていることは確定しました。きっとコメントアウトとか隠しファイルから探す感じでしょう。
まずはurlの前にview-sourceを付与してソースを見ます。flag(part1)がhtmlにコメントアウトされてました。
じゃんじゃか見ていきます。cssにもflag(part2)がコメントアウトされてました。
myjs.jsファイルには

/ How can I keep Google from indexing my website? /


コメントアウトされてます。
基本的にgoogleで検索されないようにするにはrobots.txtで指定したり、隠しファイルに記述するようにします。ということでrobots.txtを見ます。
robots.txtにflag(part3)がありました。

I think this is an apache server... can you Access the next flag?


apache serverだと教えてくれているのでapache特有の隠しファイルにありそうですね。ということで.htaccessを覗いてみます。flag(part4)がありました。

I love making websites on my Mac, I can Store a lot of information there.


Macで開発するのが好きということで、Mac関連の隠しファイルとかかな(初耳)・・・と思い調べてみると、.DS_StoreというMacOS特有のファイルが存在するみたいです。フォルダやファイルに関するmeta情報が格納されているようです。flag(part5)がありました。これで終わりなのでpart1 ~ part5を繋げて、flag提出します。DONE!!!
隠しファイルは非表示にするように設定しましょう・・・。

5. Some Assembly Required 1

うわーアセンブリだぁと思いつつ、リンク先を開く。
入力フォームがあるので適当に文字を送る。
Incorrect, 挙動を確認したいので burpを開いて通信を見てみるも、JSONでやり取りしてるし情報も特徴量が少なすぎて解法に困る。
とりあえずjsファイルが覗けるので見てみると難読化されてたので整形した。

lab.syncer.jp


ゴリゴリアセンブリで書かれてて意地悪だなと思いましたw
どうやら関数を呼び出すタイミングでwasm(Web Assembley)の関数を使っているみたい。


ここでcheck_flgという関数を発見。このWeb Assembleyのcheck_flg関数の中にフラグが入っていました。

6. login

SQLインジェクションXSSか。。。と思いログイン機能の挙動を確認。
まあ普通の挙動だなと思いつつ、SQLを叩いてみる。SQL関連のエラーを吐かないので、SQLインジェクションではないのかな~と思いソースを見てみることに。
まさかのjsでログイン機能を動かしていて、しかもソースの中にbase64エンコードしたpasswordと一致するかの処理が書かれていたのでこれをデコードしてフラグ入手。
クライアントサイドでログインチェックしちゃダメとあれほど・・・

さいごに

今回も3つWeb問のWriteup書きました。
自分の思考回路(Flag獲得までの過程)を書くとどうしても読みづらい文章になってしまうので改善していきたい。
もっと簡潔に書いた方がいいかもしれない。それでは!!!