专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
AustinDatabases  ·  9个群2025上半年总结,OB、PolarD ... ·  2 小时前  
AustinDatabases  ·  卷呀卷,Hybrid ... ·  昨天  
AustinDatabases  ·  卷呀卷,Hybrid ... ·  昨天  
数据中心运维管理  ·  谷歌云大规模宕机 ·  昨天  
数据中心运维管理  ·  拥有这3张故障对照表,数据中心空调维修变得很简单! ·  2 天前  
dbaplus社群  ·  MySQL 8.0 的这个参数千万别乱改! ·  2 天前  
51好读  ›  专栏  ›  数据分析与开发

SQL 注入详解

数据分析与开发  · 公众号  · 数据库  · 2017-01-10 21:14

正文

请到「今天看啥」查看全文


SELECT first_name, last_name FROM users WHERE user_id = '1' or '1'='1'


注意一下单引号,这是 SQL 注入中非常重要的一个地方,所以注入代码的最后要补充一个 '1'='1让单引号闭合。


由于 or 的执行,会把数据库表 users 中的所有内容显示出来,



下面对三种主要的注入类型进行介绍。


Boolean-based 原理分析


首先不得不讲SQL中的AND和OR


AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。


AND:返回第一个条件和第二个条件都成立的记录。


OR:返回满足第一个条件或第二个条件的记录。


AND和OR即为集合论中的交集和并集。


下面是一个数据库的查询内容。


mysql> select * from students;

+-------+-------+-----+

| id    | name  | age |

+-------+-------+-----+

| 10056 | Doris |  20 |

| 10058 | Jaune |  22 |

| 10060 | Alisa |  29 |

+-------+-------+-----+

3 rows in set (0.00 sec)


1)


mysql> select * from students where TRUE ;

+-------+-------+-----+

| id    | name  | age |

+-------+-------+-----+

| 10056 | Doris |  20 |

| 10058 | Jaune |  22 |

| 10060 | Alisa |  29 |

+-------+-------+-----+

3 rows in set (0.00 sec)


2)


mysql> select * from students where FALSE ;

Empty set (0.00 sec)


3)


mysql> SELECT * from students where id = 10056 and TRUE ;

+-------+-------+-----+

| id    | name  | age |

+-------+-------+-----+

| 10056 | Doris |  20 |

+-------+-------+-----+

1 row in set (0.00 sec)


4)


mysql> select * from students where id = 10056 and FALSE ;

Empty set (0.00 sec)


5)


mysql> selcet * from students where id = 10056 or TRUE ;

+-------+-------+-----+

| id    | name  | age |

+-------+-------+-----+

| 10056 | Doris |  20 |

| 10058 | Jaune |  22 |

| 10060 | Alisa |  29 |

+-------+-------+-----+







请到「今天看啥」查看全文