web安全—万能密码登录(跳过密码验证)
什么是万能密码登录呢,我们可以理解为绕过密码验证。通过构造语句来直接绕过登录的验证。
这里我们举dvwa的靶场为例子
我们打开靶场,看到一个登录页面,上面显示让我们输入用户密码,由于我们不知道他的账号和密码,那我们可以尝试构造一个万能密码进行登录,我们可以猜想到这段登录验证的查询语句是
select * from users where username = 账号 and pwd = 密码
账号和密码是我们输入的地方,是可以进行控制的。
中间的and连接符号,代表了要 账号和密码二者都正确才能验证成功。
但是我们仔细一想,既然账号是我们控制的变量,我们是不是能将后面密码的地方进行注释掉呢
sql语句中#代表了注释。我们可以尝试输入一个账号为 admin# 密码为 123的账户
显示登录失败 ,我们把语句代入看看哪里出错了
select * from users where username = admin# and pwd = 123
大家仔细看,#号后面的内容都被注释掉了,那么说明他原本用来闭合的单引号也被我们注释掉了,所以语句才会进行报错,那我们要手动将他闭合,就要修改成
select * from users where username = admin# and pwd = 123
那我们用户所输入的数据应该就是
账号:admin#
密码:123456
这边显示登录成功,万能密码的原理就是这样。
如果遇到其他靶场,过滤也不一定是单引号,也有可能是双引号,或者加上括号等等,根据实际情况来处理。
上一篇:
Java架构师技术进阶路线图