传说,SQL注入是黑客对数据库进行攻击的常用手段,今天就来介绍一下SQL注入。
01
—
SQL注入介绍
SQL注入是网站存在最多也是最简单的漏洞,主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。本文以免费开源数据库MySQL为例。
02
—
SQL注入举例
以万能密码场景举例说明:
这里用户登录用的SQL语句为:
SELECT * FROM user WHERE username='admin' AND password='passwd';
此处admin和passwd分别为用户输入的用户名和密码,如果程序没有对用户输入的用户名和密码做处理,就可以构造万能密码成功绕过登录验证,如用户输入'or 1=1#, SQL语句将变为:
SELECT * FROM user WHERE username=''or 1=1#' AND password='';
''or 1=1为TRUE,#注释掉后面的内容,所以查询语句可以正确执行。这样就绕过了后台的验证,达到注入的目的。
03
—
SQL注入分类
事实上SQL注入有很多种,按数据类型可以分为数字型、字符型和搜索型,按提交方式可分为GET型,POST型,Cookie型和HTTP请求头注入,按执行效果有可以分为报错注入、联合查询注入、盲注和堆查询注入,其中盲注又可分为基于bool的和基于时间的注入。
SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。
目前网络上现存的SQL注入漏洞大多是SQL盲注。
网友评论