数据库被挂马我相信很多人都碰到过。在这里,我讲下我处理的方法。
第一步:为现有数据库做好备份。
第二步:执行如下ASP文件,这样就可以去掉数据库当中的JS木马:
注:conn.asp自己去写了。
'这里放入JS木马内容:请记得改为自己数据库中的JS木马内容。
<!--#include file="conn.asp"-->
<%
Server.ScriptTimeOut = 180 Set 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,3 For i = 0 To rs.fields.Count - 1 '遍历表中字段If int(rs(i).Type)=129 or int(rs(i).Type)=130 or int(rs(i).Type)=200 or int(rs(i).Type)=201 or int(rs(i).Type)=202 or int(rs(i).Type)=203 Then'只处理字段类型为字符型的字段
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 > 10 And k < 20 Then
这样的话就一次只操作9个表。
(责任编辑:ken)