当前位置: 首页 > 图文教程 > 服务器 > 安全防护 > ASP注入漏洞全接触(7)

安全防护
如何正确预防网页中的5种“隐形杀手”
cpu散热技巧方法和六大误区
隐患起于灰尘!机箱内部风扇清理有妙招
电源常见故障判断分析与排除
主板常见故障分类及排除方法
绝杀病毒木马的好工具:ESET NOD32
三种方法解决IIS6目录检查漏洞
硬盘坏道故障实例解决
做好防范措施 让你的MP3拒绝病毒的入侵
彻底查杀网页病毒 断绝一切安全隐患
移动安全之手机病毒入侵的解决
中国PC用户个人上网十则网络安全指南
如何使tcp包和udp包穿透网络防火墙
细说iexplore.exe是进程还是病毒
如何用网络入侵检测系统防范黑客攻击
对Autorun.inf类U盘病毒的攻防经验总结
护花使者:远程修复MM的受损系统
绕过主动防御 木马病毒刺穿卡巴斯基
脚本图片类后门病毒的完美使用方法
QQ盗号木马USBINE.SYS暂时解决方法

安全防护 中的 ASP注入漏洞全接触(7)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-29   浏览: 33 ::
收藏到网摘: n/a

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

  在入门篇提到,有很多人喜欢用’号测试注入漏洞,所以也有很多人用过滤’号的方法来“防止”注入漏洞,这也许能挡住一些入门者的攻击,但对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

  文章到这里就结束了,不管你是安全人员、技术爱好者还是程序员,我都希望本文能对你有所帮助。