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

这边显示登录成功,万能密码的原理就是这样。

如果遇到其他靶场,过滤也不一定是单引号,也有可能是双引号,或者加上括号等等,根据实际情况来处理。

经验分享 程序员 微信小程序 职场和发展