您当前的位置: 首页 > 网站编程 > ASP教程 > ASP数据库被挂马的编程处理方法

ASP数据库被挂马的编程处理方法

作者:不详 来源:网络 发布时间: 2011-03-11 10:22 点击:
数据库被挂马我相信很多人都碰到过。在这里,我讲下我处理的方法。 第一步:为现有数据库做好备份。 第二步:执行如下ASP文件,这样就可以去掉数据库当中的JS木马: 注:conn.asp自己去写了。 '这里放入JS木马内容:请记得改为自己数据库中的JS木马内容。 !--#include

ASP数据库被挂马的编程处理方法

  数据库被挂马我相信很多人都碰到过。在这里,我讲下我处理的方法。
  
  第一步:为现有数据库做好备份。
  
  第二步:执行如下ASP文件,这样就可以去掉数据库当中的JS木马:
  
  注:conn.asp自己去写了。
  
  '这里放入JS木马内容:请记得改为自己数据库中的JS木马内容。
  
  <!--#include file="conn.asp"-->
  
  <%
  
  Server.ScriptTimeOut=180Set rstSchema=conn.OpenSchema(20)
  
  k=1
  
  Do Until rstSchema.EOF'遍历数据库表
  
  If rstSchema("TABLE_TYPE")="TABLE" Then
  
  response.write K&".<font color=red><b>"&rstSchema("TABLE_NAME")&"</b></font>:"'显示表名Set rs=Server.CreateObject("ADODB.Recordset")
  
  sql="select*from["&rstSchema("TABLE_NAME")&"]"
  
  rs.open sql,conn,1,3For i=0to rs.fields.count-1'遍历表中字段If int(rs(i).Type)=129or int(rs(i).Type)=130or int(rs(i).Type)=200or int(rs(i).Type)=201or int(rs(i).Type)=202or int(rs(i).Type)=203Then'只处理字段类型为字符型的字段
  
  conn.execute("update["&rstSchema("TABLE_NAME")&"]set"&rs(i).name&"=replace(cast("&rs(i).name&" as varchar(8000)),'这里放入JS木马内容','')")response.write rs(i).name&""&rs(i).Type&""'显示执行过的字段名。
  
  End If
  
  Next
  
  response.write"<br>"
  
  End If
  
  rstSchema.MoveNext
  
  k=k+1
  
  Loop
  
  response.Write"执行成功"
  
  %>
  
  如果数据库表很多的话,上面的遍历数据库结构未执行完就被IIS给停止了。在这时候可以在:
  
  If rstSchema("TABLE_TYPE")="TABLE" Then
  
  当中适当加入k值的范围,如:
  
  If rstSchema("TABLE_TYPE")="TABLE" k>10and k<20Then
  
  这样的话就一次只操作9个表。
  
  第三步:
  
  根据数据库JS注入的特性(会包括<script、</script>和http://这样的字符),在conn.asp里面放入如下代码:
  
  Function Cheack_Sqljs()'防止数据库外链JS注入:true为发现外链JS注入。
  
  Dim F_Post,F_Get
  
  Cheack_Sqljs=False
  
  If Request.Form<>"" Then'表单提交时的检测For Each F_Post In Request.Form If(Instr(LCase(Request.Form(F_Post)),"<script")<>0or Instr(LCase(Request.Form(F_Post)),"</script>")<>0)and Instr(LCase(Request.Form(F_Post)),"http://")<>0Then
  
  Cheack_Sqljs=True
  
  Exit For
  
  End If
  
  Next
  
  End If
  
  If Request.QueryString<>"" Then'QueryString提交时的检测For Each F_Get In Request.QueryString If(Instr(LCase(Request.Form(F_Get)),"<script")<>0or Instr(LCase(Request.Form(F_Get)),"</script>")<>0)and Instr(LCase(Request.Form(F_Get)),"http://")<>0Then
  
  Cheack_Sqljs=True
  
  Exit For
  
  End If
  
  Next
  
  End If
  
  End Function
  
  Function CheckDataFrom()'检查提交数据来源:True为数据从站外提交过来的
  
  CheckDataFrom=True
  
  server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))if mid(server_v1,8,len(server_v2))<>server_v2then
  
  CheckDataFrom=False
  
  end if
  
  End Function
  
  If Cheack_Sqljs or CheckDataFrom Then
  
  Response.Write"<Script Language=JavaScript>alert('禁止执行,非法操作。');</Script>" Response.End()
  
  End If

分享到:
本文"ASP数据库被挂马的编程处理方法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(1)
100%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4