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注入漏洞主要分为以下5种: