0

phpass テスト プログラムhttp://www.openwall.com/phpass/phpass-0.3.tar.gzまたは python-phpass を使用し、プレーン テキストのパスワードにC?*|Y[j"KQ'%gfを使用します。 、および$P$9kS6tD8tVxajypvJ5837.bt2emepD8/をハッシュとして、次のように実行します。

<?php
#
# This is a test program for the portable PHP password hashing framework.
#
# Written by Solar Designer and placed in the public domain.
# See PasswordHash.php for more information.
#

require 'PasswordHash.php';

header('Content-type: text/plain');
$t_hasher = new PasswordHash(8, FALSE);
$correct2 = 'C?*|Y[j"KQ\'%gf';
$hash2 = '$P$9kS6tD8tVxajypvJ5837.bt2emepD8/';
print 'Hash: [' . $hash2 . "]\n";
print 'correct: [' . $correct2 . "]\n";

$check = $t_hasher->CheckPassword($correct2, $hash2);
if ($check)
    {
    print "Check IF THIS WORKScorrect: '" . $check . "' (should be '1')\n";
    }
else
    {
    print "IT FAILED!!!!!!!!\n\n\n";
    }
?>

ハッシュは phpBB3 (3.0.10) のもので、そのパスワードを phpBB3 に渡すと正しく機能します

phpBB3 は、$P$ の代わりに $H$ を実行して、phpass 自体を使用することになっています。

この例の phpBB3 のデータベース エントリは次のとおりです。

qlc4pi000000";0;"127.0.0.1";1351902499;"testpass";"testpass";"$H$9kS6tD8tVxagypvJ5837.bt2emepD8/";1351902499;0;"tp@inva.lid.com";266402289712;"'' ";1351902544;1351902499;0;"''";"''";0;0;0;0;0;0;0;"en";0.00;0;"DM d, Y g:i a"; 2;0;"''";0;0;0;0;-3;0;0;"t";"d";0;"t";"a";0;1;0;1; 1;1;1;230271;"''";0;0;0;"''";"''";"''";"''";"''";"''";" ''";"''";"''";"''";"''";"''";"''";"''";"bf4ae169a5a21313";1;0;0

phpBB3 で使用されるプレーン テキストのパスワードは [C?*|Y[j"KQ'%gf] であり、ハッシュ (phpBB3 形式から変換されたものは [$P$9kS6tD8tVxagypvJ5837.bt2emepD8/] です) (パスワードとハッシュの両方が [] の間にあります) )

何が起こっているのか、なぜこれが phpass で機能しないのか、誰かが光を当てることができますか? これはフォーラムと同じマシン上にあり、phpBB3 フォーラムでも機能するため、問題なくログインできます。phpBB3 データベースに直接アクセスすると、外部から phpass で認証できないだけです。ただし、他のアカウントでも機能しますが、失敗するのは特定のアカウントのみです。

4

2 に答える 2

1

問題は、phpBB3がパスワードをhtmlエスケープコードを使用するように変換することです。

これで、パスワードが変換されると、phpBB3に保存されているハッシュと一致します。

于 2012-11-05T21:17:14.790 に答える
0

phpBB3は、ほとんどの場合、PHP関数htmlspecialchars(フラグなし)をパスワードに適用します。

phpBoingによって指摘されたこの事実は、質問https://stackoverflow.com/a/12543884/1148030のディスカッションでも注目されました。

非標準の識別子$H$は便利です。$ H $が存在する場合、実装はphpBB3をサポートするためにエスケープを適用することを知ることができます。

于 2013-01-12T13:46:42.343 に答える