菜问题,帮忙看看,错在哪里,为何还是能绕过验证?

xddntmd 2003-06-09 11:08:42
在用户名和密码处输入: 'or''=' 还是能绕过验证:(


<% admin=replace(trim(request("admin")),"","'")
if admin="" then
response.end
end if
pwd=replace(trim(request("pwd")),"","'")
set rs=server.createobject("adodb.recordset")
sql="select * from admin where admin='"&admin&"' and passwd='"&pwd&"'"
rs.open sql,conn,1,1
if rs.bof or rs.eof then
response.write"<SCRIPT language=JavaScript>alert('错误的用户或名密码,请重新输入!');"
response.write"javascript:history.go(-1)</SCRIPT>"
else
session("admin")=admin
session("userid")=rs("id")
session("popedom")=rs("popedom")
session("name")=rs("name")
session("lasttime")=rs("lasttime")
sql1="update admin set lasttime=now() where id="&session("userid")
conn.execute sql1
response.Redirect "index.asp"
end if %>
...全文
24 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xddntmd 2003-06-09
  • 打赏
  • 举报
回复
代替语句写错了,用勇士的办法解决了,再次谢了:)
xddntmd 2003-06-09
  • 打赏
  • 举报
回复
OK,解决了,谢谢各位
ghostfish 2003-06-09
  • 打赏
  • 举报
回复
如还不行就试试这样:
Admin=trim(Request("admin"))
Password=trim(Request("pwd"))
'循环控制开始
for i=1 to len(Admin)
'用MID函数读出变量Admin中i 位置的一个字符
Name=mid(Admin,i,1)
'将读出的字符进行比较
if Name="'" or Name="%" or Name="<" or Name=">" or Name="&" then
'如果含有以上字符将出错提示,不能含有以上特殊字符
response.write"<SCRIPT language=JavaScript>alert('错误的用户或名密码,请重新输入!');"
response.write"javascript:history.go(-1)</SCRIPT>"
end if
next
ghostfish 2003-06-09
  • 打赏
  • 举报
回复
这样写试试
admin=trim(replace(request("admin")),"","'"))
应该没问题的。
moudy 2003-06-09
  • 打赏
  • 举报
回复
好象是你的代替语句写错了吧。
pwd=replace(trim(request("pwd")),"'","''")

换成这个看看。
netdog0399 2003-06-09
  • 打赏
  • 举报
回复
我想不是你and 和 or 的问题,应该是
<%
admin=replace(trim(request("admin")),"","'")
if admin="" then
response.end
end if%>
这个end if应该放到验证完后,这个嵌套的语句才能结束!所以用else代替end if
你试试吧!
broze 2003-06-09
  • 打赏
  • 举报
回复
一般只要trim(request("admin"))就可以了。
没有必要那么麻烦的。
xddntmd 2003-06-09
  • 打赏
  • 举报
回复
在线等,急。。。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧