注册 登录
编程论坛 网络技术

密码验证程序简析

SUNZN 发布于 2007-10-13 18:21, 1369 次点击

密码验证程序简析

呵呵!这是自己分析的一段代码,拿出来和大家分享!希望能对大家有所帮助!有什么不对的地方请大家留言哈!我很愿意听取大家的意见!
看代码吧:

dir rs,sql
set rs=server.createobject("adodb.recordset")
sql="slect * from USERS where name = ' "&name&" ' and pass=' "&pass&" ' "
name=request("name")
pass=request("pass")
rs.opn sql,conn,1,3
if rs.eof then
rsponse.write("<table width=300 border=0 cellspacing=0 cellpadding=0 aling=centr>")
rsponse.write("<tr><td>--您的密码或用户名填写错误!--<br>---您没有权利进入管理页面---</td></tr>")
rsponse.write("<tr><td>---<a herf=vbscript:history.back()>重新填写</a>---</td></tr>")
response.write("</table>")
response.end
else
......
end if

大家注意到那段红色代码了吗?就是sql="slect * from USERS where name = ' "&name&" ' and pass=' "&pass&" ' "
是一条在USERS数据库中找出name字段为输入的用户名,pass字段为输入的密码数据记录的SQL语句.我们现在假设用户名是abc,密码是123,那么这条SQL语句就成了要查找:name='abc' and pass='123'我们现在再假设输入的用户名是abc,密码是123' or '1'='1,那么这条SQL语句就成了要查找:name='abc' and pass='123' or '1'='1'大家注意了这里的123' or '1'='1是一个整体.通过和'...........'来构造了一个语句!就和我们在进行跨站的时候想方设法闭合<script>alert("sunzn跨站!")</script>一样!
呵呵! 到这里我估计大家就懂了,对" ' "过滤不严再加一个标准的or逻辑就可以绕过密码的验证了!因为or的逻辑或,只要'1'='1'就表示验证通过了!

文章引用自:

3 回复
#2
缘吇弹2007-10-14 21:15

没试过,有空试下.
帮你顶一个!

#3
ta86072007-11-07 17:55
SQL注入攻击
#4
guass012008-01-15 12:18
这个问题怎么解决
1