看了一篇asp安全的文章,有一个sql的问题不明白,谢谢!

tianxueer 2006-12-21 08:34:21
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
...全文
200 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
plought 2006-12-21
  • 打赏
  • 举报
回复
楼主看到的只是一个逻辑教学实例,我曾经给学生讲课的时候用过!且命名为“万能钥匙”

有一个网站的用户登录程序中,用简单的比较方法验证会员注册身份(即:比较用户输入的密码和数据库中保存的密码是否一致。假设这个程序的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字符明文程序中逻辑设计的重要性。







歪嘴鱼 2006-12-21
  • 打赏
  • 举报
回复
汗!
1=1
想起陈景润
pzhuyy 2006-12-21
  • 打赏
  • 举报
回复
反正最后始终都会返回真的:)
tianxueer 2006-12-21
  • 打赏
  • 举报
回复
我明白了!
是不是这样看:a=''or'1'='1'(判断a是否等于'',就是空白,否则'1'='1',又因为1=1,所以返回真)
对吗?
我是丁学 2006-12-21
  • 打赏
  • 举报
回复
N年前就烂掉的东西,可惜大部分开始学WEB编程的人还是会犯,初学者,还是ASP的天下啊
  • 打赏
  • 举报
回复
无所的,其实就是注入攻击。。。n多年前玩烂掉的东西
tianxueer 2006-12-21
  • 打赏
  • 举报
回复
dxef(丁丁) ,还是不明白,
or怎么能这么用呢?
不是:
"条件1 or 条件2" 吗?
or '1'='1'是什么意思?

还有,原文好像是: 'or'1'='1
而不是 or '1'='1'?

我是丁学 2006-12-21
  • 打赏
  • 举报
回复
a='' --结果不定
a='' or '1'='1' --结果肯定为真
后面一样
其实不管前面是什么,因为是从前往后计算,最后一个 or '1'='1' 足以使整个条件返回真

28,391

社区成员

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

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