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