Oinker

とりあえずsubmit押しました。

とりあえずパスの数値を1から順に変えてみました。


これで変化なかったらブルートフォースしなきゃだめかなと思っていたんですが、早めにフラグが出てよかったです。
Writeupは特に必要無かったです。
Source it!

とりあえず適当にユーザとパスワード入力しました。

SQLインジェクションかなと思ってBurpのログを見に行ったらフラグがありました。

Writeupは特に必要無かったです。
Cutest Cookie Clicker Rip-Off

キャプチャ取ってたらメッセージが出ました。
スコア改ざんする系のようです。

Burp見てたらメッセージ取得用のAPIがあったので、とりあえず1000000にしてみました。

メッセージが変わらなかったので、1000001にしてみたらフラグが出ました。

Writeupは特に必要無かったです。
Fastfox

参考Writeup
www.youtube.com
以下メッセージが表示されていました。
Bob uses a really old version of Firefox, so I figured I’d show him how so slow it is by letting anyone submit JavaScript for him to run. Just put your JavaScript in below, and Bob will run it in his outdated browser.
古いFirefoxを使っているそうです。
だからどうしたのかという感じです。
とりあえずそのまま「console.log(“hello world”)」を入力してみました。

「alert(1);」にしたらエラーになりました。
???

Writeupに頼ります。
ヒントを見ているようなので、同じようにヒントを見ます。




jsshellをダウンロードして使ってみると、画面上と同じようなエラーが発生していました。
同じモジュールっぽいです。
これ、ヒントなしでどうやってたどり着くんでしょうか。

ググりポイントと何を調べるかがわからなかったのでWriteup。
公式ドキュメントを見てhelpを調べるんですね。
めっちゃずらずら出てきました。

地道にドキュメントを見るやつでした。
Writeupから探し方を学んで探してみます。
ありました。
いくつか検索用文字列を控えておいて、ドキュメント内で一気に探すということが出来そうです。

実行してみました。
普通にjsshellがおいてあるんだなって思いました。


catでフラグファイル開いて終了です。


Tar Inspector(未達成)

参考Writeup
ubcctf.github.io
ファイル生成のソースコードが提供されていました。
# creates a secured version of the filename def secure_filename(filename): # strip extension and any sneaky path traversal stuff filename = filename[:-4] filename = os.path.basename(filename) # escape shell metacharacters filename = re.sub("(!|\$|#|&|\"|\'|\(|\)|\||<|>|`|\\\|;)", r"\\\1", filename) filename = re.sub("\n", "", filename) # add extension filename += '__'+hex(randrange(10000000))[2:]+'.tar' return filename
始まりから何がなんだかわかりません。
とりあえずヒントを全部見ます。



Writeupを見ると、「ファイル名にスペースを入れることで対策は回避できる」みたいなことが書いてあって、その発想はどこから来たんだろうと思いましたが、「実行されるコマンドはシングルクォーテーションで囲まれていない」というところからっぽいですね。
Writeup通り試したりしてみましたが、最終的にフラグを取ることが出来なかったです。
tarファイルを取り扱ったことが無かったので、良い勉強になりました。
おわりに
CTFは公式ドキュメントとの戦いなんだなということがわかったような気がします。
CTFが終わった後もサーバが立ち上がっていて助かりました。
Webの多くにWriteupがあるのも助かりました。
CTFコミュニティは優しいなと感じました。
コメント