白话SQL注入(讲给小白)

什么是SQL注入        

        简单来说,SQL注入就是因为程序未能正确处理用户输入,导致用户输入的恶意代码被错误地执行,从而使攻击者能够访问或修改数据库中的信息。

举个例子

        我们使用pikachu来简单复现一下sql注入并展示一下在一次sql注入中都发生了什么。

1、初始页面:

2、正常查询:我们输入用户名为lili,查询结果如下:

3、我们使用恶意语句   ' or 1=1 ; -- :

        这个过程发生了什么呢,我们看一下后台处理用户请求的逻辑:

1、通过开发者模式,我们知道这里使用post请求,将name=' or 1=1 ; -- 参数发送给后端。

2、通过url信息,我们找到sqli_str.php文件并打开查看。我们找到后端查询语句为select id,email from member where username='$name'。我们再把我们输入带进来:

$name会获取我们的输入      ' or 1=1 ; --

所以后端的本次查询语句为:select id,email from member where username='' or 1=1 ; -- '

为什么 or 1 = 1有这么大威力呢

        where true会返回所有行的信息,当mysql接收到where username='' or 1=1,会返回username为空和所有行的信息。

        1=1会返回一个bool值,为TRUE。同时我们也可以用1、2、3等数字或者true来代替。

        where ture会返回所有行的信息,where会寻找行,存在的行都为真。

        这里有一点需要说明一下,如果使用where 列名 = TRUE的话,会返回这一列中含有bool值为TRUE的行。所以下面select * from verifys where name = TRUE;语句返回结果为空。

以下为验证结果验证一下:

mysql> select * from verifys;
+----+----------+------+------+
| id | apikey   | name | bool |
+----+----------+------+------+
|  1 | 87654321 | lili |    1 |
|  2 | 12345678 | bob  |    0 |
|  3 | 00000000 | NULL | NULL |
|  4 | 88888888 | lucy | NULL |
+----+----------+------+------+
4 rows in set (0.00 sec)

mysql> select bool from verifys where TRUE;
+------+
| bool |
+------+
|    1 |
|    0 |
| NULL |
| NULL |
+------+
4 rows in set (0.00 sec)

mysql> select bool from verifys where 1=1;
+------+
| bool |
+------+
|    1 |
|    0 |
| NULL |
| NULL |
+------+
4 rows in set (0.00 sec)

mysql> select bool from verifys where 1;
+------+
| bool |
+------+
|    1 |
|    0 |
| NULL |
| NULL |
+------+
4 rows in set (0.00 sec)

mysql> select bool from verifys where bool = TRUE;
+------+
| bool |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql> select * from verifys where name = TRUE;
Empty set, 1 warning (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值