sql注入之(登录框绕过)

sql注入之(登录框绕过)

原理说明:
Mysql数据库查询语句:
一般的登录框sql语句如下:
select name.passwd from users where username=‘name’ and password=‘pwd’;

分析:
如果我们输入的是正确的用户名与密码,肯定就可以登陆进去,错的就不行了。但是这个验证机制可以通过SQL语句来构造一个特殊的“字符串”通过验证。

比如我们在用户名中输入 ‘or 1=1#,密码随随意。

我们把它带入到上面的那条语句中,就变成了

select name.passwd from users where username= ‘’ or 1=1#’ and password=???

我们分析下语义,在SQL语法中 # 是注释符,所以后面的语句都会杯注释掉,那么上面的语句就等价于

select name.passwd from users where username=’’ or 1=1

我们知道SQL语句中where相当于判断语句,并且是由 or 连接的,所以 username=’’ 和 1=1 中有一个为真就为真。1=1肯定为真,所以语句又等价于
select name.passwd from users
也就是说我们用 ‘or 1=1# 这么一个字符串就可以绕开登陆的密码,直接进入程序。
条件:仅限于那些可以被注入的程序或者网页
修复意见:对用户输入的语句进行注解,防止用户构造恶意sql语句来爆破!
下面找了个靶场来测试一下(靶场来源于墨者学院)
sql注入之(登录框绕过)_第1张图片
我们直接将账户构造万能语句,秘密随意填,也可以不填,然后点击登录,直接绕过,登录成功!
sql注入之(登录框绕过)_第2张图片

你可能感兴趣的:(实战集)