on error resume next
LogUser=trim(request.form("LogUser"))
LogPass=trim(request.form("LogPass"))
if LogUser="" or LogPass="" then
response.write "<script>alert('用户名密码为空!');history.back();</script>"
response.end
end if
if request.form("Login")="登 录" then
set SysQuery=server.CreateObject("XXSDatabase.XXSData")
SysQuery.LoginSysManager LogUser,LogPass
dim Result
set Result=SysQuery.AdoExeCute("select * from Sysmanager where UserName='"&LogUser&"'and PassWord='"& LogPass &"'")
if err.number<>0 then
response.write "<script>alert('用户名密码有错!');history.back();</script>"
err.cleare
response.end
else
Session("OK")="SysManager"
Session("ClassLevel")=Result("ClassLevel")
Set Result=nothing
response.redirect "direction.asp"
end if
else
if request.form("Modify")="修改密码" then
Session("OK")="SysManager"
Session("UserName")=LogUser
Session("OldPass")=LogPass
response.redirect "modify.asp"
else
response.write "<script>history.back();</script>"
response.end
end if
end if
Set SysQuery=nothing
%>
其中LogPass 是从主页上输入的密码,如果不输入密码,输入引号中的内容“' or '0'='0”,
将其带入到程序中,即:
Result=SysQuery.AdoExeCute("select * from Sysmanager where UserName='"&LogUser&"'and PassWord='"& ' or '0'='0 &"'"
进一步翻译成逻辑关系是:“用户名 and 密码 or 真 ”,这样便顺利的通过用户名和密码验证。进入该帐号后,可以看到用户真正的密码,以及密码提示、密码答案,可以更改用户资料等,也可以通过源代码查看到用户的真实密码,如果该用户的多个地方使用一个密码的话,可以通过这一点访问其他受保护的资源,甚至可以通过这个使用该帐号的信用卡等。存在这样情况的网站为数不少。