| 随着网络经济的复舒,开始越来越多的网站涌现出来,随着脚本漏洞的挖掘,黑客也越来越猖狂,并且越来越低龄化和傻瓜化。“你只要会用一个工具就可以黑站”,这就是脚本漏洞利的特点。这些漏洞的主要成因是编程程序员的素质,往往在编写asp或php等程序时候对字符的过滤不严密,对注入漏洞不了解,或者某个参数忘记检查导致的。
由于编写网页程序这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。我们看一个例子:在本机建一个基于iis的asp程序http://localhost/test/show.asp?ID=3,将这个网址提交到服务器后,服务器将进行类似Select * from 表名 where 字段="&ID的查询(ID即客户端提交的参数,本例即是3),再将查询结果返回给客户端,如果这里客户端故意提交这么一个网址:http://localhost/test/show.asp?ID=3 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下: ·错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 ’test’ 转换为数据类型为 int 的列时发生语法错误。 /test/show.asp, 第 34 行
从这个出错信息中,我们可以获得以下信息:该站使用MSSQL数据库,用ODBC连接,连接帐号名为:test。所谓SQL注入,就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。通常别有用心者的目标是获取网站管理员的帐号和密码。比如当知道网站管理员帐号存在表login中,管理员帐号名为admin 想知道admin的密码,这里接着从客户端提交这样一个网址:
http://localhost/test/show.asp?ID=4 and (Select password from login where user_name=’admin’)>0
返回的出错信息如下:
·错误类型:
Microsoft [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
|