第一关:

sqllabs靶场通关_表名


字符型注入

sqllabs靶场通关_表名_02


爆出数据库的名字

sqllabs靶场通关_单引号_03


爆出表名

sqllabs靶场通关_单引号_04


爆值

sqllabs靶场通关_数据库_05


第二关:

sqllabs靶场通关_数据库_06


说明是数字型注入

sqllabs靶场通关_单引号_07


sqllabs靶场通关_表名_08


去爆他的数据库名字

sqllabs靶场通关_数据库_09


sqllabs靶场通关_单引号_10


爆列

sqllabs靶场通关_单引号_11


爆值

sqllabs靶场通关_表名_12




第三关:

先判断类型,经过筛选,该注入类型为单引号加括号型

sqllabs靶场通关_单引号_13


其他过程跟LESS1 LESS2是一样的

这里我们来试试报错注入

sqllabs靶场通关_单引号_14


And extractvalue(1,concat(0x7e,(select database()),0x7e)) %23

sqllabs靶场通关_单引号_15


sqllabs靶场通关_单引号_16


爆出表名,再去爆列名

sqllabs靶场通关_表名_17


这里列并没有显示完全,可以利用语句and column_name not in ( , )将没有显示的列名显示出来

然后就是爆值

sqllabs靶场通关_表名_18


第四关:

sqllabs靶场通关_表名_19


利用单引号并没有给出回显,说明被过滤了,那么就利用双引号

sqllabs靶场通关_表名_20



sqllabs靶场通关_数据库_21

这里爆出了单括号,那么可能就跟第三关一样是基于)的注入类型

根据order by 的报错回显说明,这就是基于)的双引号注入

sqllabs靶场通关_单引号_22


那么注入方法就跟前面是一样的



第五关:

判断类型

sqllabs靶场通关_数据库_23


是单引号注入

sqllabs靶场通关_单引号_24


没有合适的数据返回点。但却有报错,那就用报错注入

sqllabs靶场通关_单引号_25


后面的流程跟LESS4 是一样的。

第六关:

先判断类型

不难发现这里要利用双引号

sqllabs靶场通关_数据库_26


sqllabs靶场通关_表名_27


sqllabs靶场通关_表名_28


依旧利用报错注入,流程跟LESS5一样。

第七关:

sqllabs靶场通关_数据库_29


从页面看出要让我们使用

Select ... into outfile语句进行注入操作,这里经过测试,发现注入点是)).

MySQL 导出数据 | 菜鸟教程 (runoob.com)

但使用该语句是有前提的:

sqllabs靶场通关_数据库_30


sqllabs靶场通关_数据库_31


目录为空,不做目录限制,任何目录均可。



sqllabs靶场通关_表名_32


这里是测试文件读取权限够不够,否则说明权限不够。

And(select count(*) from mysql.user)>0 %23

MySQL是通过权限表来控制用户对数据库访问的,权限表存放在mysql数据库


sqllabs靶场通关_表名_33


sqllabs靶场通关_表名_34



之后就可以利用into outfile语句来获取数据库相关的信息

虽然这里语句是报错的,但是文件成功生成了

sqllabs靶场通关_表名_35


显示出了数据库的名字



这里\换成\\是防止被转义了

sqllabs靶场通关_单引号_36





然后就可以去爆他的表名,列名以及值了。

sqllabs靶场通关_数据库_37


sqllabs靶场通关_数据库_38


sqllabs靶场通关_数据库_39


sqllabs靶场通关_表名_40



sqllabs靶场通关_表名_41


sqllabs靶场通关_数据库_42




这里的话也可以上传一句话木马,构建我们的webshell



sqllabs靶场通关_表名_43


sqllabs靶场通关_表名_44


这里的连接密码就是你一句话木马里POST或者GET后面的值


sqllabs靶场通关_表名_45


第八关:

sqllabs靶场通关_单引号_46


单引号没有回显

sqllabs靶场通关_数据库_47


双引号又有回显,说明单引号被闭合,那么构造的是

这里利用布尔盲注


sqllabs靶场通关_单引号_48


猜数据库的名字,然后猜表名,列名,值

sqllabs靶场通关_单引号_49


sqllabs靶场通关_表名_50


sqllabs靶场通关_单引号_51




第九关:这关根据判断,报错注入是无法使用的

sqllabs靶场通关_单引号_52


并没有报错语句回显

当然布尔盲注也是无法使用的,使用布尔盲注的前提是在面对不同的语句的时候有不同的回显,语句正确回显正常,语句错误回显不正常。

这里无论对错回显都一样,语句错误却回显正常,所以这里只能使用时间盲注

sqllabs靶场通关_单引号_53


意思是如果数据库长度大于6,页面休眠3秒,否则立即响应

sqllabs靶场通关_表名_54


这里是推测数据库的第一个字符的ASCII值是否大于M的ASCII值,页面休眠两秒,否则立即相应。

sqllabs靶场通关_数据库_55



这里大于5时休眠了两秒,说明第一个表的长度为6,以此类推列出其他表的长度


sqllabs靶场通关_单引号_56


这里推出第一个表名emalis


然后猜解第一个列名,猜出来第一个字段名为id

sqllabs靶场通关_数据库_57


然后猜id的长度

sqllabs靶场通关_表名_58


猜id的字符

sqllabs靶场通关_数据库_59


Id为1

sqllabs靶场通关_表名_60



第十关:

sqllabs靶场通关_单引号_61


这里是双单引号注入,其他步骤跟第九关是一样的