推荐:详解asp之FileSystemObject对象指定的驱动器存在吗? 本例演示如何使用DriveExists方法来探测某个驱动器是否存在。 代码如下: html body % Setfs=Server.CreateObject(Scripting.FileSystemObject) iffs.driveexists(c:)=truethen Response.Write(驱动器c:存在。) Else Response.Wr
数据库被挂马后很多人不知怎么处理,或处理的不完全,导致网页打开后仍有木马,本文介绍一种比较好的处理办法,供大家参考。第一步:为现有数据库做好备份。
第二步:执行如下ASP文件,就可以去掉数据库当中的JS木马。(注:conn.asp从略)
| ’这里放入JS木马内容:请记得改为自己数据库中的JS木马内容。 <!--#includefile=conn.asp--> <% Server.ScriptTimeOut=180 SetrstSchema=conn.OpenSchema(20) k=1 DoUntilrstSchema.EOF ’遍历数据库表 IfrstSchema(TABLE_TYPE)=TABLEThen response.writeK&.<fontcolor=red><b>&rstSchema(TABLE_NAME)&</b></font>: ’显示表名 Setrs=Server.CreateObject(ADODB.Recordset) sql=select*from[&rstSchema(TABLE_NAME)&] rs.opensql,conn,1,3 Fori=0tors.fields.count-1 ’遍历表中字段 Ifint(rs(i).Type)=129orint(rs(i).Type)=130orint(rs(i).Type)=200orint(rs(i).Type)=201orint(rs(i).Type)=202orint(rs(i).Type)=203Then ’只处理字段类型为字符型的字段 conn.execute(update[&rstSchema(TABLE_NAME)&]set&rs(i).name&=replace(cast(&rs(i).name&asvarchar(8000)), ’这里放入JS木马内容 ’, ’ ’)) response.writers(i).name&&rs(i).Type& ’显示执行过的字段名。 EndIf Next response.write<br> EndIf rstSchema.MoveNext k=k+1 Loop response.Write执行成功 %> |
如果数据库表很多的话,上面的遍历数据库结构未执行完就被IIS给停止了。在这时候可以在
| If rstSchema(TABLE_TYPE)=TABLE Then |
当中适当加入k值的范围,如:
| IfrstSchema(TABLE_TYPE)=TABLEk>10andk<20Then |
这样的话就一次只操作9个表。
第三步:
根据数据库JS注入的特性(会包括<script、</script>和http://这样的字符),
在conn.asp里面放入如下代码:
| FunctionCheack_Sqljs() ’防止数据库外链JS注入:true为发现外链JS注入。 DimF_Post,F_Get Cheack_Sqljs=False IfRequest.Form<>Then ’表单提交时的检测 ForEachF_PostInRequest.Form If(Instr(LCase(Request.Form(F_Post)),<script)<>0orInstr(LCase(Request.Form(F_Post)),</script>)<>0)andInstr(LCase(Request.Form(F_Post)),http://)<>0Then Cheack_Sqljs=True ExitFor EndIf Next EndIf IfRequest.QueryString<>Then ’QueryString提交时的检测 ForEachF_GetInRequest.QueryString If(Instr(LCase(Request.Form(F_Get)),<script)<>0orInstr(LCase(Request.Form(F_Get)),</script>)<>0)andInstr(LCase(Request.Form(F_Get)),http://)<>0Then Cheack_Sqljs=True ExitFor EndIf Next EndIf EndFunction FunctionCheckDataFrom() ’检查提交数据来源:True为数据从站外提交过来的 CheckDataFrom=True server_v1=Cstr(Request.ServerVariables(HTTP_REFERER)) server_v2=Cstr(Request.ServerVariables(SERVER_NAME)) ifmid(server_v1,8,len(server_v2))<>server_v2then CheckDataFrom=False endif EndFunction IfCheack_SqljsorCheckDataFromThen Response.Write<ScriptLanguage=JavaScript>alert( ’禁止执行,非法操作。 ’);</Script> Response.End() EndIf |
分享:解读asp调用子程序教程ASP程序可通过VBScript和其他方式调用子程序。 调用使用VBScript的子程序,示例代码: html head % subvbproc(num1,num2) response.write(num1*num2) endsub % /head body p您可以像这样调用一个程序:/p p结果:%callvbproc(3,4)%/p p或者,像这样:/p p结果