SQL注入【1】——通用漏洞/SQL注入/mysql跨库/ACCESS偏移

news2025/6/5 16:20:05

一、知识点:

1、脚本代码与数据库前置知识

2、Access数据库注入-简易&偏移

3、MYSQL数据库注入-简易:权限跨库

二、前置知识:

(一)SQL注入漏洞产生原理分析

SQL注入产生条件:根本条件:可控变量、特定函数。

脚本代码在实现代码与数据库进行数据通讯时(从数据库取出相关数据进行页面显示)将定义的SQL语句进行执行查询数据时。其中的SQL语句能通过参数传递自定义值来实现控制SQL语句,从而执行恶意的SQL语句,可以实现查询其他数据(数据库中的敏感数据,如管理员帐号密码)。这一个过程就可以叫做SQL注入漏洞。

在没有参数的地方不代表没有漏洞,比如下面的登录框地址没有包含参数,但是抓包也是可以看到刚刚输入的账户及密码,即可以通过抓包去修改参数。(因为有些参数在地址上是看不到的)

情况1:http://10.1.1.103:8001/production/PRODUCT_DETAIL.asp

不能说完全没有漏洞测试的可能性,参数以post方式发送请求,或者其他方式。

情况2:http://10.1.1.103:8001/production/PRODUCT_DETAIL.asp?id=1513

这种很明确参数就在地址上可以看到

情况3:http://10.1.1.103:8001/production/PRODUCT_DETAIL.asp?id=1513&page=1

情况3的手工测试:

1)production/PRODUCT_DETAIL.asp?id=1513 注入语句 &page=1

2)production/PRODUCT_DETAIL.asp?id=1513&page=1 注入语句

!!!SQL注入攻击流程!!!

1.猜测数据库类型

ACCESS数据库----单独存在

ASSESS结构:

数据库名

     表名

           列名

                 数据

MYSQL数据库----统一管理

MYSQL结构:

会存在一个概念:最高数据库用户=root用户

为了网站和数据库的安全性,MYSQL内置有ROOT最高用户,划分等级,每个用户对应管理一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。

数据库A—网站A(数据库用户A管理库A)

     表名

          列名

              数据

数据库B—网站B(数据库用户B管理库B)

数据库C—网站C(数据库用户C管理库C)

MYSQL两种思路:
1、非ROOT的注入攻击:常规类的猜解

2、ROOT用户的注入攻击:文件读写操作,跨库查询注入等

黑盒测试中可以采用user()获取当前用户权限,白盒中看连接用户即可!

MYSQL数据存储特性:
MYSQL5.0以上版本:自带的数据库名information_schema

information_schema:存储数据库下的数据库名及表名,列名信息的数据库

information_schema.tables:记录表名信息的表,表名为table_name,库名为table_schema

information_schema.columns:记录列名信息的表,列名为column_name,表名为table_name,库名为table_schema

information_schema.schemata:记录数据库名的信息表,对应字段名:schema_name

获取相关数据:
1.获取数据库版本-看是否符合information_schema查询-version()

union select version(),2,3 
2.获取数据库用户-看是否符合ROOT型攻击-user()

union select user(),2,3 
3.获取当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os

union select @@version_compile_os,2,3 
4.获取数据库名字-为后期猜解指定数据库下的表,列在做准备-database() 

union select database() ,2,3 
ROOT类型攻击-猜解数据,文件读取,跨库查询

获取当前数据库下的表名信息:

union select table_name,2,3 from information_schema.tables where table_schema='数据库名'
获取指定表的列名信息:

union select column_name,2,3 from information_schema.columns where table_name='表名' and table_schema='数据库名'
获取指定数据:

 union select username,password,3 from 表名

2.根据数据库类型选择思路

步骤:

1.通过order by 判断列名数,猜测数据,观察返回结果

 例如:http://xxxx/xxx.asp?id=xxx order by 3

2.猜出列数后,通过union进行联合查询(查询表名)

例如:http://xxxx/xxx.asp?id=xxx union select 1,2,3 from 表名

3.看报出哪个数字,在对应数字的位置写查询语句(查询表名下面的列名)

例如:http://xxxx/xxx.asp?id=xxx union select 1,列名,3 from 表名

(二)SQL注入漏洞危害利用分析

危害就是:数据库的语句能干嘛,他就能干嘛(增删查改数据)比如获取管理员的账户密码,操作数据库里面的数据。

//SQL语句查询,删除,添加,修改等操作

//SQL语句有写法规则也就是说必须符合正确的写法才能执行成功

(三)脚本代码与数据库操作流程

(四)数据库名,表名,列名,数据

(五)数据库类型,数据库用户,用户权限

演示案例:

-ASP+Access-简易注入-字典猜解

由于Access数据库特性导致这个SQL注入是需要借助只字典去拆解表名和列名的,那么就会出现表名或列名猜解不到,可以自定义社工字典或采用偏移注入。偏移注入就是解决表名已知列名未知的情况!

-ASP+Access-偏移注入-报错显示

偏移注入就是解决表名已知,列名未知的情况!

-PHP+MYSQL-简易注入-存储特性

-PHP+MYSQL-跨库注入-权限属性

MYSQL-跨库注入(跨库注入是因为root用户可以统一管理所有的数据库)
跨库注入:实现当前网站跨库查询其他数据库对应网站的数据

获取当前mysql下的所有数据库名:

union select schema_name,2,3 from information_schemata
获取表名和列名和上述一样,这里就不重复写了

注意最后获取对应数据的时候要from 数据库名.表名,不然会查询当前数据库,就不是跨库了

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

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

相关文章

一气之下,关闭成都400多人的游戏公司

关注卢松松,会经常给你分享一些我的经验和观点。 最近,多益网络宣布关闭成都公司,在未来三年内,关闭成都所有的相关公司。原因竟然是输掉了劳动仲裁,赔偿员工38万多,然后一气之下要退出成都,…

windows下编译ffmpeg 最详细教程

1 Ffmpeg下载地址:FFmpeg 使用命令下载 git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 下载完成后会发现如下目录: 2 msys2下载地址:MSYS2 解压好后,选择一个非空路径安装,安装好后路径如下: 为…

基于STM32的通用红外遥控器设计: 解码、学习与发射(代码示例)

摘要: 本文将带你使用STM32打造一款功能强大的万能红外遥控器,它可以学习和复制多种红外信号,并通过OLED屏幕和按键实现便捷操作。我们将深入探讨红外通信原理、STM32编程、OLED显示和EEPROM数据存储等关键技术,并提供完整的代码示…

【Qt】day3 自定义控件、框架、定时器、QPainter、QFile

文章目录 自定义控件封装自定义框架定时器第一种方式第二种方式 (推荐) 事件分发器QPainter基本操作高级设置抗锯齿移动坐标原点 画家画资源图片,并实现手动移动 作业QPaintDevice绘图设备QPixmapQimageQPicture QFile文件读写操作QFileInfo文…

FPGA_GTX:简要版

1. GTX介绍 Xilinx FPGA的GT意思是Gigabyte Transceiver。通常称呼为Serdes、高速收发器。GT在xilinx不同系列有着不同的产品,从7系列到UltraScale系列分别有GTP、GTX、GTZ、GTH、GTY和GTM。不同GT整体结构上类似,为了支持越来越高的line rate&#xff…

virtualbox窗口和win10窗口的切换

1、问题: 从windows切换到虚拟机可以用快捷键 ALTTAB,但是从虚拟机到windows使用 ALTTAB 无法成功切换 2、解决方法: 注意:发现设置为ctrlAlt会导致打开终端快捷键(CtrlAltT)失效,建议这里设置…

Lua语言入门

目录 Lua语言1 搭建Lua开发环境1.1 安装Lua解释器WindowsLinux 1.2 IntelliJ安装Lua插件在线安装本地安装 2 Lua语法2.1 数据类型2.2 变量全局变量局部变量命名规范局部变量作用域 2.3 注释单行注释多行注释 2.4 赋值2.5 操作符数学操作符比较操作符逻辑操作符连接操作符取长度…

HACCP体系认证:守护食品安全的黄金标准

在食品生产过程中,食品安全始终是重中之重。为了确保食品的安全性和质量,越来越多的企业开始采用HACCP(危害分析关键控制点)体系认证。这个体系不仅能帮助企业预防食品安全问题,还能显著提升产品质量和市场竞争力。 HA…

深入探索C语言中的结构体:定义、特性与应用

🔥 个人主页:大耳朵土土垚 目录 结构体的介绍结构体定义结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构体的介绍 在C语言中,结构体是一种用户自定义的数据类型,它允许开发者将不同类型的变量组合在一起…

适用于Mac和Windows的最佳iPhone恢复软件

本文将指导您选择一款出色的iPhone数据恢复软件来检索您的宝贵数据。 市场上有许多所谓的iPhone恢复程序。各种程序很难选择并选择其中之一。一旦您做出了错误的选择,您的数据就会有风险。 最好的iPhone数据恢复软件应包含以下功能。 1.安全可靠。 2.恢复成功率高…

郭明錤:苹果将为Vision Pro推出红外摄像头款AirPods

在科技界,苹果公司的每一次创新都备受瞩目。近日,著名苹果分析师郭明錤透露了一个令人振奋的消息:苹果计划在2026年推出配备红外摄像头的新款AirPods,这款耳机将特别优化与Apple Vision Pro头显的空间体验。这一消息不仅预示着苹果在音频设备领域的又一次技术飞跃,也进一步…

One day for Chinese families

周围生活中的普通家庭的一天流程: 【上班的一天】 【放假的一天】 有家庭的人,上班流程: 01)准备早餐,牛奶,面包 02)叫娃娃起床,一般要蛮久的;沟通交流 -- 哄娃娃 -- 生气…

【Linux进阶】文件系统8——硬链接和符号连接:ln

在Linux下面的链接文件有两种, 一种是类似Windows的快捷方式功能的文件,可以让你快速地链接到目标文件(或目录);另一种则是通过文件系统的inode 链接来产生新文件名,而不是产生新文件,这种称为硬链接&…

html+css+js图片手动轮播

源代码在界面图片后面 轮播演示用的几张图片是Bing上的&#xff0c;直接用的几张图片的URL&#xff0c;谁加载可能需要等一下&#xff0c;现实中替换成自己的图片即可 关注一下点个赞吧&#x1f604; 谢谢大佬 界面图片 源代码 <!DOCTYPE html> <html lang&quo…

前端面试题9(JavaScript数组去重)

1. 使用Set ES6引入了Set数据结构&#xff0c;它只存储唯一的值&#xff0c;因此可以用来快速去重。 function uniqueWithSet(arr) {return [...new Set(arr)]; }// 示例 console.log(uniqueWithSet([1, 2, 2, 3, 4, 4, 5])); // 输出: [1, 2, 3, 4, 5]2. 使用indexOf或inclu…

Poker Game, Run Fast

Poker Game, Run Fast 扑克&#xff1a;跑得快 分门别类&#xff1a; 单张从小到大默认 A < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K 跑得快&#xff1a;单张从小到大 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 &…

第二次练习

目录 一、student表的增删改查 1.向student表中添加一条新记录 2. 向student表中添加多条新记录 3.向student表中添加一条新记录 4.更新表&#xff0c;grade 大于90的加0.5 5.删除成绩为空的记录 二、用户权限部分 1、创建一个用户test1使他只能本地登录拥有查询student表的权…

比赛获奖的武林秘籍:03 好的创意选取-获得国奖的最必要前提

比赛获奖的武林秘籍&#xff1a;03 好的创意选取-获得国奖的最必要前提 摘要 本文主要介绍了大学生电子计算机类比赛和创新创业类比赛创意选取的重要性&#xff0c;并列举了好的创意选取和坏的创意选取的例子&#xff0c;同时说明了好的创意选取具有哪些特点&#xff0c;同时…

当需要对大量数据进行排序操作时,怎样优化内存使用和性能?

文章目录 一、选择合适的排序算法1. 快速排序2. 归并排序3. 堆排序 二、数据结构优化1. 使用索引2. 压缩数据3. 分块排序 三、外部排序1. 多路归并排序 四、利用多核和并行计算1. 多线程排序2. 使用并行流 五、性能调优技巧1. 避免不必要的内存复制2. 缓存友好性3. 基准测试和性…

Qt(MSVC)下报“语法错误缺少“}““语法错误缺少“常数“ 的解决办法

1.现象 目前我在工程中试图使用QHttpServer时&#xff0c;一编译&#xff0c;就报了一堆奇奇怪怪的错误&#xff1a; D:\Qt\httpServer\Qt5.15.2\include\QtHttpServer\qhttpserverrequest.h:75: error: C2143: 语法错误: 缺少“}”(在“(”的前面) D:\Qt\httpServer\Qt5.15.…