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. 数据库信息加密

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值