2日前、私はエンタープライズ検索エンジンの現場バージョンに取り組んでいましたが、一部のサイトがサイトコンテンツにリンクできることがわかりました。 。
私はそれを奇妙に見て、データベースIDの自動番号付けルールに従ってリンクされていることが判明しました~~
私は暇なときに以下をやったことがあります。将来のすべての人に役立つことを願っています。
<%
'' //指定された数字の乱数を生成します
'' // Guidyで記述されたixuer_rnd_str関数を使用することもできます。
functionrndstr(strlong)
dimtempstr
ランダム化
Dowhilelen(RNDSTR)<Strlong
tempstr = cstr(chr((57-48)*rnd+48))
rndstr = rndstr&tempstr
ループ
rndstr = rndstr
エンド機能
%>
以下は、request.formの例としてフォームフォームで送信されたパラメーターです。渡す必要があるパラメーターのドーションの元の値は、データベースから読み取られるIDです。
<formname = iformaction = "abc.asp" method = "post">
<inputname = doactionType = "hidden" value = "<%= rndstr(10)%> <%= rs(" id ")%> <%= rndstr(10)%>">
</form>
知らせ:
上記のdoactionの値は変更されており、ページが更新されるたびに得られる値は異なります~~
以下はABC.ASPページです
最初に、doactionの値を取得します
doaction = trim(request.form( "doaction"))
以下に、IsNumericなど、いくつかの検証を自分で追加できます。
次に、Doactionの価値を分解しましょう
Dimlastid
doaction = mid(doaction、11)
lastid = mid(doaction、1、len(doaction)-10)
中間関数に精通している場合、上記のコンテンツは簡単に推測できますが、簡単ではありませんか?
実際の例は次のとおりです。
データベースの元のドクションによって渡されるIDの値(フィールドタイプは自動的に番号が付けられています)は次のとおりです。
説明:
11 in mid(doaction、11)は、多くのランダムな文字 + 1を生成します
10 lastId = mid(doaction、1、len(doaction)-10)は、指定された数で生成されるランダムな文字桁の数です!
Dimlastid
doaction = 3614354944348151287527—偽装後のID値(数として確認できます)
doaction = mid(doaction、11)
lastid = mid(doaction、1、len(doaction)-10)
lastId = 34
私は実験しましたが、ランダムに生成された文字と数字で使用すると、MD5と同様の値として完全に偽造できます!
条件は1つだけで、ランダムな文字のビット数を指定する必要があります。
ハハ、今では誰もがresponse.writeの最後の値を出力して、それが再びデータベースのIDであるかどうかを確認できますか?