| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1363 人关注过本帖
标题:密码验证程序简析
只看楼主 加入收藏
SUNZN
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:3
帖 子:132
专家分:7
注 册:2007-3-19
收藏
 问题点数:0 回复次数:3 
密码验证程序简析

密码验证程序简析

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

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'就表示验证通过了!

文章引用自:

搜索更多相关主题的帖子: 密码 简析 验证 
2007-10-13 18:21
缘吇弹
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
收藏
得分:0 

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


Repeat  Life=Study;Until (death);
2007-10-14 21:15
ta8607
Rank: 4
等 级:业余侠客
帖 子:377
专家分:244
注 册:2007-9-22
收藏
得分:0 
SQL注入攻击

不理会流言蜚语,努力做好份内事情,只做自己.
2007-11-07 17:55
guass01
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-1-13
收藏
得分:0 
这个问题怎么解决
2008-01-15 12:18
快速回复:密码验证程序简析
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045267 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved