绕过登录进后台

我们都知道后台登陆验证一般的方式都是将用户在登录口输入的账号密码拿去与数据库中的记录做验证,并且要求输入的账号密码要等于数据库中某条记录的账号密码,验证通过则程序就会给用户一个sssion,然后进入后台,否则就返回到登陆口。而对于'or'='or'漏洞,我们先来看以下代码:

<%

pwd = request.form("pwd") 获取用户输入的密码,再把值赋给pwd

name = request.form("name")获取用户输入的用户名再把值赋给name

都没有进行任何过滤

Set rs =Server.CreateObject("ADODB.Connection") 

sql = "select * from Manage_User whereUserName='" & name & "' AndPassWord='"&encrypt(pwd)&"'" 将用户名和密码放入查询语句中查询数据库,

Set rs = conn.Execute(sql)执行SQL语句,执行后并得到rs对象结果,“真”或“假”

If Not rs.EOF = True Then 如果是真则执行以下代码

Session("Name") = rs("UserName")将UserName的属性赋给Name的Session自定义变量

Session("pwd") = rs("PassWord")将PassWord的属性赋给pwd的Session自定义变量

Response.Redirect("Manage.asp")了利用Response对象的Redirect方法重定向Manage.asp

Else 否则执行以下代码

Response.Redirect"Loginsb.asp?msg=您输入了错误的帐号或口令,请再次输入!"

End If

 

 

%>

以上就是一个典型的'or'='or'漏洞例子,针对以上例子我们只需要在用户名处提交'or'='or',这样就使得SQL语句变成:select* from Manage_User where UserName='’or‘='or'' And PassWord='123456'。((假ororand(真/假))=真)执行后得到rs对象的结果为真,这样就能顺利的进入后台了。

 

为了避免出现这个漏洞,现在基本上的后台验证都不会使用这类方式,而是取得用户输入的账号和密码,在SQL中先将用户名与数据库中的记录做对比,若数据库中某条记录的用户名等于用户输入的用户名,则取出该条记录中的密码,然后再与用户输入的密码对比,正确就通过,不正确就返回。

其他的绕过字典:

绕过登录进后台

绕过字典附件,使用burpsuite**后台加字典即可;