一、SQL,SQL注入是什么
SQL是操作数据库数据的结构化查询语句,一般在网页的应用数据和后台数据库中的数据进行交互式采用SQL。
SQL注入即在web应用程序对用户输入的数据的合法性没有判断或过滤不严而使得攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
SQL注入将web页面的URL,输入的数据包修改成SQL语句,再传给服务器,以此得到数据库信息。
二、注入原理
假设存在一条URL为:HTTP://www.wonton.com/test.php?id=1
这时后台数据库的SQL语句可能是Select * from table where id=1
如果我们在输入框中加一个/,SQL语句变成Select * from table where id=1/ 不符合语法,返回错误
但如果我们输入and 1 = 1,SQL语句变成Select * from table where id=1 and 1 = 1 这样逻辑永真,一定会返回正确。
三、注入过程
1、判断是否有注入
(1)URL/ 报错
(2)URLand 1 = 1 返回正常
(3)URLand 1 = 2 返回错误
2、判断服务器类型和数据库类型
3、根据不同数据库类型进行SQL注入攻击
一般步骤为查看数据库版本,查看数据库名称,查看表名,查看列名。
四、SQL注入分类
1.
数字型注入(输入参数是数字)
后台的查询daim为select email from member where id=$id
输入1,变为select email from member where id=1
字符型注入(输入参数是字符)
后台的查询为 select email from member where id='$id'
输入1,变为select email from member where id='1'
2.按照数据库分类 mysql注入;SQL server注入;Oracle注入;Access注入 ####3. 基于报错的SQL盲注;基于布尔SQL盲注;基于时间的SQL 盲注