前言
要说万能密码登录,首先说一下万能密码登录适用的后端场景
对于程序设计不够严谨的代码来说,登录功能的验证逻辑可能是这样的:
$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语句的的引号,然后密码随意填写,登录试一下:
成功,这篇文章主要还是学习万能密码登录的原理
4 条评论
博主真是太厉害了!!!
老哥你输入这个'不会被转义?OωO
没事了,是我下的这个靶机里面有一个waf,晕了
自带waf的靶机吗∠( ᐛ 」∠)_