概念
顾名思义, 万能密码登录就是只要有输入一个"特殊"的用户名, 密码随意输入就可以登录系统
分析
1. 我们先分析一下目标网站, 随便输入用户名和密码, 查看post包:
发现存储用户名和密码的变量分别是: username, password
2. 猜想登录的sql语句, 大体思路是, 只要输入的用户名和密码与数据库中的用户名和密码匹配, 就登录成功, sql语句如下:
select * from USERS where username = '$username' AND password = '$password'
3. 既然知道了sql语句的全貌
尝试构造一个用户名来绕过密码验证部分:
- 用一个"特殊"的用户名作为(唯一)判断条件
- 利用这个用户名为构造sql语句, 制造和绕过(单引号)闭合
举个栗子:
针对上诉的sql语句, 我们可以构造这么一个用户名: ' or 1=1 #
带入sql语句之后就变成这样:
select * from USERS where username = ' ' or 1=1 #' AND password = '$password'
这里就直接把#后面的密码部分给注释掉了, 只剩下
select * from USERS where username = ' ' or 1=1
这个语句永远是为真的, 即万能密码登录