SQL注入 基础概述及相关知识

article/2025/9/22 22:07:16

SQL注入 基础概述及相关知识

  • SQL注入概述
    • SQL注入攻击简介
    • SQL注入攻击原理
    • SQL注入攻击来源
    • SQL注入攻击主要特点
    • SQL注入攻击危害
  • SQL注入攻击
    • SQL注入攻击基础概述
    • SQL注入威胁表达方式
    • SQL注入典型攻击手段
    • SQL攻击的种类划分
      • 按照注入点类型分类
      • 按照数据提交方式分类
      • 按照执行效果分类
        • 基于联合查询的注入
  • MySQL注入常用函数
  • SQL注入相关工具
    • SQLMAP
    • Pangolin
    • 啊D注入工具
    • Havij注入工具
  • SQL注入防御

SQL注入概述

SQL注入攻击简介

通过把SQL命令插入到Web表单提交输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
开放式Web应用程序安全项目(Open Web Application Security Project,OWASP)是世界上最知名的Web安全与数据库安全研究组织,在该组织发布的2017年的统计中,注入漏洞高居第三位。

OWASP

SQL注入攻击原理

通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

SQL注入攻击来源

根据相关技术原理,SQL注入可以分为平台层注入代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。

SQL注入攻击主要特点

1.变种极多
有经验的攻击者会手工调整攻击的参数,致使攻击的数据是不可枚举的,这导致传统的特征匹配方法仅能识别到相当少的攻击。或者是最常规的攻击,难以做到防范。
2.攻击简单
攻击过程简单,目前互联网上流行的众多SQL注入攻击工具,攻击者借助这些工具可以很快的对目标站点进行攻击或破坏,危害大。
3.危害极大
由于Web语言自身的缺陷,以及具有安全编程的开发人员较少,大多数web应用系统均具有被SQL注入攻击的可能,而攻击者一旦攻击成功,就可以对控制整个Web应用系统对数据做任何的修改或是窃取,破坏力达到了极致。

SQL注入攻击危害

1.未经授权的状况下操作数据库中的数据
2.恶意篡改网页内容
登陆后发布的内容,也可以发布对首页的非法更新,可以添加账户或是数据库账户,需要拿到Web Shell或者是更高权限;
3.私自添加系统账号或是数据库使用者账号
4.网页挂木马
拿到Web Shell或者获取到服务器的权限以后,攻击者可以将一些网页木马挂在服务器上攻击其他用户,在严重时可以控制整个服务器。

SQL注入攻击

SQL注入攻击基础概述

SQL注入攻击是攻击者对数据库进行攻击的常用手段之一。随着B/S模式(Browser/Server,浏览器/服务器模式)用用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。攻击者可以提交一段数据库查询代码,根据程序返回的结果,获取某些想要知道的数据。

SQL注入威胁表达方式

1.绕过认证,获得非法权限
2.猜解后台数据库全部信息
3.注入可以借助数据库的存储过程进行提权等操作

SQL注入典型攻击手段

1.判断应用程序是否存在注入漏洞
2.收集信息并判断数据库类型
3.根据注入参数类型重构SQL语句
4.猜解表名及字段名
5.获取账户信息,为攻击Web服务器或下一步攻击做准备

SQL攻击的种类划分

按照注入点类型分类

1.数字型注入
在URL中为:http://xxx.com/xxx.php?id=1这种形式,其中注入点id类型为数字,所以叫数字型注入点。这一类的SQL语句原型基本为:select * from 表名 where id=1
2.字符型注入
在URL中为:http://xxx.com/xxx.php?name=admin这种形式,其注入点name为字符型,所以叫字符型注入,这一类的SQL语句原型基本为:select * from 表名 where name='admin',相比于数字型多了'',注入攻击时需要闭合单引号。
3.搜索型注入
这是一类特殊的注入类型,主要是在进行数据搜索时没有过滤搜索参数,一般在链接地址中有keyword=关键字,有的不显示在地址链接中,而是直接通过搜索框提交,此类注入点提交的SQL语句原型基本为:select * from 表名 where 字段 like '%关键字%'

按照数据提交方式分类

1.GET注入
提交数据的方式为GET型,注入点的位置在GET参数部分,如http://xxx.com/xxx.php?id=1这种形式,id就是注入点
2.POST注入
使用POST方式提交数据,注入点位置在POST数据部分,常发生在表单中。
3.Cookie注入
HTTP请求的时候会带上客户端的Cookie,注入点存在Cookie当中的某个字段中
4.HTTP头部注入
注入点在HTTP请求头部的某个字段中,比如存在User-Agent字段中,严格讲的话,Cookie应该也算是HTTP头部注入的一种。

按照执行效果分类

1.基于布尔的盲注
可以根据返回页面判断条件真假的注入
2.基于事件的盲注
既不能根据页面返回内容判断任何信息,用条件语句参看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3.基于报错注入
页面会返回错误信息,或者把注入的语句结果直接返回在页面中。
4.联合查询注入
可以使用union的情况下的注入。
5.堆查询注入
可以同时执行多条语句的执行时的注入。

基于联合查询的注入

一般步骤:1.求闭合字符;2.求列数;3.求显示位;4.爆数据库名;5.爆表名;6.爆列名7.爆字段名

MySQL注入常用函数

一.注释风格
1.内联注释
MySQL数据库为了保持与其他数据库兼容,添加的新功能。为了避免从MySQL中导入的SQL语句不能被其他数据库所使用,把一些MySQL特有的语句放在/*!……*/中,在不兼容的数据库中使用便不会执行
注:在SQL注入攻击中,内联注释常用来绕过WAF
2.单行注释
#后面直接加内容
-- 后面必须加空格
3.多行注释
/**/中间可以跨行

二.union操作符
1.union操作符用于拼接两个或者多个select查询语句
2,union中的每个查询必须拥有相同的列数

三.常用函数

函数/语句功能
user()当前用户名
database()当前所用数据库
current_user()当前用户名(查询权限)
version()数据库版本
@@datadir数据库路径
load_file()读文件操作
Into outfile()/into dumpfile写文件操作

四.字符串连接函数
1.concat(str1,str2)函数
输出结果直接连接
在这里插入图片描述
2.group_concat(str1,str2)函数
输出结果使用逗号作为分隔符
在这里插入图片描述
3.concat_ws(sep,str1,str2)函数
输出结果使用第一个参数作为分隔符
在这里插入图片描述
五.information-schema结构
information-schema

  • schema       所有数据库的名字
    • schema_name  数据库名
  • tables        所有表的名字
    • table_schema  表所属数据库名
    • table_name   表的名字
  • columns       所有字段的名字
    • table_schema  字段所属数据库名
    • table_name   字段所属表的名字
    • column_name  字段的名字

SQL注入相关工具

SQLMAP

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

Pangolin

Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注入开始到最后控制目标系统都给出了测试步骤。Pangolin是目前国内使用率最高的SQL注入测试的安全软件,可以说是网站安全测试人员的必备工具之一。

啊D注入工具

啊D注入工具是一种主要用于SQL的注入工具,由彭岸峰开发,使用了多线程技术,能在极短的时间内扫描注入点。使用者不需要经过太多的学习就可以很熟练的操作。并且该软件附带了一些其它的工具,可以为使用者提供极大的方便。

Havij注入工具

Havijpro是一款自动化的SQL注入工具,能帮助渗透测试人员发现和利用Web应用程序的SQL注入漏洞。Havij不仅能够自动挖掘可利用的SQL查询,还能够识别后台数据库类型、检索数据的用户名和密码hash、转储表和列、从数据库中提取数据,甚至访问底层文件系统和执行系统命令,Havij支持广泛的数据库系统,如MySQL,MsSQL,MSAccess和Oracle。Havij支持参数配置以躲避IDS,支持代理,后台登陆地址扫描。

SQL注入防御

1.开发人员在开发过程中有SQL注入防御思想,对用户输入的所有内容都要进行过滤。
2.使用数据库时,命名应该较为复杂,不应出现amdin,user这样的库以及username,password这样的字段。
3.涉及密码的时候一定要加密存储。
4,使用一些框架及模版前检查代码是否有输入内容检测。
5.测试阶段,进行SQL注入测试。
6.数据库权限最小化,防止拿到Web Shell权限,不要用特权账户或者能够登陆系统的账户启动数据库。


http://chatgpt.dhexx.cn/article/kSCcNYXn.shtml

相关文章

加固你的数据防线:避免成为SQL注入攻击的下一个目标

SQL注入是一种常见的Web应用程序安全漏洞,攻击者利用该漏洞通过构造恶意的SQL查询语句,以执行未经授权的操作或获取敏感数据。本文将介绍SQL注入的概念、攻击原理以及常见的防范方案,帮助开发人员和系统管理员加强对Web应用程序的安全性。 1、…

2021年6月10日08点53分 SQL注入

1、SQL注入基础 1.1、SQL注入基础 SQL注入( SQL Injection ):程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果…

cookie中转注入

目标地址 www.jzvales.com/jzvales/ProductShow.asp?ID568 首先,我们添加单引号进行注入判断,结果显示如下 熟悉***的朋友都知道该网站是使用了通用的防注入,只是过滤了post参数,但是没有过滤cookie参数,所以我们使用…

vim使用教程

简介 Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。(主要是Vi/Vim属于Linux命令行必备软件)。 下载&安装 下载 可前往官网下载 安装 Windows安装exe可执行文件即可Linux ubuntu系…

十大关系数据库SQL注入工具一览

众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术。同时SQL注入攻击所带来的安全破坏也是不可弥补的。以下罗列的10款SQL工具可帮助管理员及时检测存在的漏洞。 BSQL Hacker BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自动注入工…

那些年我们一起追逐过的安全工具

前言 每一段岁月,都会留下属于时代的记忆——那些年,我们所追逐与热衷的安全工具,亦是如此。 在那个信息不对称的年代,安全工具主要是在小圈子内传播。当年天真的我们(脚本小子),以为网络就是江…

浅谈SQL注入攻击与防御(适用于小白观看)

首先什么是SQL注入攻击 SQL注入式攻击技术,一般针对基于Web平台的应用程序.造成SQL注入攻击漏洞的原因,是由于程序员在编写Web程序时,没有对浏览器端提交的参数进行严格的过滤和判断。用户可以修改构造参数,提交SQL查询语句&…

网络安全系列之三十七 Pangolin(穿山甲)和Havij(胡萝卜)的使用

在***过程中,必然要借助于一些工具软件,像明小子和啊D都属于比较古老的软件,功能有限,而Pangolin和Havij则是两款相对功能比较强大的软件,本文将介绍它们的基本用法。实验环境采用NMPServer搭建,使用其中的…

Havij 1.152 最新破解版

Havij是一款自动化的SQL注入工具,它能够帮助渗透测试人员发现和利用Web应用程序的SQL注入漏洞。Havij不仅能够自动挖掘可利用的SQL 查询,还能够识别后台数据库类型、检索数据的用户名和密码hash、转储表和列、从数据库中提取数据,甚至访问底层…

基于PHPCMS的SQL注入(Havij)

本教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险。 目录 实验目的实验环境实验原理实验步骤第一步靶机操作第二步渗透主机操作 实验总结 实验目的 通过本实验理解SQL注入基本原理和过程,掌握菜刀和Havij等注入工具的使用…

黑客学习-SQL注入:利用Havij对PHPCMS网站进行SQL注入

SQL注入用户通过浏览器或者其他客户端将恶意SQL语句插入到网站参数中,网站应用程序未经过过滤,将恶意SQL语句带入数据库进行执行,通过数据库获取了敏感的信息或者执行了其他恶意操作。 由于SQL语句本身多样性,以及可用于构造的SQ…

42. 注入篇——Havij、Pangolin使用

前言 本小节主要讲解在渗透测试工程中使用到的两款攻击——Havij、Pangolin Havij Havij(简称:胡萝卜):是一款用于sql注入的工具,他支持MySQL、MSSql、Oracle、Sybase等数据库,而且可以支持盲注、代理、…

html交互视频如何制作,H5交互视频如何实现?

视频类作为现在H5运用最频繁的形式之一,单一化的形式已经让用户产生了疲劳效果。而交互式视频的出现则打破了视频H5一直以来的模式,赋予了用户强烈的感官体验,将视觉和触觉融合为了一体,使得体验效果更具有吸引力。 那H5视频带交互…

Unity 制作360全景视频 全景图片流程

Recorder的使用 在Unity制作360图片或者视频需要用到UnityPackage:Recorder 如果没有就在Package Manager寻找 1、在菜单栏找到Window/General/Recorder/RecorderWindow 参数说明: Animation Clip:录制动画剪辑 Movie:录制视频 Image Sequence&a…

爱剪辑怎么制作淘宝视频?详细的制作技巧,教你快速搞定淘宝主图视频

众所周知,现在打开淘宝购买某种产品时,在主界面上方展示产品的部分已经出现了视频。这也是顺应潮流的做法,通过制作短视频的方式来展示产品,能引起买家更多的兴趣和购买欲。所以很多卖家现在都会制作一个精美的淘宝主图视频,来吸引顾客。 那么如何快速制作一个精美的淘宝…

MATLAB制作动图或视频

(来点有用的)MATLAB制作动图或视频 主要函数介绍情况一:对数据进行操作情况二:对界面进行操作其他 by HPC_ZY 在CSDN发现一个类似的居然要VIP才能查看,顿时有点无语,所以自己做了一个。 如题,MA…

使用Android制作视频播放器

使用Android制作视屏播放器 目录 使用Android制作视屏播放器前言一、展示预览二、详细步骤1.准备工作2、主界面设计3、主界面java文件4、全屏界面设计 总结 前言 Android小作业,含实现本地视频播放界面,实现全屏播放视频界面,两个界面所采用…

自制计算机教程视频教程,教学视频如何制作/怎么做视频

随着网络的普及,电脑上已经不再单单只有影视剧等由专业人士拍摄与制作的高精良视频,越来越多的普通人也将自己的一些人生小经验或者将一些自己所擅长的知识领域制作成教学视频传入网上,甚至有些老师都将自己所讲授的课程录制成视频传入网上&a…

画中画视频如何制作

最近网络上很流行这个种画中画视频,如何自己可以制作出来一个令人满意画中画视频呢,其他很简单哦,只要找到方法就可以制作出来,不用羡慕别人呢,自己也可以呢,小编现在分享下操作步骤,看下大家有…

滚动字幕怎么制作,视频的滚动字幕如何制作?

相信看到这篇文章的小伙伴都想要给自己的视频添加上滚动字幕的效果,接下来小编就来给大家分享一个可以快速批量制作滚动字幕视频的简单操作方法,一起来看看吧! 第一步,运行媒体梦工厂,切换到【任务剪辑】页面&#xff…