SQL分类
一.根据注入的方式来分类:
1.get注入
2.post注入
3.cookie注入
二注入方式来分类
1.有回显的注入
2.盲注
3.二次注入
4.报错注入
5堆叠注入
6宽字节注入
简单检测一下
利用单引号或者双引号或者\来检测是否存在注入,如果爆出sql错误或者出现不回显90%可能存在注入
盲注简单判断
sql盲注不太明显,主要是一个状态的变化
那些地方会存在注入漏洞
参数名、参数值、cookie、目录名、文件名->未经检查和过滤即被代入到SQL命令中->注入漏洞
最普遍的注入漏洞是由于参数值过滤不严导致的
Cookie注入漏洞普遍存在于ASP的程序中
参数名、目录名、文件名等注入漏洞通常存在于有网站路由的程序中。
寻找注入漏洞
使用工具
优点:自动化,范围广,效率高
缺点:误报,漏报,测试方法有限
手工测试
优点:测试方法灵活
缺点:效率低,范围窄,因测试者技术水平而异
判断注入漏洞的依据是什么
根据客户端返回的结果来判断提交的测试语句是否成功被数据库引擎执行,如果测试语句被执行了,说明存在注入漏洞。
构造测试语句->提交请求->分析返回结果->符合预期结果->存在SQL注入漏洞
sql注入攻击流程
一、判断是否存在sql注入 与sql注入的类型
判断方法:
1.先看类型,第一种有报错注入的,用先来判断,如果报错就说明有sgl注入
2.遇到盲注需要用逻辑语句,and语句,例如 and 1=1 and 1=2OR 320=6AND 000909=000909–等。
二、判断sql注入是字符型还是数字型
进行闭合
三、爆列数
order by
四、然后数据库名
database() 返回当前数据库名称
利用database()
五爆表名
group_concat()显示所有表
union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
五爆列
table_name具体的表名
table_schema数据库的名称
information_schema.tables系统视图
union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘users’ 可以用十六进制就不需要加
六爆值
union select 1, 2,group_concat(username, password) from users