|
现在,大多数老鸟都知道'or''='的奥秘了,但可能很多人知其然而不知其所以然,今天偶就唐僧唐僧,罗嗦两句,顺便纠正一些误区.
这其实是一个漏洞,一个ASP语法上的漏洞.由于现在大多数网站的登陆(顺便说一句,这里应该是登录,你以为你是海军陆战队啊)界面都是基于ASP格式的(网页扩展名为.asp),所以很可能具有这个漏洞.具不完全统计,有一半左右的网站具有此漏洞.因为此漏洞只针对ASP,所以诸如Windows登录等等情况用此法是行不通的,我们也不用担心自己的系统有此漏洞.
闲话少叙,这就详细地分析一下:
user=request.from(\"user\")
pass=request.from(\"pass\")
这相当于给变量赋值,即将文本框中的输入赋给user和pass
sql=\"select * from guestbook where user=' \"&user&\" ' and pass=' \"&pass&\" ' \"
这是核心语句,就是靠它判断的
将user= 'or''=' 和
pass= 'or''=' 代入
sql=\"select * from guestbook where user=' 'or' '=' ' and pass=' 'or' '=' '\"
学过数字逻辑的一定知道了,' '=' '的值是“1”“真”“True”,or是“或”的意思,任何值 或1都等于1,所以最终值为真,顺利登录.
注意:'or''='都是单引号没有双引号,还是半角,不要开输入法.
至于防范之法也是有的,只需加一些验证算法,这里不再赘述,让管理员都学会了怎么办.多亏有此漏洞才使我们能过一把黑客瘾.
另外,用户名可用其他字符,我试过数字字母,都可以.只要\"密码\"正确就行.
其实这是个比较容易发现的漏洞,可能图书馆管理员都很菜,不一定懂底层代码,他们的数据库都是现成的.其实我同大家一样,喜欢用DreamWeaver,而看不懂Html代码.
现在真正搞技术的人太少了,我们要发展民族工业,掌握核心技术啊!!!!!
祝大家多读好书,多长见识,多搞技术!!!!! |
|