Sql注入攻击介绍与防护

如何防御SQL注入:从攻击技术到防护措施 本文深入探讨了SQL注入攻击的原理及方法,并提供了有效的防护策略。通过分析Google黑客技术以及如何利用特定的搜索查询来发现易受攻击的网站,文章揭示了攻击者如何通过简单的技术手段获取目标,并通过添加单引号等操作判断网站是否存在SQL注入漏洞。接着,文章详细介绍了利用order by、union select等SQL语句获取数据库结构信息、查询数据库版本、列出数据库表和列的方法。此外,还讲解了如何通过SQL注入修改数据,包括利用表单进行盲注。最后,文章着重讲述了如何通过输入字符串操纵、使用十六进制编码、使 阅读详情

1、什么是sql注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

2、sql注入是怎么产生的

1)在应用程序中使用字符串联结方式或联合查询方式组合SQL指令。

2)在应用程序链接数据库时使用权限过大的账户(例如很多开发人员都喜欢用最高权限的系统管理员账户(如常见的root,sa等)连接数据库)。

3)在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸存储程序或是OLE Automation存储程序等)

4)太过于信任用户所输入的数据,未限制输入的特殊字符,以及未对用户输入的数据做潜在指令的检查。

3、SQL注入攻击分类

1)注入点的不同分类

  • 数字类型的注入
  • 字符串类型的注入

2)提交方式的不同分类

  • GET注入
  • POST注入
  • COOKIE注入
  • HTTP注入

3)获取信息的方式不同分类

  • 基于布尔的盲注
  • 基于时间的盲注
  • 基于报错的注入

4、SQL注入实例

1)数字类型注入

在浏览器地址栏输入:learn.me/sql/article.php?id=1,这是一个get型接口,发送这个请求相当于调用一个查询语句:

$sql = "SELECT * FROM article WHERE id =",$id


正常情况下,应该返回一个id=1的文章信息。那么,如果在浏览器地址栏输入:learn.me/sql/article.php?id=-1 OR 1 =1,这就是一个SQL注入攻击了,可能会返回所有文章的相关信息。为什么会这样呢?

这是因为,id = -1永远是false,1=1永远是true,所有整个where语句永远是ture,所以where条件相当于没有加where条件,那么查询的结果相当于整张表的内容

2)字符串类型注入

  1.    '#':'#'后所有的字符串都会被当成注释来处理
SELECT * FROM user WHERE username = 'user'#'ADN password = '111'

 

     2.'-- ' (--后面有个空格):'-- '后面的字符串都会被当成注释来处理

SELECT * FROM user WHERE username = 'user'-- 'AND password = '111'

以上两条语句等同于

SELECT * FROM user WHERE username = 'user'

3)get请求加减法

加法:http://www.blog.com/test.php?id=1%2b1 (%2b是url编码后的 +)

减法:http://www.blog.com/test.php?id=3-1

通过以上加减法注入,在原请求的基础上获得数据表中的其他数据

还有诸如 UNION、order by语句获取数据表列,枚举获取数据库的表、列,获取WebShell、sql盲注等由于篇幅,请自行google

或可参考 https://ctf-wiki.github.io/ctf-wiki/web/sqli/ 

4、SQL注入防护

根据已知的sql注入原理及场景等,建议做如下防范措施

  1. 严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害。
  2. 检查输入的数据是否具有所期望的数据格式,严格限制变量的类型,例如使用regexp包进行一些匹配处理,或者使用strconv包对字符串转化成其他基本类型的数据进行判断。
  3. 对进入数据库的特殊字符('"\尖括号&*;等)进行转义处理,或编码转换。Go 的text/template包里面的HTMLEscapeString函数可以对字符串进行转义处理。如MySQL中的 mysql_real_escape_string() (PHP 4 >= 4.3.0, PHP 5),mysqli_real_escape_string() (PHP 5, PHP 7),PDO::quote() (PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.1)
  4. 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。例如使用database/sql里面的查询函数Prepare和Query,或者Exec(query string, args ...interface{})。
  5. 在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
  6. 避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。

 

君正T31x metartc集成测试 metartc为国内杨大侠部分开源的一款用于嵌入式领域webrtc库,它与谷歌官方webrtc相比,编译到君正平台的可执行文件仅有5M即可实现webrtc的通信。1. 目前实现的是基于开源版v5.0-b0版本做的简单修改,官方的好几个版本都多少缺点东西,我这里给整理了一下。目前是局域网连接的webrtc,后续尝试走stun和turn试一下NAT穿越的效果。 阅读详情

相关推荐

FPGA数字信号处理中定点数的舍入与饱和硬件实现详解

在数字信号处理(DSP)的硬件实现中,定点数运算是核心基础。由于硬件资源(如FPGA的DSP Slice)的位宽有限,连续的乘加运算会导致数据位宽膨胀,严重影响时序和资源利用率。为解决此问题,必须引入舍入(Rounding)和饱和(Saturation)机制。舍入通过对低位进行四舍五入,在可控的精度损失下缩减位宽;饱和则作为动态范围的守护者,防止数据溢出导致信号环绕失真,确保系统行为确定。这两种技术是算法在有限精度硬件上正确、高效运行的关键,广泛应用于滤波器、FFT等DSP模块以及通信、音频处理等场景。本文

weixin_30954817的博客 246

SQL注入攻防简介

注入: 1:数值注入    sql: select * from user where id = ? ; eg:  将id=(123) 写成 id=(123 OR 1=1)  2:字符串注入 sql: select * from user where username = ? and password = ?;         eg: username=' (zx) '  写成

zxing的博客 324

SQL注入绕过information_schema:实战技法与替代路径详解

SQL注入是Web安全领域的核心漏洞类型,其原理是通过构造恶意SQL语句,干扰应用程序与数据库的正常交互逻辑,从而窃取或篡改数据。在渗透测试与CTF竞赛中,绕过常见防护措施是提升技术能力的关键。当标准的信息收集方式受阻时,例如无法访问information_schema数据库,攻击者需要掌握替代的元数据获取方法。这些技术价值在于模拟真实环境中日益严密的防御体系,锻炼在受限条件下的系统性信息收集思维。典型的应用场景包括存在WAF过滤、权限限制或编码干扰的实战环境。本文将围绕SQL注入这一核心,深入探讨如何利用

weixin_33980459的博客 429

DDOS和sql注入网络攻防实验

模拟网络攻防实验 好久没研究渗透攻击了,巩固一下 sql注入攻击 概述 通过对SQL注入的演示,让大家了解SQL注入漏洞的方式,并学习应对此种漏洞的防御方法。 环境拓扑图 Ip地址 操作机IP地址:172.16.11.2 整体说明 1、第一步,判断注入点字符还是数字 字符型 ' and 'a'=a' ' and 'a'='b 数字型 and 1=1 a...

weixin_34221332的博客 1899

目标检测之Mask R-CNN(Pytorch):小白动手实现项目

目标检测之Mask R-CNN:小白动手实现项目Pytorch引言Mask R-CNN原理简述代码、注释及详细解释 引言 首先声明本项目的运行环境。操作系统为Windows,编写环境为Anaconda3 + Jupyter Notebook。Pytorch版本为 torch 1.7.1+cu110 、torchvision版本为 0.8.2+cu110,cuda版本为cu100,显卡为Nvidia 2060。 我是目标检测领域的小白,刚刚完成了Pytorch的相关入门学习任务,所以我认为学习本篇博客的基础

dzc_go的博客 1万+

保姆级教程:用DaVinci Configurator & Developer从零搭建AUTOSAR OS(TC2xx三核实战)

本文提供了一份详细的AUTOSAR OS配置指南,使用DaVinci Configurator和Developer工具从零开始搭建Infineon TC2xx三核系统。涵盖多核配置协同逻辑、版本兼容性陷阱及验证错误的解决方案,帮助开发者在3小时内构建可运行的多核OS框架。

weixin_33940469的博客 313

线上黑客攻防 SQL注入漏洞靶场SQLi-Labs通关教程

SQLi-Labs是一个专业的SQL注入练习平台,该平台包含了以下在测试场景中常见的注入类型;环境共有65个SQL注入漏洞。其中9个环境,可通过本教程,按步骤实验,复现学习该sql注入漏洞; 本攻防实验地址 https://www.anquanlong.com/lab_introduce?lab_id=3 实验目录 0x1 sqli-labs环境介绍 0x2 sql注入基础知识 Less-1错...

安全龙网络安全攻防实验室 4905

告别卡顿!用LVGL+DMA刷新STM32F407的SPI屏幕,性能提升实战

本文详细介绍了如何通过LVGL+DMA技术优化STM32F407驱动SPI屏幕的性能,实现接近60FPS的流畅刷新。从硬件瓶颈分析到SPI与DMA的精细化配置,再到LVGL的双缓冲机制与局部刷新优化,提供了一套完整的性能提升方案。特别适合嵌入式GUI开发中面临卡顿问题的工程师参考。

weixin_42531588的博客 378

攻防世界-supersqli

两个表但从名字来看第一个表比较可疑,不过第二个也有可能,就依次查看各个表的列。flag的位置找到了。题目就叫supersqli,目标数据库也明显了。如果是3列就报错,说明只有两列。结果是后端做了一些简单的过滤,需要更换查找语句。直接查找看不到明显的回显变化。

weixin_49539962的博客 492

运放实现阶梯波发生器-总结报告

实验目的: 学习、理解、掌握方波电路、限幅电路积分累加电路、反馈电路 课程条件: 电脑仿真软件Multisim 原理框图和实验思路: 方波电路通过微分电路可以形成正负脉冲,在通过限幅电路后变为单脉冲,最后在积分电路中形成阶梯波。微分电路存在的意义就是为了防止方波频率过大,从而导致在经过限幅电路的方波,在一个周期内将电容的电充满,这样就不会产生阶梯波。如果方波的频率比较小,可以近似认为是正负脉冲,这样就可以跳过微分电路。 ...............

0 1万+

基于Matlab的自动泊车系统开发:利用模糊控制实现智能停车解决方案的详细教程

Matlab是一种广泛应用于科学计算、工程建模与仿真的编程语言,其强大的工具箱和简洁的编程语法,使其成为开发自动泊车系统的理想选择。在开始编写代码之前,我们需要搭建Matlab的工作环境,并熟悉相关的工具箱,如Fuzzy Logic Toolbox,用于实现模糊控制。首先,确保你已经安装了Matlab软件,并加载了必要的工具箱。接下来,我们将逐步讲解如何在Matlab中实现自动泊车系统。

qq_38334677的博客 663

攻防_漏洞_SQL注入_SQL注入常用方法

SQL注入常用方法

redglare的博客 2475

基于STM32单片机设计的红外人脸测温仪(QT上位机)

基于STM32单片机设计的红外人脸测温仪(QT上位机)是一种结合红外测温和人脸识别技术的设备,可以快速、非接触地测量人体体温并识别身份,广泛应用于人员密集场所的体温筛查和出入管理。基于STM32单片机设计的红外人脸测温仪是一种功能实用、易于使用的人脸测温设备,可以有效提高测温效率和识别准确率,广泛应用于各类人员密集场所的体温筛查和出入管理。

走向CTO的路上... 1719

SQL注入攻击与防护

攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,并且插入的恶意SQL命令会导致原有SQL语句作用发生改变,从而得到欺骗服务器执行恶意SQL命令的一种攻击方式。① 概述开源的自动化SQL注入工具,由Python写成② 主要功能扫描、发现、利用给定URL的SQL注入漏洞③ 特点。

weixin_62707591的博客 7374

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

sql注入攻击与防护

非法用户提交特殊的数据,使得服务器动态脚本构造了对系统有害的sql语句,进而实现了对web系统的攻击,例如数据泄露、非法提权等,这种过程就叫做sql注入。

weixin_42374938的博客 660

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SQL注入攻击防护不足:对SQL注入攻击的防护不足

随着互联网技术的飞速发展,各种应用系统不断涌现。这些系统中,数据库扮演着至关重要的角色。然而,由于缺乏有效的SQL注入攻击防护措施,导致很多数据库被黑客利用来实施恶意行为。本文将从防火墙策略管理和策略分析两个方面对这一问题进行分析并提供解决方案。

ZOMO的博客 1096

Spring Boot 防护 XSS + SQL 注入攻击

不管输入什么参数,打印出的sql都是这样的。这是因为mybatis启用了预编译功能,在sql执行前,会先将上面的sql发送给数据库进行编译,执行时,直接使用编译好的sql,替换占位符“?存储型XSS: 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种“准备好”的方式不仅能提高安全性,而且在多次执行一个sql时,能够提高效率,原因是sql已编译好,再次执行时无需再编译。

一米九的博客 2289

SQL注入攻击及其防护措施(含义+防护实例)

SQL注入攻击的含义以及防护措施案例详解

m0_65776770的博客 967

Spring Boot 如果防护 XSS + SQL 注入攻击

跨站脚本攻击XSS是指攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被解析执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!SQL注入(SQLi)是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;

mry6的博客 1416

Nginx攻击防护、CC防护、防止SQL注入、防XSS的实践配置方法

Nginx攻击防护、CC防护、防止SQL注入、防XSS的实践配置方法

云博客_资源宝分享 1万+

SQL注入攻击:原理分析与防护实战

SQL注入是一种代码注入技术,攻击者通过在应用程序的输入字段中插入恶意的SQL代码,使得应用程序执行非预期的数据库操作。这种攻击利用了应用程序对用户输入缺乏有效验证和过滤的漏洞。用户输入被当作SQL代码的一部分执行,而不是被当作纯粹的数据处理。这违反了"代码与数据分离"的基本安全原则。java体验AI代码助手代码解读复制代码。

sc35262的博客 1156

sql注入定义、原理、攻击和防护

sql注入定义、原理、攻击和防护

军说网事 2814

Spring Boot 如何防护 XSS + SQL 注入攻击 ?终于懂了

这是因为mybatis启用了预编译功能,在sql执行前,会先将上面的sql发送给数据库进行编译,执行时,直接使用编译好的sql,替换占位符“?SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一。存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种“准备好”的方式不仅能提高安全性,而且在多次执行一个sql时,能够提高效率,原因是sql已编译好,再次执行时无需再编译。

Mr丶·Zhou博客 1797

网络安全漏洞分析与防护:SQL注入与XSS攻击

SQL注入和XSS攻击是网络应用中常见且严重的安全漏洞,能够对系统的稳定性、数据完整性及用户安全造成极大威胁。为了有效防护这些攻击,开发者需要在编写代码时高度重视输入验证与输出过滤,采取安全编码实践,并使用现代的安全框架和工具。同时,定期进行安全审计和渗透测试,及时发现并修复潜在漏洞,才能最大程度地保障应用的安全性。

白泽的博客 1731

渗透测试之SQL注入攻击防护

几年前,SQL注入在世界范围内很流行,但现在,SQL注入仍然是最流行的攻击方法之一,开发人员为此头疼。当然主要是因为注入攻击的灵活性,一个目的,多条语句,多种编写方法。SQL注入可以分为工具和手工两种。由于自动化,工具通常比手动注入效率高得多,但与手动注入相比,它们受到限制,因为它们没有针对性。 所有的输入都可能是有害的,有参数的地方都可能存在SQL注入。但是由于浏览器的限制,http头中的一些隐藏链接、API调用和参数往往被忽略。那么如何进行全面的SQL注入挖掘呢?在渗透测试中,无论注入工具多么强大

网站安全专家 370

SQL注入攻击与防护攻略指南

SQL注入攻击与防护摘要 SQL注入是一种通过向Web应用输入参数插入恶意SQL代码来攻击数据库的常见漏洞。本文系统介绍了SQL注入的基本原理、攻击类型、检测方法和防御策略。内容包括:注入点识别技术(单引号测试、布尔测试等)、常见绕过过滤机制的方法(大小写混合、注释分割等)、盲注技术(布尔盲注、时间盲注),以及全面的防护措施(参数化查询、输入验证、最小权限原则等)。

new_daimond的博客 909

WEB三大攻击之—SQL注入攻击与防护

  From:https://www.daguanren.cc/post/sql-injection.html     SQL注入的定义与诱因 定义 SQL攻击(英语:SQL injection),简称注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL...

freeking101的博客 2044
上一篇: web攻击方式 介绍
下一篇: XSS 跨站脚本攻击的攻防
han_code
博客等级 码龄9年 5粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值