首页 > 数据库 >SQL注入攻击

SQL注入攻击

时间:2024-08-05 22:52:26浏览次数:10  
标签:语句 攻击 数据库 SQL 攻击者 注入

一、目的

了解SQL注入的危害

了解SQL的基本原理和SQL语句的SELECT/UPDATE/INSERT等用法

熟悉靶场Pikachu的安装和使用

掌握SQL注入的数字型注入攻击

掌握SQL注入的字符型注入攻击

掌握UNION语句进一步扩大攻击范围

了解SQL攻击的防御方法

二、漏洞原理

漏洞原理

在动态网站中,往往需要用户传递参数到服务器,这些参数往往需要和数据库进行交互;当服务端没有对参数进行安全过滤时,攻击者在参数中加入恶意的SQL语句结构,便编造成了SQL注入漏洞,被攻击者利用来攻击系统和网站。

攻击者在提交请求时将SQL语句插入到请求内容中,程序本身对用户输入内容未经处理,同时而未对恶意用户插入的SQL语句进行过滤,导致SQL语句直接被服务端执行。

漏洞类型

在SQL注入漏洞中,注入类型分为三种:数字型、字符型、搜索型

数字型

在 Web 端中经常能看到是例如http://xxx.com/news.php?id=1 这种形式,其注入点 id 类型为数字,所以叫数字型注入点。

这一类的 SQL 语句结构通常为 select * from news where id=1 ,如果攻击者将参数id的值改为1 or 1=1,那么程序中拼接的sql语句则为:select * from news where id=1 or 1=1,因此参数改变了原有的SQL语句结构,导致了SQL注入漏洞攻击。

字符型

在 Web 端中也经常能看到例如http://xxx.com/news.php?name=admin 这种形式的URL地址,其注入点 name 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句结构通常为

select * from 表名 where name='admin'

当攻击者在参数值admin尾部加入攻击代码' or 1=1,那么拼接出来的sql注入语句为:

select * from news where chr='admin' or 1=1 '

这样SQL语句同样也会被改变,当然攻击者也不仅仅使用这么简单的攻击代码,通常还会使用一些更加复杂的攻击代码,例如

admin' union select 1,2,3,4 or '1'='1

在程序中拼接SQL语句之后,则变成了

select * from news where chr='admin' union select 1,2,3,4 or '1'='1'

这样就可以使用union结构将攻击者所感兴趣的内容返回回来

搜索型

很多时候我们会看到网站有个站内搜索的功能,搜索功能往往需要和数据库进行交互,因此也会存在SQL注入漏洞风险,搜索型SQL注入的特点是攻击代码中有两个% ,如下图所示

在上图中可以看到,这个地方原本是用来搜索相关用户名的,当攻击代码为

%xxxx% or 1=1 #%'

所有的用户都在下方展示了出来,在命令行里我们可以这样搜索:

SQL注入的防御

不要使用动态SQL,避免将用户提供的输入直接放入SQL语句中;最好使用准备好的语句和参数化查询(PDO预处理),这样更安全;限制数据库权限和特权,将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。

防范文件

直接下载相关防范注入文件,通过incloude包含放在网站配置文件里面.

函数过滤

如果id是否为数字,直接将数据类型转换为整型,如下代码所示

$id=intval($_GET['id']);

字符型使用函数过滤

$name = addslashes($_GET['name']);

过滤后单引号会自动转义,因此SQL语句结构不会被改

三、SQL注入攻击pikachu靶场

1.下载并解压缩xampp到C盘根目录,然后运行xampp-control.exe

注意:

  • 可能需要运行库: 微软常用运行库合集.zip
  • 如果本机已经安装了PHP/MySQL, WEB服务器,可能会端口冲突

2.下载并解压缩pikachu靶场文件到 xampp路径的htdocs目录下

3.在xampp-control面板中启动Apache, MySql

4.浏览器运行: http://127.0.0.1/pikachu

5.SQL注入攻击实验

注意:

需要安装Firefox浏览器

需要配置Firefox的代理

需要运行BurpSuite,并进行抓包,然后修改包,然后放包。

1.数字型注入:

2.字符型注入:

3.搜索型注入:

四、总结

1.SQL注入的原理

SQL注入就是通过web表单吧SQL命令提交到web应用程序,由于程序没有细致的过滤用户输入的数据,造成字符串拼接,进而恶意的SQL语句被执行,造成数据库信息泄露,网页篡改,数据库被恶意操作等

2.SQL注入的危害

  1. 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  2. 网页篡改:通过操作数据库对特定网页进行篡改。
  3. 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  4. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员账户被窜改。
  5. 服务器被远程控制,被安装后门。 经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  6. 破坏硬盘数据,瘫痪全系统。

3.SQL注入的防御措施有哪些

  1. 对用户进行级管理,严格控制用户的权
  2. 在书写SQL语言时,禁止将变量直接写入到SQL语句,必须通过设置相应的参数来传递相关的变量;
  3. 在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤:
  4. 使用安全参数;
  5. 通过专业的扫描工具,可以及时的扫描到系统存在的相应漏洞
  6. 多层验证;
  7. 数据库信息加密

标签:语句,攻击,数据库,SQL,攻击者,注入
From: https://blog.csdn.net/qq_67812668/article/details/140938531

相关文章

  • openEuler24安装Mysql8
    openEuler社区版安装MySQL8版本时:rpm-qa|grep-imysql*没有显示。因此去openEuler的官方源仓库,找MySQL的包(本机使用虚拟机,因此选了x86),repo.openeuler.org/openEuler-24.03-LTS/everything/x86_64/Packages/ wget  https://repo.openeuler.org/openEuler-24.03-L......
  • 后端MyBatis连接Mysql数据库时常见报错
     目录报错情况报错情况一:​编辑报错情况二:解决步骤一、解决命名问题1.mapper层的id是否和Dao层的方法名字相同2.检查namespace与Dao层的文件地址相同二、解决注解问题1.检查Controller层的注解是否正确和完整2.Dao层或者Mapper层的注解3.pojo层:实体类层Data注解(用......
  • SQLServe日期相关
    1.日期函数1.1获取当前日期GETDATESELECTGETDATE()ASDT结果: 2024-08-0508:03:131.2日期加减函数DATEADDDATEADD()函数在日期中添加或减去指定的时间间隔。语法:DATEADD(datepart,number,date)其中参数的解释如下:datepart: 需要添加的日期部分,如年(YEAR)、......
  • 云计算实训21——mysql-8.0.33-linux-glibc安装及使用
    一、mysql-8.0.33-linux-glibc安装安装步骤1.解压tar-xvfmysql-8.0.33-linux-glibc2.12-x86_64.tar.xz2.清空其他环境rm-rf/etc/my.cnf3.安装依赖库yumlistinstalled|greplibaio4.创建用户useradd-r-s/sbin/nologinmysql查看idmysql5.创建......
  • mysql8.0.33绿色版本安装以及用法
    绿色mysqlMySQL官网MySQL::DownloadMySQLCommunityServer(ArchivedVersions)[root@mysql~]#rm-rf/etc/my.cnf[root@mysql~]#find/-name"*mysql*"-execrm-rf{}\;        //清除以前的环境[root@mysql~]#tar-xvfmysql-8.0.33-li......
  • mysql:使用乐观锁保护数据一致性和完整性
    在数据库操作中,保持数据一致性和完整性至关重要。乐观锁(OptimisticLock)是一种不锁定资源的锁机制,它在数据更新时才会检测是否发生冲突。本文将介绍乐观锁的概念、使用方法、优缺点,并特别罗列它与悲观锁的区别。乐观锁的概念乐观锁基于这样一个假设:数据冲突并不频繁发生,因此在读......
  • mysql 行级锁(按照粒度分类)
    MySQL支持多种锁机制,以确保数据的一致性和完整性。其中,行级锁(Row-LevelLocking)是一种细粒度的锁机制,能够锁定单行数据,从而允许高并发访问。本文将简要介绍MySQL行级锁的概念、使用场景及其优缺点。行级锁的概念行级锁是一种细粒度的锁机制,允许事务在操作数据时仅锁定特定的行,而......
  • mysql:使用悲观锁保护数据完整性
    在数据库操作中,确保数据一致性和完整性至关重要。悲观锁(PessimisticLock)是一种锁机制,它在读取数据时就对其加锁,从而防止其他事务同时修改该数据。本文将介绍悲观锁的概念、使用方法,以及它的优点和缺点。悲观锁的概念悲观锁是一种认为并发操作总会发生冲突的锁机制。当一个事务......
  • SqlDbx客户端连接服务器Oracle数据库
    查了很多文章,介绍的不对,走了好多弯路,最后整理一下,供参考一、下载Oracle客户端1、SqlDbx如果是32位的,客户端也要下载32位的2、Oracle客户端版本要和服务端版本一致(本例用的是12.1.0.2.0)3、32位客户端下载地址:https://www.oracle.com/database/technologies/instant-client/mic......
  • SourceCodester v1.0 SQL 注入漏洞(CVE-2023-2130)靶场复现
    SourceCodesterPurchaseOrderManagementSystemv1.0是一个实用的工具,适合希望优化采购流程的企业和组织靶场界面直接放sqlmap跑爆数据库爆数据表爆字段爆内容-用户名爆内容-密码sqlmap的md5碰撞sqlmap所有命令点击查看代码爆数据库pythonsqlmap.py-u......