fr33f0r4llスマートフォン用の表示で見るfr33f0r4ll自分用雑記この広告は、90日以上更新していないブログに表示しています。Writeup基本的に自分で解いたやつだけ。binarycrackmefileで調べるとARMだった。見た感じでは標準入力がフラグになっていて、再開なら符号化された文字列と一致するというような処理だった。いうのはangrで解ける。シミュレーションしないといけないかと思ったけど、試してみたらangrがそのまま実行できた、すごい。{}".format(key))使い方を良く分かってないので変かもしれない。f31337fという関数を呼んだあと、スタック上の値とxorした文字列をフラグとして出力している。fを解析してみると、再帰していることが分かった。再帰で渡す引数を見てみるとフィボナッチっぽいことがなんとなく分かる。分からなくてもfに渡す引数を順番に変えて観察すれば直感的に分かるはずだ。その後の処理を見ていくとxorでフラグにしてるっぽい部分が良く分からなかったので手動でデコンパイルした。0;}実際に走らせてみるとただ%8してるだけだった、最適化の影響で分かりにくい処理になるらしく要調査。そんなこんなで見ていくと、どうやら31337番目のフィボナッチ数を求めれば良いらしい。普通にやると計算量が爆発して終わらない(f31337自体が終わらないのはそのせい)ので最適化してあげよう。メモ化とかその辺を調べれば良いと思う。ググったら出てくるかもしれない。1);}せっかくなのでCで書き直すとこんな感じ。あとはgdbで結果を直接レジスタに設定してやればいい、その後フラグが表示される。このフラグが誤字っていて通らなかった。ふざけんな!CryptoFLAG.encrypted公開鍵と暗号化されたflagが降ってくる、RSA問題。attackが可能かもしれないと分かる。自作ツールでちゃんと解けた、嬉しい。ロード関数作ってなかった上にブランクがあったので無駄に苦戦した。最終的には秘密鍵だけ渡してPythonで解読、アホか。e))Signatureぎりぎりでハッシュエクステンションアタックだと分かったものの、時間が足りず解けなかった。これさえ解ければ全完だったのに、無念。Movie協力して解いた。ページ中で300回まで動画を見ないといけないとなっている。10数時間なので最初から自動で再生し続ければflagは見れるが、そんなことやってられない。本当に300回再生したやつがいたらしい、素晴しい。ページ中のJSを見てみたが、どうもdllを読み込んでいる。blazorというブラウザ上でC#を実行するフレームワークがあるらしく、そのプログラムなのだそうだ。そのMoviePlayer.dllをdnSpyで逆コンパイルして見てみた。すると、encrypt('FLAG_IS_HERE').txtというファイルへのアクセスがあった。encrypt自体は単なるMD5だったので、ハッシュ計算して直接アクセスすれば良い。PPCジャンル名はProgrammingになってる。Calculation計算式がひたすら降ってくるので計算して返すだけ。悪い子なのでeval使った。Factorその名の通り素因数分解していく。他の人が書いたやつをpwntools使うように手直ししてやったら動いた。s.sendline(bytes(max_num))まあやるだけだけど、BOM付きでキレそうだった。Powerを越えないように本を読んで満足度を最大化する問題。要はナップサック問題。Pythonに組み合わせ問題を解けるツールがあったので、それを使った。Python3でしか動かないので、pwntoolsはpython3版を拾ってくる必要がある。io.interactive()io.close()ortoolpyすごい。BoxesMP4が降ってくる。MP4について調べてみると、ボックスと呼ばれる単位でデータが管理されていることが分かる。最後の5つのボックスに何かあるのだろうと当たりを付けて、MP4の解析方法を探した。gpacのMP4Boxが良さそうだったのでそれで確認すると、最後の5つはuuidボックスというものだった。自由にIDを付けて使えるらしい。これのデータの部分だけ簡単にパースして、とりあえず全部くっつけたらpngファイルだった。開くとそれがフラグだった。f.write(data)ビッグエンディアンの数値変換のためだけにpwntoolsを使うという力技。TriviaMonero知ってた、coinhive。ググったらすぐだろう。page最初問題文が見にくかった上にサイレント修正しやがった。問題文のリンク先のページにいくと、入力フォームがhiddenになっていて入力できなくなっている。単純にPOSTを再編集するか、ページの値を直接書き換えて問題文で指定されたIDとパスを投げればいい。Uploader他の人にunionを教えてもらったので色々やったらできた。ファイル名検索にSQLiの脆弱性がある、これを利用してsecret.zipが手に入る。--パスがかかっているが、ログインするとZipのパスが見れるようになるのでどうにかしてログインする必要がある。SQLiを色々試しているとエラーメッセージでSQLite3を使ってることが分かった。ここで、SQLite3でテーブル名が格納されているテーブルの名前とかを調べてみると、sqlite_masterに格納されていることが分かった。--カラム数が違うと怒られたので、適当に合わせてやる。--これでテーブルの名前が流出した、FilesとUsersがある。Usersにパスワードが格納されているのだろうと当たりをつけて表示する。カラム数が違っているがカラム名が分からないのでどうしようかと思ったが、入力フォームの名前で試したらどうやら合っていたらしくユーザ名とパスが流出した。--あとはこれでログインするだけである。パスをゲットしてsecret.zipを解凍、フラグゲット。writeupチームで参加できたのでたくさん解けた。(1)はてなブログをはじめよう!hiziriAIさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。