首页 > IT职业 > IT职场 > 安全测试必知必会:详解SQL注入
1.什么是SQL注入?
就是在Web表单提交数据/传输数据时,将预先准备好的SQL语句添加进去,达到欺骗服务器并修改SQL语句的执行结果,非法获取服务器端的数据。

2.SQL注入原理
原理就是攻击者猜测Web系统的数据验证过程,在输入数据的最后加上一段SQL语句,让服务器端的SQL执行出现偏差,从而欺骗服务器,甚至可获取数据库的管理权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。

3.SQL注入流程
4.寻找SQL注入点
SQL注入可以出现在任何从系统或用户接收数据输入的前端应用程序中,这些应用程序之后被用于访问数据库服务器。如果要对一个网站进行SQL注入攻击,首先就需要找到存在SQL注入漏洞的地方,也就是寻找所谓的注入点。可能的SQL注入点一般存在于登录页面、查找页面或添加页面等用户可以查找或修改数据的地方。最常用的寻找SQL注入点的方法,是在网站中寻找如下形式的页面链接: http://www. abc.com/xyz.asp? id=yy ,其中“yy”可能是数字,也有可能是字符串,分别被称为整数类型数据或者字符型数据.
5.SQL注入确认
通过操纵用户数据输入并分析服务器响应来寻找SQL注入漏洞。识别出异常后,我们需要构造一条有效的SQL语句来确认SQL注入漏洞。要想构造有效的SQL注入语句,需要对SQL语言有个基本的了解。执行SQL注入攻击,首先要清楚数据库包含不同的数据类型,它们都具有不同的表示方式,可以将它们分为两类:
数字---不需要使用单引号来表示
其他类型---使用单引号来表示
下面,以 http://www. abc.com/xyz.asp? p=YY 为例进行分析,YY可能是整型,也可能是字符串。
a)整型参数的判断
当输入的参数YY为整型时,通常xyz.asp中SQL语句原貌大致如下:
select * from表名where字段=YY,所以可以用以下步骤测试SQL注入是否存在。
如果以上三步全面满足,xyz.asp中一定存在SQL注入漏洞。
b)字符串型参数的判断
当输入的参数YY为字符串时,通常xyz.asp中SQL语句原貌大致如下:
select * from表名where字段='YY',所以可以用以下步骤测试SQL注入是否存在。
如果以上三步全面满足,xyz.asp中一定存在SQL注入漏洞。
c)特殊情况的处理
有时程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。
6.SQL注入的危害
由于SQL注入利用的是SQL语法,使得于所有关系型数据库都可能受到攻击,并且与Web编程语言无关,这就导致几乎所有的网站都难以避免。

主要危害有:
信息泄漏---数据库中存放的各种用户信息都可能被泄露。作为数据存储中心,数据库往往保存用户的各类隐私信息,SQL注入能导致这些信息被攻击者访问和窃取。
网页篡改---通过操作数据库里的特定数据来篡改某些指定的页面。
挂马---将数据库里的值,改为木马信息或木马的链接,这样可随时通过木马对网站发起攻击。
恶意操作---修改系统管理员帐户,让管理维护人员无法操作数据库。
某些复杂/组合式的SQL指令能够操作文件系统,这使得SQL注入的危害被进一步放大。可使服务器被远程控制,让黑客修改或控制操作系统。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70023145/viewspace-2921583/ ,如需转载,请注明出处,否则将追究法律责任。