@amaga38この広告は、90日以上更新していないブログに表示しています。2017で解けた問題のwrite-upです。CTF-infinitとして参加し、43pts獲得して173位でした。(Baby'sFirst)crackme1_f92e0ab22352440383d58be8f046bebe.quals.shallweplayaga.me:10001[https://2017.notmalware.ru/add6a6232ea1e9d42b925a7d2a2c5781bfccd6fd/8a97fb8c264a3b34dad0a707dbfc92832067a0fa0f2b5a576c73557960b11506.tar.bz2]x86-64のELFが提供され、リモートに繋いでみると何か答えをBase64で送れと言われる。971など細かく関数をcallしている。引数(rdi)に渡しているアドレスは、1バイトずつずらしている。:呼び出されている関数の中身を見てみると、引数(rdi)と1バイト比較。イコールならeaxに値を代入してret。notイコールのときに呼ばれる758は、<.plt.got>セクションにあるし、exit関数っぽい。比較している1バイトを集める。ex"という文字列になった。試しにBase64でエンコードして送信してみたらフラグだった。(CrackMe_2000)cm2k-magic_b46299df0752c152a8e0c5f0a9e5b8f0.quals.shallweplayaga.me:12001[https://2017.notmalware.ru/5e1d5bc4e73657be1b008fbb6b08a7604e81d7cb/91ae7f2ec76f00975849c44b3d8ec8ed897fab7335c156d949bd15ea156338b3.tar.bz2]解凍するとx86-64のELFが200個ほどあった。逆アセンブルして眺めてみたところ、crackme1と同じ形式なことがわかった。:200個を手作業でやるわけにはいかないので、pythonで自動収集するプログラムを作成。XX"だったので、逆アセンブル結果から該当する機械語を含む行だけ抽出したら、うまいぐあいに文字の比較部分だけ抽出できた。最終的な回答コードが以下になった。比較されているバイトを連結し、Base64エンコードして辞書作成。サーバーへの回答時は、サーバーからの質問をキーとしてエンコードしている回答を送信しているだけ。何度か回答に成功するとフラグがもらえた。sokemsUbif解けた問題は以上です。力不足感が半端ないので、もっと精進したい。write-up月別アーカイブはてなブログをはじめよう!amaga38さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。