当前位置: 首页 > news >正文

网络安全进阶学习第九课——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()–+


相关文章:

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

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

一个计算机专业的学生数据结构这门课学到什么程度才能算学的还不错?

数据结构之所以重要是因为它处于算法中的基础地位,与解决实际问题关系密切;而之所以不重要是因为课本上能学到的所有实现都已经有人造过轮子了,甚至已经作为很多语言的标准API存在了。 换句话来说,在以后的编码生涯中&#xff0c…...

[语义分割] ASPP不同版本对比(DeepLab、DeepLab v1、DeepLab v2、DeepLab v3、DeepLab v3+、LR-ASPP)

1. 引言 1.1 本文目的 本文主要对前段时间学习的 ASPP 模块进行对比,涉及到的 ASPP 有: ASPP in DeepLab v2,简称 ASPP v2ASPP in DeepLab v3,简称 ASPP v3ASPP in DeepLab v3,简称 ASPP v3ASPP in MobileNet v3&am…...

anaconda创建虚拟环境在D盘

【看一看就行,又是挺水的一期(每一季都掺和一点子水分也挺好)】 一、创建: conda create --prefixD:\python37\py37 python3.7 这下就在D盘了: 二、激活刚刚那个环境: activate D:\pyhton37\py37​ &…...

Java设计模式之工厂设计模式

简介 工厂模式是一种常见的设计模式,用于创建对象的过程中,通过工厂类来封装对象的创建过程。其核心思想是将对象的创建和使用分离,从而降低耦合度,提高代码的可维护性和可扩展性。工厂模式通常包括三种类型:简单工厂…...

uniapp使用阿里图标

效果图: 前言 随着uniApp的深入人心,我司也陆续做了几个使用uniapp做的移动端跨平台软件,在学习使用的过程中深切的感受到了其功能强大和便捷,今日就如何在uniapp项目中使用阿里字体图标的问题为大家献上我的一点心得&#xff0…...

20230803激活手机realme GT Neo3

20230803激活手机realme GT Neo3 缘起: 新买的手机:realme GT Neo3 需要确认: 1、4K录像,时间不限制。 【以前的很多手机都是限制8/10/12/16分钟】 2、通话自动录音 3、定时开关机。 4、GPS记录轨迹不要拉直线:户外助…...

Spring Cloud Feign+Ribbon的超时机制

在一个项目中(数据产品),需要对接企业微信中第三方应用。在使用 Feign 的去调用微服务的用户模块用微信的 code 获取 access_token 以及用户工厂信息时出现 Feign 重试超时报错的情况,通过此篇文章记录问题解决的过程。 一、问题重…...

使用docker 搭建nginx + tomcat 集群

创建3个Tomcat容器,端口分别映射到 8080,8081,8082,使用数据卷挂载,分别将宿主机目录下的 /opt/module/docker/tomcat3/ROOT1/,/opt/module/docker/tomcat3/ROOT2/,/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部…...

从Spring的角度看Memcached和Redis及操作

目录 Memcached和Redis的区别 适用场景 Memcached配置使用 Redis配置使用 在SpringBoot的框架里,有直连Redis的SDK却没有Memcached的,可见相比地位。不过各有各的适应场景,Redis这个单线程模型确实非常强。 Memcached和Redis的区别 共同…...

【C语言学习】C语言的基础数据类型

一、数据类型 1.整型 short(短整型) int(整型 long(长整型) long long(长整型)2.浮点型 float(单精度型) double(双精度型) long double3.字符类型 char…...

使用AIGC工具提升安全工作效率

新钛云服已累计为您分享760篇技术干货 在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于: 开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、…...

HBase概述

HBase 一 HBase简介与环境部署 1.1 HBase简介&在Hadoop生态中的地位 1.1.1 什么是HBase HBase是一个分布式的、面向列的开源数据库HBase是Google BigTable的开源实现HBase不同于一般的关系数据库, 适合非结构化数据存储 1.1.2 BigTable BigTable是Google设计的分布式…...

el-popover全屏不显示(bug记录)

我做了一个el-table全屏展示的功能, 然后里面的el-popover在全屏后无法展示, 刚开始以为是写唯一的key或者ref, 发现写了也不行, 后来以为要写’:append-to-body“false”, 最后发现是我的外层的层级写得太高了; position: fixed; z-index: 9999; <div class"box"…...

react中使用redux-persist做持久化储存

某天下午折腾着玩的 – 笔记 安装相关依赖 npm install reduxjs/toolkit redux-persist redux react-redux// store.jsx import { configureStore, getDefaultMiddleware } from "reduxjs/toolkit"; import { persistStore, persistReducer } from "redux-per…...

【leetcode】203. 移除链表元素(easy)

给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* Lis…...

InfiniBand、UCIe相关思考

InfiniBand、UCIe相关思考 内容1、InfiniBandInfiniBand是什么&#xff1f;InfiniBand的来历是什么&#xff1f;InfiniBand为什么重要&#xff1f;InfiniBand相较于Ethernet区别&#xff1f;同领域内还有其他哪些技术&#xff1f;InfiniBand中RDMA是种什么技术&#xff1f; 内容…...

[C++项目] Boost文档 站内搜索引擎(3): 建立文档及其关键字的正排 倒排索引、jieba库的安装与使用...

之前的两篇文章: 第一篇文章介绍了本项目的背景, 获取了Boost库文档 &#x1fae6;[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍…第二篇文章 分析实现了parser模块. 此模块的作用是 对所有文档html文件, 进行清理并汇总 &#x1fae6;[C项目] …...

el-date-picker回显问题解决记录

el-date-picker回显问题记录 组件结构 <el-date-pickerv-model"time"type"datetimerange"range-separator"至"start-placeholder"开始日期"end-placeholder"结束日期"value-format"yyyy-MM-dd HH:mm:ss":defau…...

Linux中的特殊进程(孤儿进程、僵尸进程、守护进程)

一、孤儿进程 1&#xff09;父进程退出&#xff0c;子进程不退出&#xff0c;此时子进程被1号&#xff08;init&#xff09;进程收养&#xff0c;变成孤儿进程。 2&#xff09;孤儿进程会脱离终端控制&#xff0c;且运行在后端&#xff0c;不能用ctrlc杀死后端进程&#xff0c;…...

深度学习项目训练环境作品集:10类常见图像分类任务的统一训练模板与结果汇总

深度学习项目训练环境作品集&#xff1a;10类常见图像分类任务的统一训练模板与结果汇总 1. 环境准备与快速上手 深度学习项目训练往往需要复杂的环境配置&#xff0c;从框架安装到依赖库配置&#xff0c;整个过程耗时且容易出错。本镜像基于深度学习项目改进与实战专栏&…...

LabVIEW 多列列表框操作库 可直,超快 多列列表框功能: 1.创建列表框类 2.插入行:...

LabVIEW 多列列表框操作库 可直&#xff0c;超快 多列列表框功能&#xff1a; 1.创建列表框类 2.插入行&#xff1a;可自动补足空白行 3.替换单元格&#xff1a;根据行列替换单元格 列自动调整宽度 5.设置列内容对齐方式&#xff0c;靠左对齐、靠右对齐、居中对齐 6.清除所有内…...

**遗传算法在路径优化中的创新应用:从理论到Python实战**在智能优化领域,**遗传算法(Genetic A

遗传算法在路径优化中的创新应用&#xff1a;从理论到Python实战 在智能优化领域&#xff0c;遗传算法&#xff08;Genetic Algorithm, GA&#xff09; 凭借其强大的全局搜索能力和对复杂问题的适应性&#xff0c;成为解决组合优化问题的重要工具。本文将深入探讨如何使用 Pyth…...

终极指南:LLMLingua JSON数据压缩与字段级定制策略

终极指南&#xff1a;LLMLingua JSON数据压缩与字段级定制策略 【免费下载链接】LLMLingua [EMNLP23, ACL24] To speed up LLMs inference and enhance LLMs perceive of key information, compress the prompt and KV-Cache, which achieves up to 20x compression with minim…...

C++编程中堆与栈内存的差异解析

C编程中堆与栈内存的差异解析 在C编程的世界里&#xff0c;内存管理是一个核心且至关重要的概念。其中&#xff0c;堆&#xff08;Heap&#xff09;与栈&#xff08;Stack&#xff09;作为两种主要的内存分配区域&#xff0c;各自扮演着不同的角色&#xff0c;理解它们之间的区…...

Grok API 实战指南:从申请到集成的开发者全攻略

1. Grok API 是什么&#xff1f;能做什么&#xff1f; 如果你是一名开发者&#xff0c;最近可能被 Grok API 刷屏了。简单来说&#xff0c;Grok API 是 xAI 公司提供的一套接口服务&#xff0c;允许开发者将强大的 Grok 大模型集成到自己的应用中。想象一下&#xff0c;你开发的…...

4月,新一轮发票抽奖,请收好这份开具发票指南!!

4月&#xff0c;重庆发票抽奖新的一轮发票抽奖已经了&#xff08;目前第三轮&#xff09;。你所在的城市不知道是不是也是第三期发票抽奖了。发票抽奖首先需要发票。发票除了线下直接找商家开具外&#xff0c;我们也可以在线上直接开具。这份发票开具指南&#xff0c;归纳总结我…...

RoBERTa 微调:防过拟合终极调参手册

&#x1f6e1;️ RoBERTa 微调&#xff1a;防过拟合终极调参手册核心逻辑&#xff1a;在数据量有限&#xff08;~2.6k&#xff09;的情况下&#xff0c;通过限制模型容量&#xff08;冻结/Dropout&#xff09;和平滑优化过程&#xff08;Weight Decay/Label Smoothing&#xff…...

《SpringBoot》EasyExcel实现百万数据的导入导出

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

OpenClaw学习助手:Qwen3.5-9B-AWQ-4bit自动整理网课截图笔记

OpenClaw学习助手&#xff1a;Qwen3.5-9B-AWQ-4bit自动整理网课截图笔记 1. 为什么需要自动化学习助手 作为一名经常通过网课充电的技术从业者&#xff0c;我长期被一个痛点困扰&#xff1a;每次听完两小时的课程&#xff0c;手机相册里会堆满几十张截图&#xff0c;里面有老…...