【网络安全学习】 SQL注入01:基础知识

news2024/11/25 3:34:06

💻 1. 什么是SQL注入

SQL注入是一种针对Web程序中数据库层的安全漏洞的攻击方式。它利用了程序对用户输入数据合法性的判断或过滤不严,允许攻击者在设计不良的程序中添加额外的SQL语句,从而执行计划外的命令或访问未授权的数据。攻击者可以通过恶意拼接SQL语句,欺骗数据库服务器执行非授权的任意查询,进一步得到相应的数据信息。

❗️ 2. SQL注入的原理

SQL 注入是利用应用程序中对**用户输入数据的不当处理,**破坏了应用程序与数据库之间预期的正常交互,通过操纵输入来执行恶意的 SQL 操作。

SQL注入基本会满足以下的条件:

  • 参数用户可控:也就是说,从前端传给后端的参数内容是用户可以控制的;

  • 参数带入数据库查询:传入的参数需拼接到SQL语句,且带入到数据库查询。

当应用程序在构建 SQL 查询语句时,直接将用户输入的数据拼接到 SQL 语句中,而没有进行适当的验证、过滤或转义,攻击者就可以通过精心构造恶意的输入数据来改变原本预期的 SQL 语句逻辑

例如,如果一个应用程序根据用户输入的用户名来查询数据库验证登录,正常的 SQL 语句可能是:

SELECT * FROM users WHERE username = 'John'

但如果没有对用户输入进行处理,攻击者输入 ' OR 1=1 -- ,那么最终的 SQL 语句可能变成:

SELECT * FROM users WHERE username = '' OR 1=1 --'

这里的 OR 1=1 总是为真,-- 是注释符,用于注释掉后面的剩余部分。这就导致可以绕过正常的认证逻辑,获取到所有用户的信息,或者执行其他非法的数据库操作。

💻 3. 简单演示

正常查询vince字段,结果显示也是正常的:

在这里插入图片描述

如果我们输入:vince' union select user(),database() #

在这里插入图片描述

数据库的账号和密码便会显示出来。

👀 4. 判断是否存在注入

我们可以通过一些简单的方法来初步判断一个应用是否存在 SQL 注入漏洞。例如,在输入框中输入一些特殊字符,如**单引号 '**观察系统的反馈。如果系统出现错误提示,且错误信息中包含了与数据库相关的详细内容,那么这可能是一个潜在的注入点。

另外,还可以尝试输入一些逻辑运算符,如

id=1 and 1=1

id=1 and 1=2

id=1 or 1=1

id='1' or '1'='1'

id="1" or "1"="1"

观察返回的结果是否有所不同。如果前者返回正常结果,而后者返回异常或无结果,也可能意味着存在注入漏洞。

🎬 几种sql注释符

井号 # :单行注释,需要与url中的#区分,常编写为%23

--空格 :单行注释,注意是两个短线+空格的组合

/*()*/ :多行注释,至少存在两处的注入,/**/常用来作为空格

📚 5. 注入流程

判断是否存在注入并且判断注入类型

判断字段数:order by

确定回显点:union select 1,2

查询数据库信息:@@version @@datadir

查询用户名,数据库名:user() database()

文件读取:union select 1,load_file('c:\\windows\\win.ini')#

写入webshell:select...into outfile...

PS:使用sql注入遇到转义字符串的单引号或者双引号,可使用HEX编码绕过。

✨ 6. SQL注入分类

按照SQLMap中的分类来看,SQL注入只要分为以下几种类型:

  • UNION query SQL injection:可联合查询注入
  • Stacked queries SQL injection:可多语句查询注入,堆叠查询
  • Boolean-based blind SQL injection:布尔型注入
  • Error-based SQL injection:报错型注入
  • Time-based blind SQL injection:基于时间延迟注入

📚 7. 注入数据类型的区分

int整型

select * from users where id = 1

string字符型

select * from users where username='admin'

like搜索型

select * from tables_01 where title like '%标题%'

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

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

相关文章

[Unity] ShaderGraph实现不同贴图素材的同一材质球复用

无意间发现的ShaderGraph小技巧, 可以实现同一个ShaderGraph,同一个Material材质球, 但使用不同的Texture贴图,而Sprite显示不会相互覆盖。 具体实现方法如下: 声明Texture2D时,把名字命名成&#xff1a…

超燃!纯AI生成《泰坦尼克号》大片!浙大阿里发布MovieDreamer:超长电影生成“梦工厂“

论文链接:https://arxiv.org/pdf/2407.16655 项目主页:https://aim-uofa.github.io/MovieDreamer/ github链接:https://github.com/aim-uofa/MovieDreamer 亮点直击 MovieDreamer,一个新颖的分层框架,将自回归模型与扩…

人工智能算法工程师(中级)课程19-模型的量化与部署之模型部署和存储方式与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程19-模型的量化与部署之模型部署和存储方式与代码详解本文全面介绍了神经网络模型在实际应用中的部署与存储策略,重点覆盖了两大主流框架:LibTorch和TensorRT。L…

JavaScript模拟滑动手势

双击回到顶部 左滑动 右滑动 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Gesture…

linux命令更新-文本处理awk

awk命令简介 awk是一种强大的文本处理工具&#xff0c;可以对文本文件进行格式化、统计、计算等操作。它逐行读取文本文件&#xff0c;并对每一行进行处理。awk的语法相对简单&#xff0c;但功能非常强大&#xff0c;是Linux系统中常用的文本处理工具之一。 awk命令基本语法 …

某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

60个常见的 Linux 指令

1.ssh 登录到计算机主机 ssh -p port usernamehostnameusername&#xff1a; 远程计算机上的用户账户名。 hostname&#xff1a; 远程计算机的 IP 地址或主机名。 -p 选项指定端口号。 2.ls 列出目录内容 ls ls -l # 显示详细列表 ls -a # 显示包括隐藏文件在内的所有内…

关于深度学习中的cuda编程,cuda相关介绍

深度学习中会涉及大量的、重复的矩阵运算、图形运算&#xff0c;而CPU对这种简单的加减法加速不够显著&#xff0c;可以使用GPU进行加速运算 CUDA是英伟达旗下的专门为深度学习加速运算的显卡&#xff0c;其对于简单的浮点运算、矩形运算相较于CPU加速了数倍不止 本文介绍CUD…

结合GB/T28181规范探讨Android平台设备接入模块心跳实现

技术背景 好多开发者在用我们Android平台GB28181设备接入模块的时候&#xff0c;更希望跟我们探讨一些协议规范方面&#xff0c;以便在现场对接时&#xff0c;可以知其然知其所以然。比如&#xff0c;有开发者提到&#xff0c;GB28181的状态消息报送这块到底要怎么实现&#x…

搭建Vue开发环境

一、下载Vue.js 进入官网教程安装 — Vue.js (vuejs.org) 下载开发版本到本地 二、安装 Vue Devtools 安装完成后

Spring Boot 与 MongoDB 整合指南

MongoDB MongoDB 是一种基于文档的NoSQL数据库&#xff0c;以其高性能、高可用性和易扩展性而著称。它使用 BSON&#xff08;类似 JSON 的二进制格式&#xff09;来存储数据&#xff0c;提供了灵活的数据模型&#xff0c;使得开发者可以更轻松地存储和查询复杂的数据结构。将M…

Navicat premium最新【16/17 版本】安装下载教程,图文步骤详解(超简单,一步到位,免费下载领取)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Navicat是一款快速、可靠且功能全面的数据库管理工具&#xff0c;专为简化数据库的管理及降低系统管理成本而设计。以下是对Navicat的详细介绍&#xff1a; 一、产品概述 开发目的&#xff1a;Navicat旨在通过其直观和设计…

Linux:core文件无法生成排查步骤

1、进程的RLIMIT_CORE或RLIMIT_SIZE被设置为0。使用getrlimit和ulimit检查修改。 使用ulimit -a 命令检查是否开启core文件生成限制 如果发现-c后面的结果是0&#xff0c;就临时添加环境变量ulimit -c unlimited&#xff0c;之后在启动程序观察是否有core生成&#xff0c;如果…

Qt 学习第二天:创建第一个Qt程序

【最新QT从入门到实战完整版|传智教育】04 创建第一个Qt程序 一、命名规范&#xff08;驼峰命名法&#xff09; 类名&#xff1a; 首字母大写&#xff0c;单词和单词之间首字母大写 函数名和变量名&#xff1a; 首字母小写&#xff0c;单词和单词之间首字母大写 二、快捷…

零食商城管理系统

目录 一、项目背景与目标 1.1 项目背景 1.2 项目意义 1.3 国内外研究现状 1.4 开发工具介绍 二、项目内容与分工 三、 时间表与进度 1. 需求分析阶段&#xff1a; 2. 系统设计阶段&#xff1a; 3. 系统开发阶段&#xff1a; 4. 系统测试阶段&#xff1a; 5. 部署与上…

Selenium 的使用

selenium 是一个自动化测试工具&#xff0c;利用它可以驱动浏览器完成特定的操作&#xff0c;例如点击&#xff0c;下拉等&#xff0c;还可以获取浏览器当前呈现的页面的源代码&#xff0c;做到所见即所爬&#xff0c;对于一些 JavaScript 动态渲染的界面来说&#xff0c;这种爬…

WEB攻防-通用漏洞-SQL 读写注入-MYSQLMSSQLPostgreSQL

什么是高权限注入 高权限注入指的是攻击者通过SQL注入漏洞&#xff0c;利用具有高级权限的数据库账户&#xff08;如MYSQL的root用户、MSSQL的sa用户、PostgreSQL的dba用户&#xff09;执行恶意SQL语句。这些高级权限账户能够访问和修改数据库中的所有数据&#xff0c;甚至执行…

WEB集群-Tomact集群

linux云计算中小企业规模集群架构设计图----总结 在写今天内容前&#xff0c;小编绘制一个图&#xff1a;我设计了linux云计算中小企业规模集群架构设计图&#xff08;也可根据业务需求&#xff0c;增加业务变成大型企业架构设计图&#xff09; 知识补充–故障案例-https no s…

【Golang 面试基础题】每日 5 题(十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

Python爬虫(6) --深层爬取

深层爬取 在前面几篇的内容中&#xff0c;我们都是爬取网页表面的信息&#xff0c;这次我们通过表层内容&#xff0c;深度爬取内部数据。 接着按照之前的步骤&#xff0c;我们先访问表层页面&#xff1a; 指定url发送请求获取你想要的数据数据解析 我们试着将以下豆瓣读书页…