了解SQL注入攻击

SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。

随着B/S模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水平和经验参差不齐,相当一部分的开发人员在编写代码的 时候,没有对用户的输入数据或者是页面中所携带的信息(如Cookie)进行必要的合法性判断,导致了攻击者可以提交一段数据库查询代码,根据程序返回的 结果,获得一些他想得到的数据。

SQL注入利用的是正常的HTTP服务端口,表面上看来和正常的web访问没有区别,隐蔽性极强,不易被发现。

SQL注入过程

如上图所示,SQL注入攻击过程分为五个步骤:

第一步:判断Web环境是否可以SQL注入。如果URL仅是对网页的访问,不存在SQL注入问题,如:http://news.xxx.com.cn/162414739931.shtml就是普通的网页访问。只有对数据库进行动态查询的业务才可能存在SQL注入,如:http://www.google.cn/webhp?id=39,其中?id=39表示数据库查询变量,这种语句会在数据库中执行,因此可能会给数据库带来威胁。

第二步:寻找SQL注入点。完成上一步的片断后,就要寻找可利用的注入漏洞,通过输入一些特殊语句,可以根据浏览器返回信息,判断数据库类型,从而构建数据库查询语句找到注入点。

第三步:猜解用户名和密码。数据库中存放的表名、字段名都是有规律可言的。通过构建特殊数据库语句在数据库中依次查找表名、字段名、用户名和密码的长度,以及内容。这个猜测过程可以通过网上大量注入工具快速实现,并借助破解网站轻易破译用户密码。

第四步:寻找WEB管理后台入口。通常WEB后台管理的界面不面向普通用户

开放,要寻找到后台的登陆路径,可以利用扫描工具快速搜索到可能的登陆地址,依次进行尝试,就可以试出管理台的入口地址。

第五步:入侵和破坏。成功登陆后台管理后,接下来就可以任意进行破坏行为,如篡改网页、上传木马、修改、泄漏用户信息等,并进一步入侵数据库服务器。

SQL注入攻击的特点:

变种极多,有经验的攻击者会手动调整攻击参数,致使攻击数据的变种是不可枚举的,这导致传统的特征匹配检测方法仅能识别相当少的攻击,难以防范。

攻击过程简单,目前互联网上流行众多的SQL注入攻击工具,攻击者借助这些工具可很快对目标WEB系统实施攻击和破坏。

危害大,由于WEB编程语言自身的缺陷以及具有安全编程能力的开发人员少之又少,大多数WEB业务系统均具有被SQL注入攻击的可能。而攻击者一旦攻击成功,可以对控制整个WEB业务系统,对数据做任意的修改,破坏力达到及至。

SQL注入的危害和现状

SQL注入的主要危害包括:

未经授权状况下操作数据库中的数据

恶意篡改网页内容

私自添加系统帐号或者是数据库使用者帐号

网页挂木马

……

据赛门铁克2006年3月的互联网安全威胁报告(第九期)显示:

目前有近70%的攻击行为是基于WEB应用,而据CVE的2006年度统计数据显示,SQL注入攻击漏洞呈逐年上升的状态,2006年更是达到了惊人的1078个,而这些还仅限于通用应用程序的漏洞,不包括更为庞大的专业web应用程序所存在的漏洞。

而针对SQL注入漏洞的各种攻击工具和攻击教程更是层出不穷,掌握1~2种攻击工具的script guy(脚本小子)就可以轻易的攻破网络数据库的防线:篡改数据、获得权限……

sql注入攻击:http://netsecurity.51cto.com/art/201108/287651.htm

时间: 2024-10-12 01:10:33

了解SQL注入攻击的相关文章

web前端安全之SQL注入攻击

一.SQL注入攻击的原理攻击者在HTTP请求中注入恶意的SQL代码,并在服务端执行.比如用户登录,输入用户名camille,密码 ' or '1'='1 ,如果此时使用参数构造的方式,就会出现 select * from user where name = 'camille' and password = '' or '1'='1' 不管用户名和密码是什么,查询出来的用户列表都不为空,这样可以随意看其他用户的信息. 二.SQL注入攻击的防御1.客户端 限制字符串输入的长度: 有效性检验. //过

【渗透攻防Web篇】SQL注入攻击高级

前言 前面我们学习了如何寻找,确认,利用SQL注入漏洞的技术,本篇文章我将介绍一些更高级的技术,避开过滤,绕开防御.有攻必有防,当然还要来探讨一下SQL注入防御技巧. 目录 第五节 避开过滤方法总结 5.1.大小写变种 5.2.URL编码 5.3.SQL注释 5.4.空字节 5.5.二阶SQL注入 第六节 探讨SQL注入防御技巧 6.1.输入验证 6.2.编码输出 正文 第五节 避开过滤方法总结 Web应用为了防御包括SQL注入在内的攻击,常常使用输入过滤器,这些过滤器可以在应用的代码中,也可以

使用SQLMAP对网站和数据库进行SQL注入攻击

from:http://www.blackmoreops.com/2014/05/07/use-sqlmap-sql-injection-hack-website-database/ 0x00 背景介绍 1. 什么是SQL注入? SQL注入是一种代码注入技术,过去常常用于攻击数据驱动性的应用,比如将恶意的SQL代码注入到特定字段用于实施拖库攻击等.SQL注入的成功必须借助应用程序的安全漏洞,例如用户输入没有经过正确地过滤(针对某些特定字符串)或者没有特别强调类型的时候,都容易造成异常地执行SQL

网络攻防之SQL注入攻击

SQL注入攻击的根源是因为SQL规范的漏洞,但是,因为规范的长期存在以及使用,几乎已经不太可能去修改规范了,只能够从开发者本身去避免攻击,虽然SQL注入之前很严重,但现在相对控制的很好,这里仅仅作为一种学习的内容. 测试过程如下: 1:搭建PHP,mysql开发环境,可以详见我的另一篇博客自定义开发PHP环境 2:添加数据库,表,以及表内容. 3:分别测试 万能密码,万能用户名 数字注入 测试如下: 万能密码:password ' or 1='1 (password可以任意的填写,注:这里如果粘

Web安全篇之SQL注入攻击

在网上找了一篇关于sql注入的解释文章,还有很多技术,走马观花吧 文章来源:http://www.2cto.com/article/201310/250877.html ps:直接copy,格式有点问题~ 大家早上好!今天由我给大家带来<web安全之SQL注入篇>系列晨讲,首先对课程进行简单介绍,SQL注入篇一共分为三讲:       第一讲:"纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入原理.":       第二讲:"实战演练:我们要在互联网上

参数化登陆防止SQL注入攻击

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace _01参数化登陆防止SQL注入攻击 { public

2015-9-28 SQL注入攻击

SQL注入攻击实例 (1)SQL命令插入到Web表单的输入域  或   页面请求的查询字符串,欺骗服务器执行恶意的SQL命令 一个简单的登录页面 private bool NoProtectLogin(string userName, string password) { int count = (int)SqlHelper.Instance.ExecuteScalar(string.Format ("SELECT COUNT(*) FROM Login WHERE UserName='{0}'

PHP的SQL注入攻击的技术实现以及预防措施

SQL 攻击(SQL injection,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指 令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏. 有部份人认为SQL注入攻击是只针对Microsoft SQL Server而来,但只要是支持批处理SQL指令的数据库服务器,都有可能受到此种手法的攻击.1.原因在应用程序中若有下列状况,则可能应用程序正暴露在

SQL 注入攻击

一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试.这是安全评估的一个部分,所以尽管我们之前没有使用过SQL注入来渗透网络,但对其概念也相当熟悉了.最后我们在这项任务中大获成功,现在来回顾一下这个过程的每一步,将它记录为一个案例. "SQL注入"是一种利用未过滤/未审核用户输入的攻击方法("缓存溢出"和这个不同),意思就是让应用运行本不应该运行的SQL代码.如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果. 我们记录下

PHP防SQL注入攻击

PHP防SQL注入攻击 收藏 没有太多的过滤,主要是针对php和mysql的组合. 一般性的防注入,只要使用php的 addslashes 函数就可以了. 以下是一段copy来的代码: PHP代码 $_POST = sql_injection($_POST); $_GET = sql_injection($_GET); function sql_injection($content) { if (!get_magic_quotes_gpc()) { if (is_array($content))