我可以: 邀请好友来看>>
ZOL星空(中国) > 硬件星空(中国) > 系统软件与网络星空(中国) > 网络技术星空(中国) > NT网站的ASP程序密码验证漏洞
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

NT网站的ASP程序密码验证漏洞

30浏览 / 0回复

bugcom

bugcom

0
精华
5
帖子

等  级:Lv.1
经  验:0
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:黑龙江
  • 注  册:2012-10-04
  • 登  录:2012-10-04
发表于 2009-07-18 10:04:04
电梯直达 确定
楼主

涉及程序:
MS IIS 
 
描述 
NT网站的ASP程序密码验证漏洞 

详细 

原文如下:
很早就发现很多国内程序员对密码验证不注意,今天去了陈水扁

(www.abian.net)的网沾,随手一试,居然发现有这种漏洞,真是让人笑破肚皮

! 此贴转载http://www.bugba.com
原理:
很多网站把密码放到数据库中,在登陆验证中用以下sql,(以asp为李)
sql="select * from user where username=';"&username&"';and pass=';"&

pass&';"
此时,您只要根据sql构造一个特殊的用户名和密码,如:ben'; or ';1';=';1
hehe ...是不是进去了??

解释:
上述的SQL语句是ASP程序的if判断的一部分,如果该语句返回为真,则密码验证

通过。
输入 ben'; or ';1';=';1这样的用户名之后,其验证的语句将执行为:
sql="select * from user where username=';"& ben'; or ';1';=';1 &"';and

pass=';"& pass&';"
因为1=1为真,由于 or 逻辑运算符的作用,这个语句将返回为真。
所以验证通过。

解决方案 
ASP程序员应该用更严密的判断语句来防止这个安全问题 ,
下面是发现者提出的解决方案:
比较好的应该按照以下方式:
1、处理输入字符, ;
2、处理‘,|等字符
3 select * from user where user=’ " & User & "'; "
4、如果返回不为假,则取密码
pass=rs("passwd")
5、判断:if pass=password
6、得出结论。

高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表