1

フォームのスクリーンショット

回答ボックスのすぐ上に、間違った試行で「不正解」というエラーが表示されます。さらに、試行回数は無制限です。

上記は詳細情報を含むウェブサイトのプレビューです。

コード:

<form id="level" method="post"> 
    <label for="answer">Answer:</label> 
    <input type="text" name="answer" id="answer" /> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
</form>

したがって、ここで、フォームにアクションソースがないことがわかります。(私が知っている)唯一の方法は、javascriptをハックすることです。Facebookやorkutにスパムを送信するために使用されたものと同様に、URIのアドレスバーにJavaScriptを入力する必要があります。

他のjavascriptファイルにリンクするためのjavascript(アドレスバー用)を作成しました。

そして、誰かがオンラインのjavascriptブルートフォーススクリプトまたはjavascriptを介してリンクできるオンラインの何かを知っている場合。

4

3 に答える 3

9

私がこの種のことをどのように行うかを人々に教えるのは嫌いですが、それは興味深い問題です。

ただし、最初に言わなければならないのは、ブルートフォースソリューションは実用化するには時間がかかりすぎる可能性が高いということです。ソリューションの長さが8文字で、1秒あたり100万の可能性を試してみると(非常に楽観的な仮定)、すべての可能性を試すのに約5年かかります。

それでも、ニーズに合わせて変更できるはずのJavascriptコードを次に示します。

var chars = ["a","b","c","d","e","f","g","h","i","j,","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"," "];
while(document.getElementById("answerResult").innerHtml != "Correct Answer"){
  var len = Math.floor(Math.random() * 20);
  var str = "";
  while(str.length < len){
    str += chars[Math.floor(Math.random() * chars.length)];
  }
  document.getElementId("answer").value = str;
  document.getElementById("level").submit();
}

このソリューションは、実際にはブルートフォースを使用しません。これは、 bogosortと同様のメソッドを実装します。より楽しくシンプルですが、完了するまでに少し時間がかかる場合があります。あなたが信じられないほど幸運な人なら、それは最初の反復で解決されるかもしれません。

于 2011-07-16T05:37:39.433 に答える
1

接続しているスクリプトを見つける必要があります。このhttp://blog.getfirebug.com/2009/10/30/event-listener-view-for-firebug/を使用して、ボタンに関連付けられているイベントリスナーを確認してください。また、Firefox用のjavascriptdeobfuscatorプラグインをダウンロードする必要がある場合もありますhttps://addons.mozilla.org/en-US/firefox/addon/javascript-deobfuscator/

于 2011-07-16T05:28:29.980 に答える
1
static String seqToken(long value) {
        String[] digitsAlpabets = { "a", "b", "c", "d", "e", "f", "g", "h",
                "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
                "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
                "6", "7", "8", "9" };

        int codePoint = (int) (--value % 36);
        long higher = value / 36;
        String letter = digitsAlpabets[codePoint];
        return higher == 0 ? letter : seqToken(higher).concat(letter);
    }

必要に応じて文字セットを変更し、それに応じてサイズを使用して、シーケンスジェネレータを取得します。

于 2016-03-04T09:36:21.773 に答える