网络安全进阶学习第九课——SQL注入介绍

文章目录

  • 一、什么是注入
  • 二、什么是SQL注入
  • 三、SQL注入产生的原因
  • 四、SQL注入的危害
  • 五、SQL注入在渗透中的利用
    • 1、绕过登录验证:使用万能密码登录网站后台等。
    • 2、获取敏感数据
    • 3、文件系统操作
    • 4、注册表操作
    • 5、执行系统命令
  • 六、如何挖掘SQL注入
    • 1、SQL注入漏洞分类
      • 按数据类型:
      • 按返回结果:
    • 2、可能存在SQL注入的地方
  • 七、如何判断是否存在SQL注入


一、什么是注入

不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。

注入能导致数据丢失、破坏泄露给无授权方,缺乏可审计性或是拒绝服务。注入有时甚至能导致主机被完全接管

注入攻击的本质:就是把用户输入的数据当做代码执行。(过于信任用户)


二、什么是SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令目的的入侵行为。

SQL注入实质就是闭合前一句查询语句,构造恶意语句,恶意语句被代入SQL语句执行。


三、SQL注入产生的原因

随着B/S(浏览器与服务端)模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水平和经验参差不齐,相当一部分的开发人员在编写代码的时候,没有对用户的输入数据或者是页面中所携带的信息进行必要的合法性判断,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些他想得到的数据。这样就产生了被称为数据库的注入攻击SQL注入攻击。

数据与代码未严格分离;用户提交的参数数据未做充分检查过滤即被代入到SQL命令中,改变了原有SQL命令的“语义”,且成功被数据库执行。

SQL命令可以进行查询、插入、删除等操作,直接将这些命令拼接起来。


四、SQL注入的危害

这些危害包括但不局限于:

  • 1、数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。

  • 2、网页篡改:通过操作数据库对特定网页进行篡改。

  • 3、网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

  • 4、数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。

  • 5、服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

  • 6、破坏硬盘数据,瘫痪全系统。

  • 7、一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。


五、SQL注入在渗透中的利用

1、绕过登录验证:使用万能密码登录网站后台等。

举例:万能密码
假设我的数据名是:
user=admin,密码是password=123456;

正常的查询语句:
select * from users where user=’admin’ and password=’123456’;

使用SQL注入构造的POC是:
select * from users where user=’admin’ or 1=’1’ --+’ and password=’123456’;
这个POC就可以直接把整个表的所有数据全部输出来,无视密码。

注释:
–+ :–是注释的意思,+是空格的意思,浏览器会自动把+识别为空格,假如直接在数据库里面,直接–就可以。

2、获取敏感数据

获取网站管理员帐号、密码等。

3、文件系统操作

列目录,读取、写入文件等。

4、注册表操作

读取、写入、删除注册表等。

5、执行系统命令

远程执行命令。


六、如何挖掘SQL注入

1、SQL注入漏洞分类

按数据类型:

  • 数字型(Integer)
  • 字符型(String)

按返回结果:

  • 显错注入(Error-Based),就是查看查询语句的返回结果是否出现报错,从报错内容来推断数据库相关信息。
  • 盲注(Boolean/Time-Based Blind),就是靠猜测,输入数据查询语句,看返回的自己长度来判读语句是为真还是为假。

2、可能存在SQL注入的地方

登录框、参数名、参数值、搜索框、跟用户有交互的地方、表单的提交、Cookie(asp类型的网站比较多)、目录名、文件名、…

  • 最普遍的注入漏洞是由于参数值过滤不严导致的。
  • Cookie注入漏洞普遍存在于ASP的程序中。
  • 参数名、目录名、文件名等注入漏洞通常存在于有网站路由的程序中。

七、如何判断是否存在SQL注入

根据客户端返回的结果来判断提交的测试语句是否成功被数据库引擎执行,如果测试语句被执行了,说明存在注入漏洞。
在这里插入图片描述

举例:
select * from users where id=1 order by name;
上面SQL语句可能存在注入点的位置:

  • 1、id=1 ;可以构造POC来测试:1’ and 1=1 --+ 或者:1/1、1/0

  • 2、name ;可以构造POC来测试:if(1=1,exp(999),1),这个POC是用来报错的,利用报错来测试是否能被执行,能报错就说明存在注入点。

  • 3、users ;可以构造POC来测试:users where 1=1–+

  • 4、* ;可以构造POC来测试:user()–+


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

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

相关文章

跨境电商代运营模式,Live Market打造跨境电商出海SaaS服务平台

近年来,我国跨境电商发展取得可喜进展。商务部数据显示,跨境电商货物进出口规模占外贸比重由5年前的不足1%上升到目前的5%左右。私域流量业态在电商领域兴起,品牌企业在线上建立自主经营的手机应用软件直接触达用户。跨境电商的发展模式转向平…

【力扣】92. 反转链表 II <链表指针>

【力扣】92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回反转后的链表。 示例 1 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff…

Eclipse进行debug

目录 基本步骤三种执行方式 -- 键盘快捷键variables面板移除debug过的项目通过eclipse调用具有软件界面的项目进行debug各个variable颜色具有的意义 基本步骤 点击eclipse右上角debug按钮 调出debug面板 点击小蜘蛛图标&#xff08;不是点绿色三角的Run&#xff09; 此时会进…

第一个 vue-cli 项目

一、什么是 vue-cli vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;预先定义好的目录结构及基础代码&#xff0c;就好比咱们在创建 Maven 项目时可以选择创建一个骨架项目&#xff0c;这个骨架项目就是脚手架&#xff0c;我们的开发更加…

Maven【入门笔记】

Maven 解决版本依赖的问题 https://www.liaoxuefeng.com/wiki/1252599548343744/1309301146648610 如果没有项目管理工具&#xff0c;在开发项目的时候&#xff0c;我们需要手动管理依赖包&#xff0c;需要管理依赖包的版本、去找到并下载依赖包、还有依赖包所依赖的包 等等。…

百度与AI:历史、投资和监管

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 百度的人工智能在中国具有先发优势 随着ChatGPT的爆火&#xff0c;人工智能重新引起了投资者的注意&#xff0c;然而人工智能并不是突然爆火的&#xff0c;而是全球众多公司在人工智能技术上进行数十年如一日的研发和积累&a…

解决新版 Idea 中 SpringBoot 热部署不生效

标题 依赖中添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <opt…

项目管理中的需求分析:实施策略与最佳实践

引言 在项目管理的过程中&#xff0c;需求分析起着至关重要的作用。理解和定义项目需求是项目成功的关键一步&#xff0c;它可以帮助我们确定项目的目标和范围&#xff0c;以及如何有效地达到这些目标。在本文中&#xff0c;我们将深入探讨需求分析的重要性&#xff0c;讨论如…

rar压缩包怎么改成zip格式

不知道大家有没有遇到需要转换压缩包格式的问题&#xff0c;今天想和大家分享rar压缩包改成zip格式的方法。 方法一&#xff1a; 直接修改rar压缩包的后缀名变为zip&#xff0c;就可以修改压缩包文件格式了 方法二&#xff1a; 先将rar压缩包解压出来&#xff0c;然后再将解…

【Spring】bean的生命周期

1.具体的生命周期过程 bean对象创建&#xff08;调用无参构造器&#xff09; 给bean对象设置属性 bean对象初始化之前操作&#xff08;由bean的后置处理器负责&#xff09; bean对象初始化&#xff08;需在配置bean时指定初始化方法&#xff09; bean对象初始化之后操作&am…

数字IC验证高频面试问题整理附答案(二)

近日后台有同学私信还想要验证的面试题目&#xff0c;这不就来了~ Q16.权重约束中”:”和”: /”的区别 : 操作符表示值范围内的每一个值的权重是相同的,比如[1:3]:40,表示1&#xff0c;2&#xff0c;3取到的概率为40/120&#xff1b; :&#xff0f;操作符表示权重要平均分到…

点击编辑变完成

<template><div><button click"dialogshowtrue">添加部门</button><div>部门列表</div><el-table ref"multipleTable" :data"form" tooltip-effect"dark" style"width: 100%">&l…

无人机管控平台,推动电力巡检管理水平提升

各地区无人机作业水平和管理水平存在参差不齐&#xff0c;电力巡检管理要求与业务发展水平不匹配的问题。同时&#xff0c;巡检数据的存储和管理分散&#xff0c;缺乏有效的整合与共享手段&#xff0c;使得内外业脱节&#xff0c;没有形成统一应用和闭环管理。这就导致巡检数据…

springBoot多数据源使用tdengine(3.0.7.1)+MySQL+mybatisPlus+druid连接池

一、安装部署 1、我这里使用的 3.0.7.1版本&#xff0c;因为我看3.x版本已经发布了一年了&#xff0c;增加了很多新的功能&#xff0c;而且3.x官方推荐&#xff0c;对于2.x的版本&#xff0c;官网都已经推荐进行升级到3.x&#xff0c;所以考虑到项目以后的发展&#xff0c;决定…

K8s影响Pod调度和Deployment

5.应用升级回滚和弹性伸缩

数学学习——最优化问题引入、凸集、凸函数、凸优化、梯度、Jacobi矩阵、Hessian矩阵

文章目录 最优化问题引入凸集凸函数凸优化梯度Jacobi矩阵Hessian矩阵 最优化问题引入 例如&#xff1a;有一根绳子&#xff0c;长度一定的情况下&#xff0c;需要如何围成一个面积最大的图像&#xff1f;这就是一个最优化的问题。就是我们高中数学中最常见的最值问题。 最优化…

【深度学习】Transformer,Self-Attention,Multi-Head Attention

必读文章&#xff1a; https://blog.csdn.net/qq_37541097/article/details/117691873 论文名&#xff1a;Attention Is All You Need 文章目录 1、Self-Attention 自注意力机制2、Multi-Head Attention 1、Self-Attention 自注意力机制 Query&#xff08;Q&#xff09;表示当…

企业服务器中了Locked勒索病毒后怎么办,如何解决问题并提高防范意识

科学技术的发展给我们的生活带来了极大便利&#xff0c;但也为企业带来了安全威胁。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器中了locked后缀勒索病毒&#xff0c;计算机上的所有文件都被加密&#xff0c;无法被正常调取&#xff0c;严重影响了企业的正…

KepwareEX配置API REST接口

服务端Kepware设置 API允许连接设置 创建通道 请求地址(POST)&#xff1a; https://<主机名_或_ip>:<端口>/config/v1/project/channels 以下示例使用postman工具访问API创建了一个名为Channel1 的通道&#xff0c;其使用在本地主机运行的服务器中的Simulator …

UE5 c++ 的文件操作(记录备忘)

函数库.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "Microsoft/AllowMicrosoftPlatformTypes.h" #incl…