目录
一、概述
1.1什么是SQL注入
web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息
1.2原理
攻击者通过用户可控参数中修改或拼接SQL语句,从而破坏原有SQL结构,让SQL数据库执行恶意的语句
二、分类
2.1按照数据提交方式分类
1.get注入
2.post注入
3.Cookie注入
4.HTTP头部注入
2.2按照注入点类型来分类
1.数字型注入点
2.字符型注入点
3.搜索型注入点
2.3按照执行效果来分类
1.基于布尔的盲注
2.基于时间的盲注
3.基于报错的注入
4.联合查询注入
5.堆叠注入
6.宽字节注入
三、注入流程
1.判断是否存在注入点,注入是字符型还是数字型
2.猜解SQL查询语句中的字段数(通常使用order by)
3.确定显示位置
4.获取当前数据库的名字
5.获取数据库中的表名
6.获取表中的字段名
7.获取所需的数据
四、验证方法
这里我们以URL中的注入为例,其他数据交互点相同,添加相同的参数
3.1数字型注入验证
①and验证:在URL后加and 1=1 :www.text.com/text.php?id=1 and 1=1,语句执行正常,与原始页面如任何差异
②在URL后面添加and 1=2:www.text.com/text.php?id=1 and 1=2,语句可以正常执行,但是没有查询出结果,返回数据与原始网页存在差异
满足以上两点就可以认为存在数字型SQL注入,如果是登录框或者其他,在输入参数后进行添加如上两个步骤即可。
注:也可以采用别的方法验证比如在原始数据后面加一减一、