首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >分享规则!绕过密码登录直接进入后台

分享规则!绕过密码登录直接进入后台

作者头像
程序猿的栖息地
发布于 2022-04-29 14:37:10
发布于 2022-04-29 14:37:10
3.6K0
举报

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

代码语言:javascript
复制
<%
# 获取用户输入的密码,再把值赋给pwd
pwd = request.form("pwd")

# 获取用户输入的用户名再把值赋给name都没有进行任何过滤
name = request.form("name")

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

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

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

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

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

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

# 了利用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'。((假or真or假and(真/假))=真)执行后得到rs对象的结果为真,这样就能顺利的进入后台了。

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

其他的绕过字典:

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

只做分享,希望各位兄die不要做坏事!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档