首页 > 网络安全 > 从'or'='or'漏洞入侵到修复

从'or'='or'漏洞入侵到修复

2008年4月26日 发表评论 阅读评论

来源:CNsHaRk‘s BLog
实施修复,方法有很多在这里介绍两种,咱们使用第2种
方法1: Replace过滤字符
   解决方法:查找login.asp下的<from找到下边的类似
   username=request.Form("name")
   pass=request.Form("pass")

   修改为:
   username=Replace(request.Form("name"), "'", "''")
   pass=Replace(request.Form("pass"), "'", "''")

   语法是屏蔽'和''字符来达到效果.
  
方法2:在conn.asp 内加入<!–#include file="safe.asp"–>
   注:(前提 登陆页面有<!–#include file="conn.asp"–>)

   把以下代码保存为safe.asp
  
下面是程序代码********************************************************

<br /><% <br />Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name <br />Err_Message = 3<br />Err_Web = "safe.htm" <br />&#039;出错时转向的页面 <br /><br />Query_Badword="&#039;&#124;and&#124;select&#124;update&#124;chr&#124;delete&#124;%20from&#124;;&#124;insert&#124;mid&#124;master.&#124;set&#124;chr(37)&#124;=" <br />&#039;在这部份定义get非法参数,使用"&#124;"号间隔 <br /><br />Form_Badword="&#039;&#124;(&#124;)&#124;;&#124;=" <br />&#039;在这部份定义post非法参数,使用"&#124;"号间隔 <br /><br />On Error Resume Next <br /><br /><br />if request.QueryString<>"" then <br />Chk_badword=split(Query_Badword,"&#124;") <br />FOR EACH Query_Name IN Request.QueryString <br />for i=0 to ubound(Chk_badword) <br />If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then <br />Select Case Err_Message <br />Case "1" <br />Response.Write "<Script Language=JavaScript>alert(&#039;传参错误!参数 "&name&" 的值中包含非法字符串!&#92;n&#92;n请不要在参数中出现:and update delete ; insert mid master 等非法字符!&#039;);window.close();</Script>" <br />Case "2" <br />Response.Write "<Script Language=JavaScript>location.href=&#039;"&Err_Web&"&#039;</Script>" <br />Case "3" <br />Response.Write "<Script Language=JavaScript>alert(&#039;传参错误!参数 "&name&"的值中包含非法字符串!&#92;n&#92;n请不要在参数中出现:and update delete ; insert mid master 等非法字符!&#039;);location.href=&#039;"&Err_Web&"&#039;;</Script>" <br />End Select <br />Response.End <br />End If <br />NEXT <br />NEXT <br />End if<br />if request.form<>"" then <br />Chk_badword=split(Form_Badword,"&#124;") <br />FOR EACH name IN Request.Form <br />for i=0 to ubound(Chk_badword) <br />If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then <br />Select Case Err_Message <br />Case "1" <br />Response.Write "<Script Language=JavaScript>alert(&#039;出错了!表单 "&name&" 的值中包含非法字符串!&#92;n&#92;n你的非法操作已记录,请马上停止非法行为!&#039;);window.close();</Script>" <br />Case "2" <br />Response.Write "<Script Language=JavaScript>location.href=&#039;"&Err_Web&"&#039;</Script>" <br />Case "3" <br />Response.Write "<Script Language=JavaScript>alert(&#039;唐山味儿不浓 告诉您出错了!参数 "&name&"的值中包含非法字符串!&#92;n&#92;谢谢您光临!,请停止非法行为!&#039;);location.href=&#039;"&Err_Web&"&#039;;</Script>" <br />End Select <br />Response.End <br />End If <br />NEXT <br />NEXT <br />end if <br />%> <br />

************************************************************上面是程序代码

转载请注明:woyigui's blog [http://www.woyigui.cn/]
本文标题:从'or'='or'漏洞入侵到修复
本文地址:http://www.woyigui.cn/2008/04/26/%E4%BB%8E039%3Bor039%3B%3D039%3Bor039%3B%E6%BC%8F%E6%B4%9E%E5%85%A5%E4%BE%B5%E5%88%B0%E4%BF%AE%E5%A4%8D/

分类: 网络安全 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
*