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数据库之间的主要差别包括以下几个方面:
规模和应用场景:
- Oracle:通常被认为是大型企业级数据库,适合处理海量数据和高并发访问场景,广泛应用于金融、电信、政府等需要极高稳定性和可靠性的领域。
- MySQL:起源于开源社区,主要用于中小型应用,随着版本的迭代和InnoDB存储引擎的优化,MySQL也能够支持大型网站和复杂应用,尤其在Web服务、云计算和移动应用等领域广泛应用。
开放源代码与成本:
- Oracle:虽然提供了商业版的闭源数据库产品,但也有一些免费或低成本版本(如Express Edition),但总体上其许可费用较高,且维护和支持成本相对较大。
- MySQL:由甲骨文公司拥有,但仍保持开源特性,可以免费下载和使用,对于预算有限或注重成本控制的企业具有吸引力。
事务处理能力:
- Oracle:全面支持ACID事务,并且从很早开始就提供了强大的事务管理和恢复机制,适用于对数据一致性要求极高的场景。
- MySQL:默认配置下,MyISAM存储引擎不支持事务,但InnoDB存储引擎完全支持事务处理,而且在最新版本中,MySQL的事务处理能力得到了显著提升。
功能与性能:
- Oracle:提供了丰富的高级功能,例如分区、表空间、高级索引、并行查询等,同时通过内存管理、资源调度等技术实现高性能计算。
- MySQL:虽然早期版本的功能相对简单,但随着发展,MySQL也增加了很多企业级功能。在某些特定场景下,MySQL可能提供更好的性能表现,尤其是在读密集型应用中。
安全性与权限管理:
- Oracle:具备高度精细的权限管理体系和安全性设置,如角色分配、审计规则等,适合安全敏感环境。
- MySQL:同样具有用户权限管理机制,但在早期版本中可能不如Oracle成熟和精细,不过近年来也在不断完善。
安装与维护:
- Oracle:安装配置较为复杂,系统资源占用较多,维护管理通常需要专业技能。
- MySQL:安装简便,占用资源较少,易于管理和维护,特别适合快速部署和开发测试环境。
平台支持:
- Oracle:跨平台支持广泛,能够在多种操作系统上运行。
- MySQL:同样支持多平台,尤其在Linux环境下表现出色,由于开源性质,有广泛的社区支持和兼容性。
备份与恢复:
- 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"
相关文章:
SQL注入之oracle注入+SQLbypass+sqlmap实战
学习路还很长,切莫轻言放弃! 目录 Oracle数据库介绍 Oracle数据库和MySQL数据库的差别 Oracle数据库注入 SQLbypass姿势 sqlmap工具实战(kali自带) Oracle数据库介绍 Oracle数据库是全球最知名的关系型数据库管理系统(RDBMS)…...
【GPTs分享】GPTs分享之Write For Me
Write For Me 是一个专门定制的GPT版本,旨在为用户提供高质量的文本内容创作服务。它适用于各种写作需求,从商业计划、学术文章到创意故事等。下面是从简介、主要功能、使用案例、优点和局限性几个方面对Write For Me 的详细介绍。 简介 Write For Me …...
css4浮动+清除浮动
浮动 一.常见网页布局1.三种布局方式2.布局准则 二.浮动(float)1.好处2.概念3.三大特性4.使用5.常见网页布局模板6.注意点 三.清除浮动1.why2.本质3.语法4.四种way(后三个都是给父级添加)清除浮动总结 一.常见网页布局 1.三种布局…...
外包干了3个月,技术倒退明显...
先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...
STM32控制数码管从0显示到99
首先 先画电路图吧!打开proteus,导入相关器件,绘制电路图。如下:(记得要保存啊!发现模拟一遍程序就自动退出了,有bug,我是解决不了,所以就是要及时保存,自己重…...
【机器学习算法】KNN鸢尾花种类预测案例和特征预处理。全md文档笔记(已分享,附代码)
本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用࿰…...
Windows 自带的 Linux 子系统(WSL)安装与使用
WSL官网安装教程: https://learn.microsoft.com/zh-cn/windows/wsl/install Windows 自带的Linux子系统,比用VM什么的香太多了。可以自己看官方教程,也可以以下步骤完成。 如果中间遇到我没遇到的问题百度,可以在评论区评论&#…...
C语言--贪吃蛇
目录 1. 实现目标2. 需掌握的技术3. Win32 API介绍控制台程序控制台屏幕上的坐标COORDGetStdHandleGetConsoleCursorinfoCONSOLE_CURSOR_INFOSetConsoleCursorInfoSetConsoleCursorPositionGetAsyncKeyState 4. 贪吃蛇游戏设计与分析地图<locale.h>本地化类项setlocale函…...
原型设计工具Axure RP
Axure RP是一款专业的快速原型设计工具。Axure(发音:Ack-sure),代表美国Axure公司;RP则是Rapid Prototyping(快速原型)的缩写。 下载链接:https://www.axure.com/ 下载 可以免费试用…...
HeadFirst读书笔记
一、设计模式入门 1、使用模式最好的方式“把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们”。以往是代码复用,现在是经验复用。 2、软件开发的一个不变的真理就是变化。 二、设计原则 1、找出应用中可能需要变化之…...
【C++】---内存管理new和delete详解
一、C/C内存分布 C/C内存被分为6个区域: (1) 内核空间:存放内核代码和环境变量。 (2)栈区:向下增长(存放非静态局部变量,函数参数,返回值等等) …...
go-zero微服务入门教程
go-zero微服务入门教程 本教程主要模拟实现用户注册和用户信息查询两个接口。 准备工作 安装基础环境 安装etcd, mysql,redis,建议采用docker安装。 MySQL安装好之后,新建数据库dsms_admin,并新建表sys_user&#…...
蓝桥杯刷题--python-12
3768. 字符串删减 - AcWing题库 nint(input()) sinput() res0 i0 while(i<n): if s[i]x: ji1 while(j<n and s[j]x): j1 resmax(j-i-2,0) ij else: i1 print(res) 3777. 砖块 - AcWing题库 # https://www.a…...
LeetCode LCR 085.括号生成
正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例 2: 输入&#x…...
抖音视频评论数据提取软件|抖音数据抓取工具
一、开发背景: 在业务需求中,我们经常需要下载抖音视频。然而,在网上找到的视频通常只能通过逐个复制链接的方式进行抓取和下载,这种操作非常耗时。我们希望能够通过关键词自动批量抓取并选择性地下载抖音视频。因此,为…...
【web】云导航项目部署及环境搭建(复杂)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、项目介绍1.1项目环境架构LNMP1.2项目代码说明 二、项目环境搭建2.1 Nginx安装2.2 php安装2.3 nginx配置和php配置2.3.1 修改nginx文件2.3.2 修改vim /etc/p…...
软件测试人员必会的linux命令
文件和目录操作: ● ls:列出目录中的文件和子目录。 ● cd:改变当前工作目录。 ● mkdir:创建新目录。 ● rm:删除文件或目录。 ● cp:复制文件或目录。 ● mv:移动或重命名文件或目录。 文本查看和编辑: ● cat:查看文件内容。 ● more或less:分页查看文件内…...
Mac使用K6工具压测WebSocket
commend空格 打开终端,安装k6 brew install k6验证是否安装成功 k6 version设置日志级别为debug export K6_LOG_LEVELdebug执行脚本(进入脚本所在文件夹下) k6 run --vus 100 --duration 10m --out csvresult.csv script.js 脚本解释&…...
小程序--vscode配置
要在vscode里开发微信小程序,需要安装以下两个插件: 安装后,即可使用vscode开发微信小程序。 注:若要实现鼠标悬浮提示,则需新建jsconfig.json文件,并进行配置,即可实现。 jsconfig.json内容如…...
linux僵尸进程
僵尸进程(Zombie Process)是指在一个进程终止时,其父进程尚未调用wait()或waitpid()函数来获取该进程的终止状态信息,导致进程的资源(如进程表中的记录)仍然保留在系统中的一种状态。 当一个进程结束时&am…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
