【sql】--- sql注入攻击

sql注入详解 目录前言? ?一、漏洞原因分析二、漏洞危害三、sql注入防范四、如何挖掘sql注入漏洞五、常见的注入手法联合查询(union注入)报错注入基于布尔的盲注基于时间的盲注HTTP头注入宽字节注入堆叠查询二阶注入六、sql注入getshell的几种方式结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言。SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没 阅读详情

转载:https://blog.youkuaiyun.com/github_36032947/article/details/78442189

本文主要针对SQL注入的含义、以及如何进行SQL注入和如何预防SQL注入让小伙伴有个了解。适用的人群主要是测试人员,了解如何进行SQL注入,可以帮助我们测试登录、发布等模块的SQL攻击漏洞,至于如何预防SQL注入,按理说应该是开发该了解的事情~但是作为一个棒棒的测试,搞清楚原理是不是能让我们更加透彻地理解bug的产生原因呢~好啦,话不多说,进入正题~

如何理解SQL注入(攻击)?

SQL注入是一种将SQL代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法。

SQL注入攻击是输入参数未经过滤,然后直接拼接到SQL语句当中解析,执行达到预想之外的一种行为,称之为SQL注入攻击。

SQL注入是怎么产生的?

1)WEB开发人员无法保证所有的输入都已经过滤

2)攻击者利用发送给SQL服务器的输入参数构造可执行的SQL代码(可加入到get请求、post请求、http头信息、cookie中)

3)数据库未做相应的安全配置

如何进行SQL注入攻击?

以php编程语言、mysql数据库为例,介绍一下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.字符串注入

有这样一个用户登录场景:登录界面包括用户名和密码输入框,以及提交按钮。输入用户名和密码,提交。

这是一个post请求,登录时调用接口learn.me/sql/login.html,首先连接数据库,然后后台对post请求参数中携带的用户名、密码进行参数校验,即sql的查询过程。假设正确的用户名和密码为user和pwd123,输入正确的用户名和密码、提交,相当于调用了以下的SQL语句:

SELECT * FROM user WHERE username = 'user' ADN password = 'pwd123'
由于用户名和密码都是字符串,SQL注入方法即把参数携带的数据变成mysql中注释的字符串。mysql中有2种注释的方法:

1)'#':'#'后所有的字符串都会被当成注释来处理

用户名输入:user'#(单引号闭合user左边的单引号),密码随意输入,如:111,然后点击提交按钮。等价于SQL语句:

SELECT * FROM user WHERE username = 'user'#'ADN password = '111'
'#'后面都被注释掉了,相当于:

SELECT * FROM user WHERE username = 'user' 
2)'-- ' (--后面有个空格):'-- '后面的字符串都会被当成注释来处理

用户名输入:user'-- (注意--后面有个空格,单引号闭合user左边的单引号),密码随意输入,如:111,然后点击提交按钮。等价于SQL语句:

SELECT * FROM user WHERE username = 'user'-- 'AND password = '111'
SELECT * FROM user WHERE username = 'user'-- 'AND password = '1111'
'-- '后面都被注释掉了,相当于:

SELECT * FROM user WHERE username = 'user'
因此,以上两种情况可能输入一个错误的密码或者不输入密码就可登录用户名为'user'的账号,这是十分危险的事情。

如何预防SQL注入?

这是开发人员应该思考的问题,作为测试人员,了解如何预防SQL注入,可以在发现注入攻击bug时,对bug产生原因进行定位。

1)严格检查输入变量的类型和格式

对于整数参数,加判断条件:不能为空、参数类型必须为数字

对于字符串参数,可以使用正则表达式进行过滤:如:必须为[0-9a-zA-Z]范围内的字符串

2)过滤和转义特殊字符

在username这个变量前进行转义,对'、"、\等特殊字符进行转义,如:php中的addslashes()函数对username参数进行转义

3)利用mysql的预编译机制

把sql语句的模板(变量采用占位符进行占位)发送给mysql服务器,mysql服务器对sql语句的模板进行编译,编译之后根据语句的优化分析对相应的索引进行优化,在最终绑定参数时把相应的参数传送给mysql服务器,直接进行执行,节省了sql查询时间,以及mysql服务器的资源,达到一次编译、多次执行的目的,除此之外,还可以防止SQL注入。具体是怎样防止SQL注入的呢?实际上当将绑定的参数传到mysql服务器,mysql服务器对参数进行编译,即填充到相应的占位符的过程中,做了转义操作。

 

SQL注入漏洞详解总结大全 SQL注入利用手法详解大全 阅读详情

相关推荐

【网络安全】「漏洞原理」(一)SQL 注入漏洞之概念介绍

SQL 注入(SQL Injection)是一种常见的网络攻击技术,它利用应用程序对用户输入数据的处理不当,向数据库中注入恶意代码,从而达到攻击数据库的目的。通常情况下,应用程序接收用户输入数据,将其作为参数传递给数据库执行 SQL 查询语句。如果应用程序没有正确地过滤和验证用户的输入,攻击者就可以通过构造恶意输入,将 SQL 代码注入到查询语句中,从而执行恶意操作,比如删除、修改或者泄露数据库中的敏感信息。这个查询语句中的OR 1=1将始终返回True。

wuli1024的博客 681

SQL注入详解

针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序意料之外结果的攻击行为。 其成因可归结为以下两个原理叠加造成: 1、程序编写者在处理程序和数据库交互时,使用字符串凭借的方式构造SQL语句。 2、未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。 SQL注入的攻击方式分为:报错注入、布尔盲注 、延时注入、堆叠查询、联合查询 、二次注入等等

qq_48904485的博客 2万+

什么是SQL注入攻击以及如何防止SQL注入攻击

一、什么是SQL注入攻击? CASE 1 : 模拟用户登陆案例 (1)准备数据 use jt_db; create table user( id int primary key auto_increment, username varchar(50), password varchar(50) ); insert into user values(null,'张三','123'); ...

Alive的博客 5211

【SQL注入】小白手把手入门SQL注入1-数据库基础

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。关系型数据库关系型数据库是基于关系模型的数据库系统,使用表格(表)来组织数据。数据以行和列的形式存储在表中,每个表代表一个实体或关系,每一行表示一个数据记录,每一列表示记录的属性。关系型数据库使用结构化查询语言(SQL)进行数据的查询和操作。关系型数据库中表与表之间是有很多复杂的关联关系的常见的关系型数据库有等。非关系型数据库。

开水的博客 5532

sql注入是怎么攻击的

SQL注入攻击是一种针对应用程序的安全漏洞,攻击者通过操纵应用程序的输入接口,向后台数据库发送精心构造的恶意SQL查询,从而达到非法获取、修改、删除数据,甚至获得数据库乃至服务器的控制权。盲注分为布尔盲注和时间盲注等类型。: 攻击者利用SQL语法特性,向输入字段提交含有特殊字符(如单引号、双引号、分号、注释符等)和SQL关键字的输入数据,目的是干扰原有查询语句的结构,使其按照攻击者的意图执行。针对支持存储过程的应用,攻击者可能利用存储过程的调用来执行更复杂的攻击逻辑,如执行系统命令、遍历目录、读取文件等。

zengliguang的专栏 1890

Cocos2d-x手游逆向实战:Frida高阶Hook与动态解密技术

Cocos2d-x作为主流跨平台游戏引擎,其混合架构(C++核心+JNI桥接+Lua/JS脚本)和强加固策略(符号剥离、anti-frida、so加壳)使传统逆向方法失效。本文围绕‘无符号定位’‘C++函数硬编码地址识别’‘Lua层AST级劫持’‘OpenGL内存回溯解密’四大关键技术展开,深入解析如何在真实上线项目中稳定hook被strip的libcocos2d.so关键函数、绕过反调试心跳检测、从glTexImage2D参数逆向追踪明文资源,并结合熵值扫描实现零先验知识的内存明文发现。面向已掌握Frid

weixin_30345577的博客 675

sql注入攻击的原理(sql注入攻击防范)

SQL 注入(SQLi)是一种可执行恶意 SQL 语句的注入攻击。这些 SQL 语句可控制网站背后的数据库服务。攻击者可利用 SQL 漏洞绕过网站已有的安全措施。他们可绕过网站的身份认证和授权并访问整个 SQL 数据库的数据。他们也可利用 SQL 注入对数据进行增加、修改和删除操作。 SQL 注入可影响任何使用了 SQL 数据库的网站或应用程序,例如常用的数据库有 MySQL、Oracle、SQL Server 等等。攻击者利用它,便能无需授权地访问你的敏感数据,比如:用户资料、个人数据、商业机密、知识产

weixin_45901902的博客 3万+

ABB机器人C#二次开发实战:从通信打通到数据读写的落地指南(附完整工程)

最近在做自动化产线升级项目时,遇到一个核心需求:用C#上位机实时读取ABB机器人的关节角度、IO信号,同时下发运动指令和参数配置。翻遍全网,要么是Robot Studio的基础操作教程,要么是C++/VC++的老旧案例,C#相关的实操内容要么只给片段代码,要么跳过通信配置、权限设置等关键步骤,导致刚上手时踩了无数坑——连接超时、数据读不到、写入无响应,甚至误触发机器人安全保护。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1395

SQL注入攻击与防护

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

weixin_62707591的博客 7374

3D视觉引导技术在机器人焊接中的应用

通过对比传统的2D视觉和3D视觉技术在焊接领域的应用差异,探讨了3D视觉引导技术在提高焊接精度、适应不规则工件形状和增强自适应能力方面的优势。本文对3D视觉引导技术在机器人焊接中的应用进行了深入探讨,总结了其在提高焊接精度、适应不规则工件形状和增强自适应能力方面的优势,并通过应用案例展示了其在焊接路径规划、焊缝检测和焊接质量控制等方面的重要作用。1. 提高焊接精度:3D视觉引导技术能够精确测量焊接工件的三维形状和位置,为机器人提供精准的焊接路径规划和跟踪,从而提高焊接精度。三、3D视觉引导技术概述。

2302_79273122的博客 1836

ROS应用之如何配置RTOS满足机器人系统中的实时要求

实时操作系统(RTOS)基本概念实时操作系统(RTOS)是设计用于实时应用的操作系统,其主要目标是在确定的时间内完成任务。RTOS的任务调度算法和优先级控制机制能够确保高优先级任务按时完成。精确的传感器数据采集:传感器数据需要在规定时间内采集并传输给控制系统。快速响应外部事件:对于控制系统,需要确保指令在最短的时间内得到响应。任务的调度周期:任务的周期可以通过公式计算,其中 ftask 是任务的调度频率。优先级分配。

weixin_68094467的博客 1008

什么是 SQL 注入攻击,SQL 注入攻击的原理是什么

SQL 注入攻击是一种利用 Web 应用程序中的 SQL 语句输入漏洞的攻击方式。攻击者可以通过在 Web 应用程序中输入恶意 SQL 语句来获取敏感数据、更改数据或执行其他恶意操作。SQL 注入攻击通常发生在 Web 应用程序中使用用户输入的数据来构建 SQL 语句的情况下。攻击者可以通过在用户名或密码字段中输入恶意 SQL 代码来进行攻击。这个 SQL 语句将会返回所有用户的信息,因为OR 1=1条件始终为真。通过这种方式,攻击者可以绕过用户身份验证,获取所有用户的信息。

程序员徐师兄的博客 1408

OpenIddict实战指南:在.NET Core中构建安全的OAuth 2.0与OpenID Connect服务

本文详细介绍了如何在.NET Core中使用OpenIddict框架构建安全、标准的OAuth 2.0与OpenID Connect授权服务。内容涵盖从快速搭建授权服务器、理解核心配置与授权流程,到集成用户数据库、实现完整登录授权,以及生产环境下的安全加固与部署指南,为.NET开发者提供了一套现代、可维护的认证授权解决方案。

weixin_29229989的博客 355

SQL注入攻击详解

一、什么是SQL注入 SQL 注入(SQLi)是一种注入攻击,,可以执行恶意 SQL 语句。它通过将任意 SQL 代码插入数据库查询,使攻击者能够完全控制 Web 应用程序后面的数据库服务器。攻击者可以使用 SQL 注入漏洞绕过应用程序安全措施;可以绕过网页或 Web 应用程序的身份验证和授权,并检索整个 SQL 数据库的内容;还可以使用 SQL 注入来添加,修改和删除数据库中的记录。 SQL 注...

程序员世杰 8675

数据仓库建模的步骤-从需求分析到模型优化的全面指南

数据仓库建模是一个系统化的过程,旨在设计和构建一个高效、可扩展的数据存储和分析环境。它的目标是将来自不同源系统的数据整合到一个统一的、面向主题的、随时间变化的数据集合中,以支持企业的决策制定过程。数据仓库建模不仅仅是创建表格和定义关系,它更是一门艺术,需要平衡业务需求、技术限制和未来的可扩展性。提供快速的查询性能支持复杂的分析需求适应业务的变化和增长保持数据的一致性和准确性接下来,让我们深入探讨数据仓库建模的每个主要步骤。

一个8年大数据开发工程师的碎碎念 2102

基于YOLOv11的建筑图纸物体检测系统设计与实现

包含多种建筑平面图,标注了墙体、门窗等元素:CAD格式的建筑图纸数据集:专门针对建筑元素的标注数据集自定义数据集:使用LabelImg等工具自行标注的建筑图纸本文以FloorPlanDataset为基础,结合部分自定义标注数据构建混合数据集。wall (墙体)door (门)window (窗)stair (楼梯)furniture (家具)text (文字标注)dimension (尺寸标注)column (柱子)

YOLO 536

注入攻击,SQL注入攻击

Injection注入攻击原理 攻击方式 防御手段 SQL注入攻击 如何判断网页是否存在SQL注入攻击

菜菜的博客 686

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3555

sql注入攻击原理

应用程序在未正确过滤或者验证用户输入数据的情况下,将恶意的 SQL 查询与应用程序原本的查询逻辑组合在一起,并发送到后端数据库服务器执行。SQL 注入攻击是一种常见的网络安全攻击,利用了应用程序对用户输入数据的不正确处理,导致恶意用户能够在 SQL 查询中插入恶意的 SQL 代码,以执行未经授权的数据库操作。总是为真,因此查询语句的条件总是为真,无论密码是什么,都将返回一个用户记录,从而绕过了身份验证,使攻击者成功登录到系统中。:定期监控应用程序的数据库活动,并记录潜在的 SQL 注入攻击尝试。

完颜振江 2613

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PHP SQL注入攻击与防御

PS:下章节我会就XSS/CSRF写一篇文章,还请各位关注1.什么是SQL注入攻击?百度百科:所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是...

qq27898的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SQL 注入攻击介绍

SQL 注入攻击介绍

代码星辰的博客 5345

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SQL注入攻击

1.SQL注入的原理SQL注入就是通过web表单吧SQL命令提交到web应用程序,由于程序没有细致的过滤用户输入的数据,造成字符串拼接,进而恶意的SQL语句被执行,造成数据库信息泄露,网页篡改,数据库被恶意操作等 2.SQL注入的危害数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。网页篡改:通过操作数据库对特定网页进行篡改。网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员账户被窜改。

qq_67812668的博客 2558

SQL注入攻击的后果

在一个典型的web应用程序中,当用户在前端提交表单请求,服务端会根据用户输入的数据生成相应的SQL语句,然后在数据库中查询或操作所需的数据。SQL注入攻击是一种常见的网络攻击方式,当攻击者成功地通过注入恶意代码或语句修改或删除数据库中的数据时,就会对目标系统和用户造成严重的损害。如果攻击者成功地注入代码并可控制数据库中的数据,那么他就可以获取数据库中的全部数据,包括用户名、密码、身份证号、银行账号等敏感信息。同时,应该及时停止那些被盗用或撤销的账户的权限,并监视数据库的活动,以及时维护数据库的安全。

Kali与编程 1295

SQL注入攻击的原理与防范

7      然后点击工具栏中的开始按钮开始自动检测 SQL 注入漏洞情况。从检测结果中可以看到, 该网站的 SQL 注入类型为“ Integer (字符型) ” ,后台数据库类型为“ MS SQL with Error ” 。     5.  在主界面中的“ Information ”选项卡中,点击“ Select

langjian2012的专栏 4103

SQL注入攻击案例

预编译SQL就是数据库提前把SQL语句编译成二进制,这样反复执行同一条SQL语句的效率就会提升。由于SQL语句是解释型语言,所以在拼接SQL语句的时候,容易被注入恶意的SQL语句。SQL语句编译的过程中,关键字已经被解析过了,所以向编译后的SQL语句传入参数,都被当做字符串处理,数据 库不会解析其中注入的SQL语句。输入结果为0 SQL注入攻击失败 预防成功。使用预编译机制预防SQL注入攻击。《新闻管理系统》控制台程序。SQL注入代码运行效果。

weixin_62245804的博客 1263
上一篇: 【java】--- 静态代理、jdk动态代理和cglib剖析
下一篇: 【kafka】--- Kafka 使用Java实现数据的生产和消费demo
Beat_Boxer
博客等级 码龄9年 18粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值