SQL注入攻击的方法有哪些

据权威专家同居分析,绝大多数的网站遭受攻击都是SQl注入攻击,绝大多数的网站攻击都是可以避免的,不过由于大多数人的疏忽,造成好多网站都莫名其妙的“悲剧”了,这里小编帮大家洗漱一下sql攻击有哪些,或许对你有所帮助哦。

SQL攻击产生的原因

  • 01

    没有正确过滤转义字符 在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞: statement := "SELECT* FROM users WHERE name = '" + userName + "';" 这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的那样了。例如,将用户名变量(即username)设置为: a' or 't'='t,此时原始语句发生了变化: SELECT * FROM users WHERE name = 'a' OR 't'='t'; 如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。 在一些SQL服务器上,如在SQL Server中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。下面语句中的username的值将会导致删除“users”表,又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。 a';DROP TABLE users; SELECT * FROM data WHERE name LIKE '% 这就将最终的SQL语句变成下面这个样子: SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE name LIKE '%'; 其它的SQL执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,不过却不会阻止攻击者修改查询。

  • 02

    Incorrect type handling 如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如: statement := "SELECT * FROM data WHERE id = " + a_variable + ";" 从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_variable设置为:1;DROP TABLE users,它会将“users”表从数据库中删除,SQL语句变成:SELECT * FROM DATA WHERE id = 1;DROP TABLE users;。

  • 03

    .数据库服务器中的漏洞 有时,数据库服务器软件中也存在着漏洞,如MYSQL服务器中mysql_real_escape_string()函数漏洞。这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的SQL注入式攻击。

  • 04

    盲目SQL注入式攻击 当一个Web应用程序易于遭受攻击而其结果对攻击者却不见时,就会发生所谓的盲目SQL注入式攻击。有漏洞的网页可能并不会显示数据,而是根据注入到合法语句中的逻辑语句的结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节而精心构造一个新的语句。但是一旦漏洞的位置和目标信息的位置被确立以后,一种称为Absinthe的工具就可以使这种攻击自动化。

  • 05

    条件响应 注意,有一种SQL注入迫使数据库在一个普通的应用程序屏幕上计算一个逻辑语句的值: SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1 这会导致一个标准的面面,而语句 SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2在页面易于受到SQL注入式攻击时,它有可能给出一个不同的结果。如此这般的一次注入将会证明盲目的SQL注入是可能的,它会使攻击者根据另外一个表中的某字段内容设计可以评判真伪的语句。

  • 06

    条件性差错 如果WHERE语句为真,这种类型的盲目SQL注入会迫使数据库评判一个引起错误的语句,从而导致一个SQL错误。例如: SELECT 1/0 FROM users WHERE username='Ralph'。显然,如果用户Ralph存在的话,被零除将导致错误。

  • 07

    时间延误 时间延误是一种盲目的SQL注入,根据所注入的逻辑,它可以导致SQL引擎执行一个长队列或者是一个时间延误语句。攻击者可以衡量页面加载的时间,从而决定所注入的语句是否为真。

(0)

相关推荐

  • 网站被sql注入的修复方法

    近日,网站频频被黑.在网站里莫名其妙的多出一篇文 章,还有多出一组贴图.正在纳闷是谁可以登陆我的后台发表文章和图片的时候,我的qq弹出消息,一个陌生人给我发消息,说我的网站有漏洞,还说是他弄了我 的网 ...

  • 如何检测SQL注入技术以及跨站脚本攻击

    在最近两年中,安全专家应该对网络应用层的攻击更加重视.因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循安全代码进行开发,攻击者将通过80端口进入你的系统 ...

  • 防护黑客必学招数 SQL注入拦截-MYIIS-VIF助你一臂之力

    首先,MYIIS-VIF为站长提供了2种方式的注入设置。 1. 全局自动SQL注入拦截。 2. 自己加入规则的拦截方式。 全局自动SQl注入拦截类似自己给用户添加了一些常用的SQL注入关键字拦截。这些 ...

  • 如何防止sql注入

    SQL注入攻击的危害性很大. 操作方法 01 普通用户与系统管理员用户的权限要有严格的区分. 如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句,那么是否允许执行呢?由于Drop语句关 ...

  • 什么是SQL注入

    有些朋友刚刚接触SQL编程,对SQL注入表示不太了解.现在在这里介绍一下什么是SQL注入和怎么预防. 操作方法 01 首先介绍什么是SQL注入.SQL注入是指在编程中SQL语句中参数可以通过客户端传递 ...

  • 防止sql注入的几种方法

    在我们的项目开发中,常常面临的问题就是sql的注入,脚本攻击,如何才能使系统的代码更加的健壮,防止sql的注入呢,本文将介绍几种方法来防止sql的注入. 操作方法 01 JBDC方式查询,我们可以利用 ...

  • 对预防SQL注入的几点方法

    本文分析了网站数据库预防SQL注入的方法,并结合nat123分享了外网访问内网数据库的方法. 操作方法 01 预防数字注入: 很简单,因为ColID字段的类型是int的,那么我们只需要验证一下传递过来 ...

  • PHP防SQL注入检测方法

    PHP防SQL注入检测方法 操作方法 01 <?php$referer  = $_SERVER['HTTP_REFERER'];$inpage   = $_SERVER['SCRIPT_NAME ...

  • SQL 注入技术详解

    1.1概述 1.2背景 1.3字符编码 2.1综合测试 2.2测试过程 2.3分析结果 3.1绕过验证 3.2 SELECT 3.2.1 直接利用 ' 号 3.2.2 基于UNION 3.2.3 利用 ...