[サイバーハッカー.kr]解答No.14


[webhack.krのWebサイトでの質問の回答]


前の質問で6番の解答に問題が出てきたので、まずは14番からアップします.

[回答]


まず問題画面を見てみましょう.平淡無奇.

どんな値でもボタンを押すだけでエラーのメッセージが表示されます.
答えに合った値を入力してこそ、問題を解決できるかもしれません.
まず開発者ツールを開き、分析コードを分析します.

コンソールでの関数の実行


この問題のコード構造はかなり簡単だ.
<html>
<head>
<title>Challenge 14</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>
<br><br>
<form name=pw>
  <input type=text name=input_pwd>
  <input type=button value="check" onclick=ck()>
</form>
<script>
function ck(){
  var ul=document.URL;
  ul=ul.indexOf(".kr");
  ul=ul*30;
  if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; }
  else { alert("Wrong"); }
}
</script>
</body>
</html>
まずhtmlコードはformのコードにすぎません.
onclick、すなわちクリック時に下部jsコードのch()関数を実行します.
function ck(){
  var ul=document.URL;
  ul=ul.indexOf(".kr");
  ul=ul*30;
  if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; }
  else { alert("Wrong"); }
}
このコードを簡単に分析してください.
(1)ulを定義すると、現在のページのアドレスが取得される.
(2)ulul中.krのインデックス値を取得します.
(3)ulの値に30を乗じた値を指定します.
(4)フォームに入力された値をulと比較し、正しい場合は?ul*pw.input_pwd.valueに移動する.
これらのコードを考慮する必要はなく、consoleウィンドウに移動してコードを変換するだけでul*pw.input_pwd.valueの値を得ることができます.
ここで,コードを簡潔にするために,ul*pw.input_pwd.valueの値は最終的にulpw.input_pwd.valueの値が等しいときに算出されるので,ul의 제곱값を求めることができる.
function ck(){
  var ul=document.URL;
  ul=ul.indexOf(".kr");
  ul=ul*30;
  console.log(ul**2);
}
ck();
コンソールに入れて実行し、結果値は291600です.
そのページのアドレスを以下のように修正すれば、問題は解決します.

终わりの时..。


この問題は比較的難しくない難易度に属する.今書いている文章はすべて5~10点の問題で、解決するのは難しくありません.
次の問題は15番です.15日も面白い質問で楽しみです.