当前位置: 首页 > news >正文

SQL 注入漏洞详解 - Union 注入

1)漏洞简介

SQL 注入简介

SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询从而进一步得到相应的数据信息。

SQL 注入概念

**SQL 注入漏洞 **主要形成的原因是在数据交互中,站点针对前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到 SQL 语句中后,被当作 SQL 语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击着可以 通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄漏的一种漏洞。

SQL 注入攻击流程

第一步:注入点探测
自动方式:使用 Web 漏洞扫描工具,自动进行注入点发现
手动方式:手工构造 sql inject 测试语句进行注入点发现

第二步:信息获取
通过注入点取期望得到的数据。

  1. 环境信息:数据库类型,数据库版本,操作系统版本,用户信息等。
  2. 数据库信息:数据库名,数据表名,表字段名,字段内容(加密内容破解)

第三步:获取权限
获取操作系统权限:通过数据库执行 Shell,上传木马

2)漏洞原理

可以通过网站存在的查询语句进行构造,为此开发者对其伤透了脑筋,漏洞不光是查询,可能还存在与 API、隐藏链接、http 头数据、写入数据等。需要对数据包的结构和传递函数比较了解,建议学习的时候把数据库的日志打开,就可以查看到传递到数据库的语句是什么样子的了。
需要记住的 information_schema 数据库的 SCHEMATA、TABLES、COLUMNS。 SCHEMATA 表中存放所有数据库的名,字段名为 SCHEMA_NAME。 关键函数 database() 当前数据库名、version() 当前 mysql 版本、user() 当前 mysql 用户。

3)漏洞危害

属于危害较高的漏洞,可以获取敏感信息,修改信息,脱库,上传 Webshell,执行命令。

  1. 参数用户可控:前端传给后端的参数内容是用户可以控制的。( 输入框,URL,抓包 )
  2. 参数带入数据库查询:传入的参数拼接到 SQL 语句,且带入数据库查询。

**SQL 注入漏洞 **发生在前端,属于前端开发设计漏洞。该漏洞与后端数据库执行无关。

SQL 注入被广泛用于非法入侵网站服务器,获取网站控制权。它是应用层上的一种安全漏洞。

通常在设计存在缺陷的程序中,**对用户输入的数据没有做好过滤,导致恶意用户可以构造一些SQL语句让服务器去执行,**从而导致数据库中的数据被窃取,篡改,删除,以及进一步导致服务器被入侵等危害。

环境准备

docker pull sagikazarmark/dvwa
docker run -d --name dvwa -p 8081:80 -p 33060:3306 sagikazarmark/dvwa

image.png

docker exec -it dvwa /bin/bash

image.png

show databases;
  • information_schema:可用来访问数据库的元数据,相似于信息数据库。其中保存着 关于MySQL 服务器 所维护的所有其他数据库的信息(元数据)。如数据库名,数据库的表,表栏的数据类型与访问权限等。

4)SQL 注入分类

4.1)数字型

当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。

测试步骤:
1. 加单引号, URL:www.text.com/text.php?id=3'
对应的 sql: select * from table where id=3' 这时 sql 语句出错, 程序无法正常从数据库中查询出数据, 就会抛出异常; 此时可以判断大概率存在注入, 因为只有服务器将这个单引号一起当作 SQL 语句执行时才会报错.2. 加 and 1=1, URL: www.text.com/text.php?id=3 and 1=1
对应的 sql: select * from table where id=3 and 1=1 语句执行正常, 与原始页面无任何差异;3. 加 and 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • “微软蓝屏事件”深度解析:从系统故障到网络安全的挑战与应对
  • 搭建自己的金融数据源和量化分析平台(四):自动化更新上市公司所属一级、二级行业以及股票上市状态
  • 智能交通的未来:基于深度学习的交通信号标志识别系统详解
  • Python+Pytest+Allure+Yaml+Pymysql+Jenkins+GitLab运行原理
  • 学习记录——day18 数据结构 树
  • 大模型日报 2024-07-28
  • VMware安装(有的时候启动就蓝屏建议换VM版本)
  • 【HTML — 构建网络】HTML 入门
  • PyTorch 的各个核心模块和它们的功能
  • Ubuntu22.04手动安装fabric release-2.5版本
  • 【智能数据分析平台】开发文档
  • 20240728 每日AI必读资讯
  • 基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页
  • 【前端 12】js事件绑定
  • openLayer(一):扇形绘制和旋转
  • CSS实用技巧
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6--对象的扩展
  • gitlab-ci配置详解(一)
  • js算法-归并排序(merge_sort)
  • mongodb--安装和初步使用教程
  • mysql 5.6 原生Online DDL解析
  • MySQL数据库运维之数据恢复
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • node.js
  • python大佬养成计划----difflib模块
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Vue2.x学习三:事件处理生命周期钩子
  • 程序员该如何有效的找工作?
  • 搭建gitbook 和 访问权限认证
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 和 || 运算
  • 简单数学运算程序(不定期更新)
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 如何在 Tornado 中实现 Middleware
  • 实现简单的正则表达式引擎
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​Python 3 新特性:类型注解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (ZT)薛涌:谈贫说富
  • (第一天)包装对象、作用域、创建对象
  • (九)One-Wire总线-DS18B20
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (十一)c52学习之旅-动态数码管
  • (十一)手动添加用户和文件的特殊权限
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET Core 2.1路线图
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core 依赖注入的基本用发