第一关:
字符型注入
爆出数据库的名字
爆出表名
爆值
第二关:
说明是数字型注入
去爆他的数据库名字
爆列
爆值
第三关:
先判断类型,经过筛选,该注入类型为单引号加括号型
其他过程跟LESS1 LESS2是一样的
这里我们来试试报错注入
And extractvalue(1,concat(0x7e,(select database()),0x7e)) %23
爆出表名,再去爆列名
这里列并没有显示完全,可以利用语句and column_name not in (‘ ‘,’ ‘)将没有显示的列名显示出来
然后就是爆值
第四关:
利用单引号并没有给出回显,说明被过滤了,那么就利用双引号”
、
这里爆出了单括号,那么可能就跟第三关一样是基于)的注入类型
根据order by 的报错回显说明,这就是基于)的双引号注入
那么注入方法就跟前面是一样的
第五关:
判断类型
是单引号注入
没有合适的数据返回点。但却有报错,那就用报错注入
后面的流程跟LESS4 是一样的。
第六关:
先判断类型
不难发现这里要利用双引号
依旧利用报错注入,流程跟LESS5一样。
第七关:
从页面看出要让我们使用
Select ... into outfile语句进行注入操作,这里经过测试,发现注入点是’)).
MySQL 导出数据 | 菜鸟教程 (runoob.com)
但使用该语句是有前提的:
目录为空,不做目录限制,任何目录均可。
这里是测试文件读取权限够不够,否则说明权限不够。
And(select count(*) from mysql.user)>0 %23
MySQL是通过权限表来控制用户对数据库访问的,权限表存放在mysql数据库中
之后就可以利用into outfile语句来获取数据库相关的信息
虽然这里语句是报错的,但是文件成功生成了
显示出了数据库的名字
这里\换成\\是防止被转义了
然后就可以去爆他的表名,列名以及值了。
这里的话也可以上传一句话木马,构建我们的webshell
这里的连接密码就是你一句话木马里POST或者GET后面的值
第八关:
单引号没有回显
双引号又有回显,说明单引号被闭合,那么构造的是’ ‘
这里利用布尔盲注
猜数据库的名字,然后猜表名,列名,值
第九关:这关根据判断,报错注入是无法使用的
并没有报错语句回显
当然布尔盲注也是无法使用的,使用布尔盲注的前提是在面对不同的语句的时候有不同的回显,语句正确回显正常,语句错误回显不正常。
这里无论对错回显都一样,语句错误却回显正常,所以这里只能使用时间盲注
意思是如果数据库长度大于6,页面休眠3秒,否则立即响应
这里是推测数据库的第一个字符的ASCII值是否大于M的ASCII值,页面休眠两秒,否则立即相应。
这里大于5时休眠了两秒,说明第一个表的长度为6,以此类推列出其他表的长度
这里推出第一个表名emalis
然后猜解第一个列名,猜出来第一个字段名为id
然后猜id的长度
猜id的字符
Id为1
第十关:
这里是双单引号注入,其他步骤跟第九关是一样的