SQL是什么?

SQL是用于访问和处理数据库的标准的计算机语言

SQL漏洞产生的原理?

网站开发人员未对用户输入的数据进行合法性校验,攻击者通过构造恶意语句来实现对数据库的任意操作。

当网站后端存在以下代码时,将会产生SQL注入漏洞。

$sql = "SELECT * FROM users WHERE userId=$userId Limit 0,1";
$result = mysql_query($sql);

$userId为后端接收参数,人为可控。

当攻击者输入$userId=-1 or 1=1

例子:

userId = 1 and 1=1,真 与 真 = 真,查询结果为userId为1的用户。

userId = 1 and 1=2,真 与 假 = 假,返回空集,查询结果不存在。

与或非,逻辑运算符

常见的SQL注入漏洞有哪些?

常见的SQL注入漏洞主要分为以下5种:

  1. 内联查询注入(Union query SQL Injection)
  2. 基于布尔的盲注(Boolean-based blind SQL Injection)
  3. 基于时间的盲注(Time-based blind SQL Injection)
  4. 基于报错的注入(Error-based SQL Injection )