數據庫被掛馬我相信很多人都碰到過在這裡我講下我處理的方法
第一步為現有數據庫做好備份
第二步執行如下ASP文件這樣就可以去掉數據庫當中的JS木馬
注connasp自己去寫了
這裡放入JS木馬內容請記得改為自己數據庫中的JS木馬內容
!#include file=connasp
%
ServerScriptTimeOut= Set rstSchema = connOpenSchema()
k=
Do Until rstSchemaEOF 遍歷數據庫表
If rstSchema(TABLE_TYPE)=TABLE Then
responsewrite Kfont color=redbrstSchema(TABLE_NAME) /b/font: 顯示表名Set rs=ServerCreateObject(ADODBRecordset)
sql=select * from [ rstSchema(TABLE_NAME)]
rsopen sqlconn For i= to unt 遍歷表中字段If int(rs(i)Type)= or int(rs(i)Type)= or int(rs(i)Type)= or int(rs(i)Type)= or int(rs(i)Type)= or int(rs(i)Type)= Then只處理字段類型為字符型的字段
connexecute(update [rstSchema(TABLE_NAME)] set rs(i)name =replace(cast(rs(i)name as varchar())這裡放入JS木馬內容)) responsewrite rs(i)name rs(i)Type 顯示執行過的字段名
End If
Next
responsewrite br
End If
rstSchemaMoveNext
k=k+
Loop
responseWrite 執行成功
%
如果數據庫表很多的話上面的遍歷數據庫結構未執行完就被IIS給停止了在這時候可以在
If rstSchema(TABLE_TYPE)=TABLE Then
當中適當加入k值的范圍如
If rstSchema(TABLE_TYPE)=TABLE k and k Then
這樣的話就一次只操作個表
第三步
根據數據庫JS注入的特性(會包括script/script和裡面放入如下代碼
Function Cheack_Sqljs()防止數據庫外鏈JS注入:true為發現外鏈JS注入
Dim F_PostF_Get
Cheack_Sqljs=False
If RequestForm Then表單提交時的檢測For Each F_Post In RequestForm If (Instr(LCase(RequestForm(F_Post))script) or Instr(LCase(RequestForm(F_Post))/script)) and Instr(LCase(RequestForm(F_Post))//) Then
Cheack_Sqljs=True
Exit For
End If
Next
End If
If RequestQueryString ThenQueryString提交時的檢測For Each F_Get In RequestQueryString If (Instr(LCase(RequestForm(F_Get))script) orInstr(LCase(RequestForm(F_Get))/script)) and Instr(LCase(RequestForm(F_Get))//) Then
Cheack_Sqljs=True
Exit For
End If
Next
End If
End Function
Function CheckDataFrom()檢查提交數據來源True為數據從站外提交過來的
CheckDataFrom=True
server_v=Cstr(RequestServerVariables(HTTP_REFERER)) server_v=Cstr(RequestServerVariables(SERVER_NAME)) if mid(server_vlen(server_v))server_v then
CheckDataFrom=False
end if
End Function
If Cheack_Sqljs or CheckDataFrom Then
ResponseWrite Script Language=JavaScriptalert(禁止執行非法操作);/Script ResponseEnd()
End If
From:http://tw.wingwit.com/Article/program/ASP/201405/30969.html