前言

要说万能密码登录,首先说一下万能密码登录适用的后端场景

对于程序设计不够严谨的代码来说,登录功能的验证逻辑可能是这样的:

$sql = "SELECT * FROM user WHERE username = '{$username}' AND password = '{$password}'";
$res = $dbConnect->query($sql);

后端对前端输入的用户名和密码没有进行可行性的校验,直接进行SQL构造查询
也就是这样:

$sql = "SELECT * FROM user WHERE username = ' 'or 1=1 # ' AND password = ' 'or1=1 # ' ";

这时,可以利用SQL语句上的逻辑漏洞,欺骗后端程序,从而成功登录

解题过程

打开靶场看一下:

既然题目就是万能密码,那就直接试一下吧:
密码输入:
'or 1=1 #

这里第一个单引号是与原SQL语句的引号配对,然后后面的#号,是为了注释掉原SQL语句的的引号,然后密码随意填写,登录试一下:

成功,这篇文章主要还是学习万能密码登录的原理

最后修改:2020 年 08 月 10 日 02 : 36 PM