看了一篇asp安全的文章,有一个sql的问题不明白,谢谢!
楼主tianxueer(甜雪儿)2006-12-21 20:34:21 在 Web 开发 / ASP 提问
select a,b from c where a=''or'1'='1' and b=''or'1'='1'
文中的意思是说直接返回真,是在看不懂。
or怎么能那么写?
谢谢!
原文:http://blog.csdn.net/aspstu/archive/2005/01/11/249321.aspx
问题点数:20、回复次数:8Top
1 楼dxef(丁学)回复于 2006-12-21 20:39:19 得分 2
a='' --结果不定
a='' or '1'='1' --结果肯定为真
后面一样
其实不管前面是什么,因为是从前往后计算,最后一个 or '1'='1' 足以使整个条件返回真Top
2 楼tianxueer(甜雪儿)回复于 2006-12-21 20:54:46 得分 0
dxef(丁丁) ,还是不明白,
or怎么能这么用呢?
不是:
"条件1 or 条件2" 吗?
or '1'='1'是什么意思?
还有,原文好像是: 'or'1'='1
而不是 or '1'='1'?
Top
3 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-12-21 21:01:57 得分 1
无所的,其实就是注入攻击。。。n多年前玩烂掉的东西Top
4 楼dxef(丁学)回复于 2006-12-21 21:32:34 得分 1
N年前就烂掉的东西,可惜大部分开始学WEB编程的人还是会犯,初学者,还是ASP的天下啊Top
5 楼tianxueer(甜雪儿)回复于 2006-12-21 21:57:30 得分 0
我明白了!
是不是这样看:a=''or'1'='1'(判断a是否等于'',就是空白,否则'1'='1',又因为1=1,所以返回真)
对吗?Top
6 楼pzhuyy(喝小酒泡尼姑)回复于 2006-12-21 21:59:59 得分 2
反正最后始终都会返回真的:)Top
7 楼zhblue(http://www.newsclan.com)回复于 2006-12-21 22:03:48 得分 1
汗!
1=1
想起陈景润Top
8 楼plought()回复于 2006-12-21 22:28:45 得分 13
楼主看到的只是一个逻辑教学实例,我曾经给学生讲课的时候用过!且命名为“万能钥匙”
有一个网站的用户登录程序中,用简单的比较方法验证会员注册身份(即:比较用户输入的密码和数据库中保存的密码是否一致。假设这个程序的SQL查询语句如下:
select name from [TABLENAME] where name='"&uanme&"' and paswd='"&upaswd&"'"
name,paswd分别是数据库表的用户民和密码字段
uname,upaswd分别是用户登录时输入的名字和密码字符串
如果用户输入的名字是“a or 1=1”
如果用户输入的密码是“b or 0=0”
单看比较运算表达式:name=a or 1=1 and paswd=b or 0=0"
语句符合逻辑,结果成立,非法登录成功!
实际几乎不会发生这样的故事,实例只是为了说明abd or之类的逻辑关键字的功能,和ASP字符明文程序中逻辑设计的重要性。
Top
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |








网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)