研究は、物品は、単にそれを記録することを指摘するような単純な方法は、PHPのMD5()関数をバイパスします。
例
メインコードセグメント:
1つの $パスワード = $ _POST [ 'パスワード' ]; 2 $のSQL = "SELECT * FROM管理者のユーザー名= '管理者'とパスワード=「"。MD5($パスワード、真) "'"。; 3 $結果 = mysqli_query($リンク、$ sqlを); 4 もし(mysqli_num_rows($結果)> 0 ){ 5つの エコー 'フラグが'。$フラグ。 6 } 7 他{ 8 エコー '密码错误!'; 9 }
PHPのMD5()関数
MD5()関数MD5ハッシュは、文字列を計算しました。
MD5()関数は、MD5メッセージダイジェストアルゴリズムを含めて、RSAデータセキュリティを使用しています。
RFC 1321から説明 - MD5メッセージダイジェストアルゴリズム:MD5メッセージは、入力値としてアルゴリズム任意の長さの情報を消化し、表現するために128ビットの「指紋」または「メッセージダイジェスト」値へと変換入力値、およびその結果としての値に変換されます。主に設計されたデジタル署名アプリケーション用のMD5アルゴリズム;このアプリケーションでは、デジタル署名、大きなファイルは、ここでの暗号化処理により、(暗号化されますが、暗号化システムである:で[RSAなど]公開鍵圧縮前に安全な方法で秘密鍵と完了)を設定します。
ファイルのMD5ハッシュを計算するには、使用 md5_file() 関数を。
構文:MD5(文字列、生)
文字列:暗号化された文字列に必要な
RAW:オプションのパラメータTRUEまたはFALSE。FALSE(デフォルトでは、32文字の16進数); TRUE(元の文字16のバイナリ形式
)
回避策
暗号化された文字列のMD5()関数を使用すると、SQLインジェクション、破壊のSQL文の構造に達します。
一般的な文字列:ffifdyop
上記の例では、ffifdyop入力し、SQL文の構造は次のようになります。
SELECT * FROM管理WHEREパス= '' または' 6 <ゴミ> '
MD5()関数をバイパスする効果を達成するように、
したがって、本研究の簡単な終わりを指摘しています。