SQL注入简介
SQL注入是网站存在最多也是最简单的漏洞,主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。本文以免费开源数据库MySQL为例,看懂本文需要了解基本SQL语句。
SQL注入条件
1.参数是用户可控的
2.参数被带入数据库中进行查询
SQL注入的危害
1.数据库信息泄露
2.获取webshell
3.网页篡改
4.网站挂马
5.获取系统权限
6.万能密码
7.文件读取
等
SQL注入判断
当传入的参数为 1’ 时,数据库会执行以下代码,并会报错,因为这是不符合数据库语法规范的:
select * from users where id=1’
当传入的参数为and 1=1 时,不会报错,因为1=1为真,所以返回的页面是正常的;当传入的参数为and 1=2时,因为条件为假,所以会返回一个不同的结果:
select * from users where id=1 and 1=1 #条件为真,页面正常无变化
select * from users where id=1 and 1=2 #条件为假,页面异常或变化
SQL注入类型
按数据库类型:
Access、MsSQL、MySQL、Oracle、DB2等
按提交方式:
GET、POST、cookie、HTTP头、XFF
按注入点类型:
数字型、字符型、搜索型
按执行效果:
布尔盲注、时间盲注、报错注入、联合注入、堆叠查询注入