ボーダレスだからやらねばならない。ボーダレスの一翼を担っているのは紛れもなくICT業界なのだから。我々WhiteHackerZ養成学院ははセキュリティ界の異端児として(チープに見える角度かもしれないが)切り込み続ける。国際社会へもっと羽ばたく為に。admin2皆様こんにちは。ハッキングチャレンジ8946いかがでしょうか?さて、本日は皆様の声にお応えしまして、ヒントをください!と一番お声が多かったTake14の解き方のヒントを公開致します。・・ブラウザは、FireFoxを利用しています。メールアドレスのチェック項目をすり抜けるには??メールアドレスに何も入力せず、「送信確認」ボタンをクリックすると、エラーが表示されるので、JavaScriptで、エラーの制御をしている事がわかります。それでは、次にXSSの脆弱性があるかチェックします。“><script>alert(1)</script>と入力して、「送信確認」ボタンをクリックしてみます。JavaScriptが実行され、画面上に「1」と表示されました。このサイトには、XSS脆弱性がある事がわかります。このとき、htmlソース上ではどうなっているか、見てみましょう。画面上で、右クリックして「ソース表示」してみます。赤枠の、メールアドレスの箇所を見てみると、メールアドレスの入力欄が、「”」で、終結され、JavaScriptが埋め込まれているのがわかります。その時の画面は、htmlタグが壊れてますね。JavaScriptが実行できる事が判明しました。メールアドレスをチェックしている箇所をすり抜けるために、このページ上で使用されている「メールアドレスをチェックしている関数」をわざと埋め込み、同じ関数を2個入った状態にします。通常、同じ名前の関数がある場合、ページは、上から順番に読み込みされるので、通常のチェック関数よりも、メールアドレスの入力欄は下に位置しているので、ここに埋め込んだJavaScriptの関数が通常実行される関数を上書きしてしまい、通常のチェック関数は、無効になってしまいます。再度、ソースをみると、メールアドレス等のチェックに、beforeSubmit()という関数が使われている事がわかります。beforeSubmit(){document.form1.submit();}</script>と入力します。メールアドレスをチェックしている同じ関数名をいれます。後に続く、document.form1.submit()というのは、formの名前である、form1の中身を送信しなさいという記述になります。入力したら、「送信確認」ボタンをクリックしてましょう!そうすることで、メールアドレスをチェックしている関数が埋め込みされます。htmlソースを開いて確認してみましょう。メールアドレス等をチェックしている「beforeSubmit()」関数が、今入力した箇所と、元々あったものと、2個存在している事になります。この状態で、メールアドレス欄に「なにか文字」を入力すると、通常のメールアドレスをチェックしている、beforeSubmit()という関数よりも、今入力した、「beforeSubmit()」が実行されます。メールアドレス欄に入力した関数、beforeSubmitは、メールアドレスのチェックではなく、document.form1.submit();としているので、そのまま送信されてしまいます。ここまでいかがでしたでしょうか?大分出しちゃいましたねww丸見えでしょうかw問題を解くプロセスが大事な事なので、実際に解けた場合でもその後発展・応用など自己学習に役立てて、サイト構築の際には十分ご注意ください。