-2

就職の面接でこれを受け取ったのですが、答えがわかりませんでした... JS を実行する HTML ファイルを受け取ったので、パスワードを見つける必要がありました。

HTML ファイルを実行すると、「Good job」または「Too bad」文字列以外はすべて表示されました。おそらく、このコードを上書きする隠しコードがあることがわかりました (この HTML ファイル内で見つけたコードにそのような文字列が表示されなかったからだと思います)。

とにかく...元のファイルからコードをコピーして新しい HTML として保存したところ、隠しコードの奇妙なメッセージの代わりに「Too bad」が表示されました。

誰かが次のコードを説明し、正しいパスワードをどのように明らかにしたかを教えていただければ幸いです。

ありがとう !!

コード:

<script type="text/javascript">
function c(x){ alert((document.getElementsByTagName('input')[0].value == window.location.hostname.replace(/a-f/, '%')) ? 'Good job!' : 'Too bad!'); }
</script>
Password: <input /><br />
<button onclick="c()">Check</button>

HTML ファイルをhttp://www.filedropper.com/secretpassにアップロードします。

4

3 に答える 3

3
document.getElementsByTagName('input')[0].value == window.location.hostname.replace(/a-f/, '%')

このコードは、入力の値を URL ホスト名から派生した文字列と比較します。

メッセージを表示する条件演算子の比較対象として使用されます。

于 2013-07-03T19:22:20.590 に答える
0

パスワードは、このスクリプトをホストしている Web サイトによって異なると思います。c 関数は、window.location.hostname (たとえば、www.google.com) を調べて、a、b、c、d、e、または f のいずれかの最初の出現をパーセント記号「%」に置き換えます。パーセント記号は JS 正規表現表記では意味を持たないと思うので、スクリプトが www.yahoo.com でホストされている場合、パスワードは www.y%hoo.com になります。

于 2013-07-03T19:28:30.097 に答える
0

このフィドルは、モノの動作を示しています。予想されるパスワードを単純に表示する機能を追加しました。この場合、予想されるパスワードは ですfiddle.jshell.net。これは、結果のドキュメントが置かれているフレームのホストであるためです。

そうです、パスワードは Web ページの URL から直接取得されます。上記のように、ローカル マシン上の単なる HTML ファイルである場合、その URL は次のようになります。

file:///C:/Users/yourname/Desktop/jobtest.html

アドレスバーに表示されるものです。しかし、私はそれがこれほど単純だったかどうか懐疑的ですfile://

window.location.hostname == ""

つまり、パスワードは単なる空の文字列です。したがって、入力フィールドを空白のままにして、ボタンをクリックします。localhost@Chrisが述べたように、ローカルサーバーで実行した場合は機能する可能性があります。

しかし、コードを少し間違ってコピーした可能性もあると思います。そうではないかもしれませんが、あなたを惑わすためのトリックだったのかもしれませんが、replace()関数の正規表現が間違っているようです。それ以外の

`window.location.hostname.replace(/a-f/, '%')`

私は期待するだろう

`window.location.hostname.replace(/[a-f]/, '%')`

aこれにより、最初の小文字の , b, c, d,eまたはが に置き換えfられ%ます。の代わりにlocalhost、 がありますlo%alhost

とにかく、あなたの質問からわかるように、パスワードは単に URL のホスト名部分であり、最初のインスタンスa-f%. の代わりにwww.zelda-forever.com、 がありますwww.zeld%orever.com

于 2013-07-03T20:03:42.427 に答える