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

Web安全-初识SQL注入(一)

1、初识SQL注入

1.1、什么是注入?

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

注入能导致数据丢失、 破坏或泄露给无授权方,缺乏可审计性或是拒绝服务。注入有时甚至能导致主机完全被接管。 注入攻击的本质:就是把用户输入的数据当做代码执行。(过于信任用户)

1.2、什么是SQL注入?

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

在这里插入图片描述

(图片来源网络)

1.3、SQL注入产生的原因

随着B/S模式被广泛的应用,由于没有对用户的输入数据或者是页面中所携带的信息进行的合法性校验,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些Ta想得到的数据。被称为数据库的注入攻击(SQL注入攻击)。

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

1.4、SQL注入的危害

包括但不局限于:

  • 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  • 网页篡改:通过操作数据库对特定网页进行篡改。
  • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  • 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  • 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  • 破坏硬盘数据,瘫痪全系统。
  • 一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。

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

  • 绕过登录验证:使用万能密码登录网站后台等。
  • 获取敏感数据:获取网站管理员帐号、密码等。
  • 文件系统操作:列目录,读取、写入文件等。
  • 注册表操作:读取、写入、删除注册表等。
  • 执行系统命令:远程执行命令。

2、如何挖掘SQL注入

2.1、常见SQL注入流程

在这里插入图片描述

2.2、SQL注入漏洞分类

2.2.1、按数据类型

可分为:数字型(Integer)和字符型(String)

2.2.2、按返回结果

可分为:显错注入(Error-Based)和盲注(Boolean/Time-Based Blind)

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

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

2.4、SQL注入测试思路

步骤盲注联合查询注入
1判断是否存在注入,注入是字符型还是数字型判断是否存在注入,注入是字符型还是数字型
2猜解当前数据库名猜解SQL查询语句中的字段数
3猜解数据库中的表名确定显示的字段顺序
4猜解表中的字段名获取当前数据库
5猜解数据获取数据库中的表
2.4.1、判断是否存在SQL注入

在这里插入图片描述

(图片来源网络)

3、总结与题外话

本文先简单介绍SQL注入,后续会还详细介绍SQL注入一些POC、思路和靶场实验。《跟我学网安知识》系列我停更了2周多了共16天,原因有多方面,一方面我自己学网安课作业和靶场实验比较花费时间,另一方面我工作上有变动,在准备面试Java相关知识。

打个小小求职广告:Base厦门,Java高级开发,我擅长需求分析和较强的文档能力,有跨部门推动项目从0到1交付上线的经验,也有架构相关工作经历。如果有合适的岗位推荐请私信给我,非常感谢。

相关文章:

  • 关于 Python 的最全面试题
  • 矩阵的初等变换
  • Maven——Maven发展历程
  • MySQL查看和修改时区
  • 西安安泰——ATA-1220E宽带放大器
  • 【单片机】单片机裸机实现多任务调度
  • 质量小议35 -- SQL注入
  • 第5章 固定通信网
  • 深入了解Java Period类,对时间段的精确控制
  • MX6ULL学习笔记 (七) 中断实验
  • Python小案例:打印10以内的素数
  • java面试题3
  • 如何利用MES系统加强对仓库的管理
  • 二叉树链式结构
  • 【EI征稿中|SPIE出版】 第四届传感器与信息技术国际学术会议(ICSI 2024)
  • 【译】JS基础算法脚本:字符串结尾
  • 【RocksDB】TransactionDB源码分析
  • 2017前端实习生面试总结
  • E-HPC支持多队列管理和自动伸缩
  • Java,console输出实时的转向GUI textbox
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • PAT A1120
  • pdf文件如何在线转换为jpg图片
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Web Storage相关
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 初探 Vue 生命周期和钩子函数
  • 翻译--Thinking in React
  • 分类模型——Logistics Regression
  • 老板让我十分钟上手nx-admin
  • 如何设计一个微型分布式架构?
  • 深入 Nginx 之配置篇
  • 项目实战-Api的解决方案
  • 小程序开发之路(一)
  • 《天龙八部3D》Unity技术方案揭秘
  • zabbix3.2监控linux磁盘IO
  • 阿里云重庆大学大数据训练营落地分享
  • 积累各种好的链接
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • (1) caustics\
  • (多级缓存)缓存同步
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET关于 跳过SSL中遇到的问题
  • .Net面试题4
  • @Async注解的坑,小心
  • @RequestBody与@ModelAttribute
  • @RunWith注解作用
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [C/C++] -- 二叉树
  • [C++参考]拷贝构造函数的参数必须是引用类型