SQL注入之oracle注入+SQLbypass+sqlmap实战

 学习路还很长,切莫轻言放弃!

目录

Oracle数据库介绍

Oracle数据库和MySQL数据库的差别

Oracle数据库注入

SQLbypass姿势

sqlmap工具实战(kali自带)


Oracle数据库介绍

Oracle数据库是全球最知名的关系型数据库管理系统(RDBMS)之一,由美国甲骨文公司(Oracle Corporation)开发并维护。作为企业级数据管理解决方案的市场领导者,Oracle数据库在可靠性、安全性、可伸缩性和性能方面具有卓越表现,被广泛应用于各类关键业务场景,包括金融、电信、政府和大型企业的各种复杂应用。

**核心特性:**
1. **关系模型**:基于关系理论设计,通过表格结构组织数据,并支持SQL(Structured Query Language)以实现对数据的高效查询、更新和管理。

2. **高可用性与容错性**:Oracle数据库提供了一系列高级功能来保证服务的连续性和数据的完整性,如实时备份与恢复、故障切换、分布式事务处理等。

3. **可伸缩性**:能够支持从单机到大规模集群环境的部署,可通过分区、网格计算、读写分离等多种方式灵活扩展系统性能和存储容量。

4. **安全性**:内置了丰富的安全措施,包括但不限于用户权限管理、角色分配、审计、透明数据加密(TDE)、虚拟私有数据库(VPD)等,确保数据在存储和传输过程中的安全性。

5. **高性能**:Oracle数据库优化器可以生成高效的执行计划,结合索引、内存缓存、并行查询等功能提升查询速度。

6. **跨平台兼容**:可在多种操作系统平台上运行,包括Linux、Windows、Unix、IBM主机等,并且支持云计算和容器化部署。

7. **PL/SQL支持**:Oracle数据库引入了PL/SQL编程语言,允许开发者编写存储过程、触发器、函数等复杂的数据库内部程序,增强系统的灵活性和可编程能力。

8. **分布式数据库管理**:Oracle数据库还支持分布式数据库环境,使得多个物理数据库能够像一个逻辑数据库那样协同工作,便于进行数据分布和集中式管理。

9. **企业级特性**:提供了Oracle RAC(Real Application Clusters)、Data Guard、GoldenGate等组件,用于实现集群、数据同步和容灾解决方案。

总之,Oracle数据库是一个功能强大、高度成熟的数据管理平台,旨在满足企业和组织在不同发展阶段对数据存储、分析和处理的需求。随着技术发展,Oracle数据库也不断推出新的版本和技术特性,以适应大数据、云计算和AI时代的挑战。
 

Oracle数据库和MySQL数据库的差别

Oracle数据库与MySQL数据库之间的主要差别包括以下几个方面:

  1. 规模和应用场景

    • Oracle:通常被认为是大型企业级数据库,适合处理海量数据和高并发访问场景,广泛应用于金融、电信、政府等需要极高稳定性和可靠性的领域。
    • MySQL:起源于开源社区,主要用于中小型应用,随着版本的迭代和InnoDB存储引擎的优化,MySQL也能够支持大型网站和复杂应用,尤其在Web服务、云计算和移动应用等领域广泛应用。
  2. 开放源代码与成本

    • Oracle:虽然提供了商业版的闭源数据库产品,但也有一些免费或低成本版本(如Express Edition),但总体上其许可费用较高,且维护和支持成本相对较大。
    • MySQL:由甲骨文公司拥有,但仍保持开源特性,可以免费下载和使用,对于预算有限或注重成本控制的企业具有吸引力。
  3. 事务处理能力

    • Oracle:全面支持ACID事务,并且从很早开始就提供了强大的事务管理和恢复机制,适用于对数据一致性要求极高的场景。
    • MySQL:默认配置下,MyISAM存储引擎不支持事务,但InnoDB存储引擎完全支持事务处理,而且在最新版本中,MySQL的事务处理能力得到了显著提升。
  4. 功能与性能

    • Oracle:提供了丰富的高级功能,例如分区、表空间、高级索引、并行查询等,同时通过内存管理、资源调度等技术实现高性能计算。
    • MySQL:虽然早期版本的功能相对简单,但随着发展,MySQL也增加了很多企业级功能。在某些特定场景下,MySQL可能提供更好的性能表现,尤其是在读密集型应用中。
  5. 安全性与权限管理

    • Oracle:具备高度精细的权限管理体系和安全性设置,如角色分配、审计规则等,适合安全敏感环境。
    • MySQL:同样具有用户权限管理机制,但在早期版本中可能不如Oracle成熟和精细,不过近年来也在不断完善。
  6. 安装与维护

    • Oracle:安装配置较为复杂,系统资源占用较多,维护管理通常需要专业技能。
    • MySQL:安装简便,占用资源较少,易于管理和维护,特别适合快速部署和开发测试环境。
  7. 平台支持

    • Oracle:跨平台支持广泛,能够在多种操作系统上运行。
    • MySQL:同样支持多平台,尤其在Linux环境下表现出色,由于开源性质,有广泛的社区支持和兼容性。
  8. 备份与恢复

    • Oracle:提供了逻辑和物理备份方法,以及完善的灾难恢复解决方案。
    • MySQL:也支持各种备份策略,但在早期版本中可能需要更多手动操作或借助第三方工具进行更复杂的备份与恢复任务。

Oracle数据库注入

Oracle数据库注入是一种针对Oracle数据库系统的SQL注入攻击,它发生在Web应用程序未能有效验证或过滤用户输入的情况下。当恶意用户向应用提交精心构造的输入时,这些输入可能包含可执行的SQL代码片段,从而改变了原本预定执行的SQL查询逻辑。

以下是一些Oracle数据库注入的表现形式和防范方法:

**表现形式:**
1. **布尔型注入**:通过构造条件判断语句来确定是否存在某个特定记录,例如`username = 'admin' OR 1=1`。
2. **基于时间的盲注**:利用Oracle内置的延时函数(如`DBMS_LOCK.SLEEP()`)来判断条件是否满足,根据响应时间变化推断数据。
3. **堆叠注入**:在PL/SQL环境中,通过堆叠注入可以执行额外的操作,如调用存储过程、触发器等。
4. **联合注入**:通过 UNION 操作将多个SELECT语句合并以从不同表中获取信息。

**防范措施:**
1. **参数化查询**:使用预编译的PreparedStatement,确保用户输入不会被解释为SQL命令的一部分,而是作为参数传递给查询。
2. **输入验证与过滤**:对所有用户提供的数据进行严格的校验和清理,去除非法字符、特殊符号以及SQL关键字。
3. **最小权限原则**:限制数据库连接账户仅拥有完成任务所需的最低权限,避免直接使用具有大量权限的超级管理员账号。
4. **安全编码实践**:不要在代码中拼接SQL字符串,始终假定所有用户输入都是不可信的,并采用安全编程框架和ORM工具。
5. **使用Oracle的内置安全特性**:
   - 启用数据库审计功能跟踪潜在的SQL注入攻击。
   - 使用Oracle的ROWNUM、绑定变量、WITH语句等特性降低注入风险。
   - 对于复杂的应用场景,可以通过PL/SQL包和程序单元来封装并严格控制对数据库的访问。

6. **保持数据库软件及时更新**:安装最新的安全补丁和修复程序,减少已知漏洞的风险。

总之,预防Oracle数据库注入的关键在于加强应用程序的安全设计,充分认识到所有外部输入都有可能是恶意的,并采取相应的防御措施。同时,定期进行安全审查和渗透测试也是必不可少的。

SQLbypass姿势

参考文章:

生命在于学习——SQL注入绕过-CSDN博客

sqlmap工具实战(kali自带)

基本参数使用:

-u 指定URL

-dbs 检测数据库名

--current-db 查看当前数据库

-D 指定数据库

--tables 列出表名

-T 指定表名

--columns 列名探查

--dump 数据导出

--dump all 脱库

--batch 自动模式

--threads 调整线程数

--os-shell 获得操作系统shell

实例演示:

检测是否存在注入漏洞(GET请求)

sqlmap -u "http://target.com/vuln.php?id=1"

注入点指定:

sqlmap -u "http://target.com/vuln.php?a=xw&id=1" -p id

测试POST数据注入:

sqlmap -u "http://target.com/login.php" --data="username=admin&password=123456"

指定数据库类型

sqlmap -u "http://target.com/vulnerable.php?id=1" --dbms=mysql

自动探测并利用注入点

sqlmap -u "http://target.com/vulnerable.php?id=1" --auto

枚举数据库信息

sqlmap -u "http://target.com/vulnerable.php?id=1" --dbs

获取MySQL数据库中的表名

sqlmap -u "http://target.com/vulnerable.php?id=1" -D mysql --tables

从USERS表中提取列名

sqlmap -u "http://target.com/vulnerable.php?id=1" -D MySQL -T users --columns

获取USERS表中数据

sqlmap -u "http://target.com/vulnerable.php?id=1" -D MySQL -T users --dump

更新数据库内容

sqlmap -u "http://target.com/vulnerable.php?id=1" -D mysql --update="users' SET password='new_password' WHERE username='admin'"

下载文件

sqlmap -u "http://target.com/vulnerable.php?id=1" --file-read=/path/to/file

操作系统命令执行: (同样,这仅适用于演示目的或授权安全审计,在未经授权的情况下是非法的)

sqlmap -u "http://target.com/vulnerable.php?id=1" --os-cmd="id"

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

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

相关文章

29-资源清单的管理工具-helm

一、helm的介绍 1,helm的价值概述 如下图所示,在一个企业中,可能存在多个不同的应用业务,每个业务可能包含多至十几、甚至几十个资源清单,那么对于“运维”和“研发”人员来讲,这么多的资源清单&#xff0…

说说UE5中的几种字符串类

在Unreal Engine 5 (UE5) 的C中,与字符串相关的类主要包括: FString: Unreal Engine中用于处理字符串的主要类,提供了丰富的字符串操作方法和功能。 FText: 用于表示本地化文本的类,可以包含多种语言的文本…

分布式知识整理

分布式锁 以商场系统超卖现象举例 超卖现象一 现象: 商品卖出数量超出了库存数量。 产生原因: 扣减库存的动作在程序中进行,在程序中计算剩余库存,在并发场景下,导致库存计算错误。 代码复现 es.shutdown(); cycl…

Nest.js权限管理系统开发(五)返回格式化

返回格式化拦截器 在上一篇《Nest.js权限管理系统开发(四)Swagger API接入》中,我们在base.controller.ts中创建了多个接口,每个接口都有不同的返回类型。现实中我们往往需要统一返回数据的格式,例如: {&…

【uni-app】路由

(1)路由配置 uni-app 页面路由全部交给框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式(类似小程序在 app.json 中配置页面路由)。 "pages": [{"path": "pages/ind…

蓝桥杯倒计时47天!DFS基础——图的遍历

倒计时47天! 深度优先搜索——DFS 温馨提示:学习dfs之前最好先了解一下递归的思想。 DFS基础——图的遍历 仙境诅咒 问题描述 在一片神秘的仙境中,有N位修仙者,他们各自在仙境中独立修炼,拥有自己独特的修炼之道…

websocket在django中的运用

14-2 聊天室实现思路:轮训、长轮训、websocket_哔哩哔哩_bilibili 参考大佬的B站学习笔记 https://www.cnblogs.com/wupeiqi/p/6558766.html 参考博客 https://www.cnblogs.com/wupeiqi/articles/9593858.html 参考博客 http: 是短连接,无状态的&…

探索网络通信的遗产:AppleTalk Data Stream Protocol (ADSP) 的全面解析

ADSP简介 AppleTalk Data Stream Protocol (ADSP) 是AppleTalk网络协议套件的一部分,设计用于在AppleTalk网络中提供端到端的可靠数据流服务。在1980年代和1990年代,AppleTalk是Apple计算机用于局域网通信的主要网络技术。ADSP提供了一种类似于现代TCP协…

conda 导出/导出配置好的虚拟环境

一. 导出环境配置(yml文件) 1. 在主目录下激活虚拟环境(UE4是我的虚拟环境名称,请根据你自己的名称进行修改) conda activate UE4 2. 运行此代码 conda env export > environment.yml 二. 导入环境配置&#xf…

创建第一个React项目

React脚手架 npx create-react-app react-demonpx是直接从互联网网上拉最新的脚手架进行创建react 运行React项目 npm start若想找到Webpack配置文件 npm ejectReact的基本使用 基本步骤 导入react和react-dom vue 创建react元素 渲染react元素到页面中导入 import React…

python统计分析——多解释变量的方差分析

参考资料:用python动手学统计学 1、导入库 # 导入库 # 用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 用于绘图的库 from matplotlib import pyplot as plt import seaborn as sns sns.set() # 用于估计…

Android 10 音量UI更新解析

1 VolumeUI 的启动 由于VolumeUI 是继承 SystemUI 的,所以它的启动方式和 SystemUI 的启动方式一样。 直接看 VolumeUI 的start()方法 frameworks/base/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java Override public void start() {boolean …

Linux基础命令—进程管理

基础知识 linux进程管理 什么是进程 开发写代码->代码运行起来->进程 运行起来的程序叫做进程程序与进程区别 1.程序是一个静态的概念,主要是指令集和数据的结合,可以长期存放在操作系统中 2.进程是一个动态的概念,主要是程序的运行状态,进程存在生命周期,生命周期结…

YY调音台:直播主播的体验

我是直播平台的主播,日常工作就是在直播间里打游戏、唱歌、聊天之类的。刚开始的时候我的直播工具只有一台电脑,收音也是用的我自己常用的耳机,设备比较简陋,直播间的用户留存率也不高。但是我相信天道酬勤,每天晚上坚…

javaScript数组去重的几种实现方式——适用非引用数据去重

最传统的使用循环遍历 //最传统的使用循环遍历 function getUnique(arr) {let newArr [];for (let i 0; i < arr.length; i) {for (let j i 1; j < arr.length; j) {if (arr[i] arr[j]) {i; //相同丢掉前面的元素}}newArr.push(arr[i]);}return newArr; } 利用Set实…

Seata分布式事务实战XATCC模式

目录 XA模式 XA 模式的使用 Spring Cloud Alibaba整合Seata XA TCC模式 TCC模式接口改造 TCC如何控制异常 Spring Cloud Alibaba整合Seata TCC XA模式 整体机制 在 Seata 定义的分布式事务框架内&#xff0c;利用事务资源&#xff08;数据库、消息服务等&#xff09;对…

【Python从入门到进阶】49、当当网Scrapy项目实战(二)

接上篇《48、当当网Scrapy项目实战&#xff08;一&#xff09;》 上一篇我们正式开启了一个Scrapy爬虫项目的实战&#xff0c;对当当网进行剖析和抓取。本篇我们继续编写该当当网的项目&#xff0c;讲解刚刚编写的Spider与item之间的关系&#xff0c;以及如何使用item&#xff…

【python】0、超详细介绍:json、http

文章目录 一、json二、http2.1 json 读取 request 序列化 三、基本类型3.1 decimal 四、图像4.1 颜色格式转换 一、json import json f open(data.json) # open json file data json.load(f) # 读出 json object for i in data[emp_details]: # 取出一级属性 emp_details, …

云尚办公-0.3.0

5. controller层 import pers.beiluo.yunshangoffice.model.system.SysRole; import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//RestController&#xff1a;1.该类是控制器&#xff1b;2.方法返回值会被写进响应报文的报文体&#xff0c;而…

ChatRTX安装教程

介于本人一直想将现有的智慧城市的文档结合大模型RAG实现知识库问答助手&#xff0c;借着Chat With RTX的风潮正好将机器人和知识库合二为一&#xff0c;方便以后对众多文件进行查阅。 一、概要 Chat With RTX 是一个 Demo&#xff0c;用来将您自己的资料&#xff08;文档、笔…