́;ω;`)この広告は、90日以上更新していないブログに表示しています。2018に参加しました。個人チーム0p3r4t0rとして、950点を獲得し、1282チーム中129位となりました。Pragyan解けた問題は以下のとおりです。Hub以下、writeupです。hack配布されるバイナリは、以下の手順でレコードを読み出すというものだった。パスワード入力画面(スタックBOFあり)読み込みたいレコードの番号を入力するレコードの内容が表示される1.の段階でスタックBOFの脆弱性が存在しているが、Canaryが配置されているためリターンアドレスの書き換えはできない。パスワードの比較にはstrncmpを使用しており、パスワードの戦闘10文字が正しく入力されていれば、後は何を入力していても認証が通る。ちなみにそのパスワードはkaiokenx20だった。ドラゴンボール?(よく分かってない)2.の段階で選べるレコードの中にはフラグを出力するらしいところがあるが、その直後にexit(0)してしまうために意味がない(ただし、フラグがflag.txtというファイルの中にあることは推測できる)。3.の段階では、仮に2の段階でflag.txtを指定できたとしても、36文字のファイル名でなければexit(0)してしまう。いうわけで、exploitコードは以下の通り。"\n"s.send(buf)print(s.recv(1024))s.send("0\n");print(s.recv(10000000))print(s.recv(1024))print(s.recv(1024))print(s.recv(1024))s.close()汚い上に安定しなかったが、一応これで出力された。考え方としては、下のようにレコード名にあたるスタック上の領域をパスワード入力の際に上書きした。.txt\0フラグはpctf{bUff3r-0v3Rfl0wS`4r3.alw4ys-4_cl4SsiC}だった。パストラバーサルを利用して文字列の長さ制限を回避することを思いつくのに時間がかかった。(最初はflag.txtをmd5sumにかけ、ファイル名として使うのかと思った。Response不完全なQRコードが画像で配布される。このQRコードが読み取れればフラグが得られるらしい。QRコードの知識はあまりなかったので、以下のサイトを参考にして修正した。www.keyence.co.jp要約すると、以下の3つを修正することで読み取れる。修正後は以下のようになった。修正したQRコードを読み取ると、以下のような文字列が流れてきた。is:pctf{r3p4ir1nG~Qr_1s-my_h0bBy}フラグはpctf{r3p4ir1nG~Qr_1s-my_h0bBy}だった。ここでは元のQRコードを目視で読み取っていたので、時間がかかった。スクリプトか何かで自動化させるべきだったのかもしれない。QRコードの勉強になった。何気なく使っているものの仕組みを知るのは本当に面白い。flagバイナリが渡される。else....と表示されるだけだった。逆アセンブルして中身を確認してみると、文字列が表示される処理の前では1バイトずつxorしてスタック上にプッシュするという処理が行われていた。文字列表示の直前でスタックの内容が見通せればいいので、以下のようにした。出力関数(printf)にブレークポイントを仕掛けるgdb-pedaの機能のtelescopeを用いて、スタックの中身を一気に見たフラグはpctf{l3geNds_c0d3_1n_4Ss3mb1y}となった。research大量に数値が書き込まれたxlsxファイルが与えられる。その数値をざっと見ていると、0の値だけがやたらと多いことに気づいた。セルの大きさを調整し、条件付き書式で0の値を持ったセルのみ色を塗ってみた。色を塗ったセルは文字を形作っており、読むとフラグになっていた。フラグはpctf{ord3r_out_of=ch4os+this_world}だった。Officeでも条件付き書式が使えるとは思わなかった。businessまずはログインしろと言われる(ログイン時のアカウントはCTFのアカウントそのものを使う)。ログインした先のページには特段フラグのようなものはなかった。Burpを使ってよく見てみると、ログイン直後にはリダイレクトされていることがわかった。そのページの中にはちゃんとフラグが書かれていた。フラグはpctf{y0u=Sh0Uldn'1/h4v3*s33n,1his.:)}だった。adminhomepage.phpとlogin.phpのソースが配布された。100]と同様にCTFのアカウントを用いてログインした先のページでは、セッションの中にあるid_typeがteam_name、idがadmin、logged_inがtrueになっていればフラグが出力されるようになっているが、一度のログイン試行でこの3つの条件を成立させることはできないようになっていた。このページの特性として、セッション番号はログイン時に再生成されず、使い回しができるようになっていた。そのため、以下のような手順を踏んで条件の成立を試みた。<=ここを変更するhomepage.phpに直接アクセスすると、フラグも一緒に出力される。フラグは、pctf{4u1h3ntic4Ti0n.4nd~4u1horiz4ti0n_diff3r}だった。Hub記事をいくつか見れるページのようで、このソースを見てみるとfavicon.phpというPHPスクリプトが存在することが分かる。そのPHPスクリプトにidというパラメータに数値を与えると、pngファイルが得られる事が分かった。このidパラメータに大きな数字を指定し、通信の内容をWiresharkを用いてみてみると、png,icoファイルの他に.phpファイルを読み込めるという旨のエラーメッセージが返ってきていた。そこで、idにfaviconを指定し、favicon.phpのソースコードを取得することに成功した。index.phpが存在すると推測し、index.phpのソースコードを取得し、index.phpの内容からfetch.php,helpers.phpも取得した。得られた4つのソースコードを見てみると、以下のようなことが分かった。secret/flag_7258689d608c0e2e6a90c33c44409f9d.txtというファイルがフラグであるindex.phpで指定されるfileのパラメータはサニタイズされるphp:やsecret/flag_7258689d608c0e2e6a90c33c44409f9dの文字列を発見すると「イタズラしやがって!(意訳)」と怒られる./や../は取り除かれる具体的には、以下のコードになっていた。...これらを回避するため、以下のようなパラメータを指定した。file=.....///secret/./flag_7258689d608c0e2e6a90c33c44409f9dアクセスするとフラグが出力された。フラグはpctf{1h3-v41id41i0n_SuCk3d~r34l-baD}だった。前のCTFよりは進歩できたのかなと思う。[crypto]の問題が一問も解けなかったのが悔しかった。次回はcryptoも解けるようになりたい。ひらめくのに時間がかかることが多かった。早くひらめきが生まれるようになりたい。あとreverseの問題があまりなかった。WriteupTweet広告を非表示にする関連記事2018-09-02LinuxのRAWソケットからイーサネットフレームを取得してみるパケットの中身を覗きたくなったので作ってみた。18にチームHarekazeとして参加しました。18のpwn4とpwn5が解けなかったので復習。月別アーカイブはてなブログをはじめよう!HappyNote3966さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。