日期:2011-05-02 15:21:00 来源:本站整理
SQL注入漏洞全接触--高级篇(二)[MSSQL防范]
本文“SQL注入漏洞全接触--高级篇(二)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
第二节、绕历程序限制持续注入
在入门篇提到,有很多人喜好用’号测试注入漏洞,所以也有很多人用过滤’号的办法来"避免"注入漏洞,这大概能挡住一些入门者的攻击,但对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
文章到这里就完毕了,不管你是安全人员、技术爱好者还是程序员,我都但愿本文能对你有所帮忙
以上是“SQL注入漏洞全接触--高级篇(二)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论