师增煜 發表於 2023-10-28 00:00:00

恢复 SQL 被注入后的数据代码

<p>
        &lt;%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%&gt;<br>
        &lt;!--#include file="Inc/conn.asp"--&gt;<br>
        &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br>
        &lt;%<br>
        server.ScriptTimeout = 1000000<br>
        'xtype=99 ntext 与text类型相似,不同的是,ntext类型采用unicode标准字符集。<br>
        'xtype=35 text 用于存储大量文本数据。<br>
        'xtype=231 nvarchar 用来定义可变长度的二进制数据,最大长度为4000个字符。<br>
        'xtype=167 varchar 存储最常可以达到8000个字符的变长的字符数据<br>
        str = "''" '加在文本类型字段后的木马代码<br>
        sql = "SELECT a.name as t_name,b.name as c_name, b.xtype FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167)"<br>
        set rs = conn.execute(sql)<br>
        while Not rs.eof<br>
        t_name = rs("t_name") '表名<br>
        c_name = rs("c_name") '字段名<br>
        xtype = rs("xtype") '字段类型<br>
        If (xtype = 99 Or xtype = 35) then<br>
        conn.execute("update [" + t_name + "] set [" + c_name + "]=replace(cast([" + c_name + "] as varchar(8000)), " + str + ", '')")<br>
        Else<br>
        conn.execute("update [" + t_name + "] set [" + c_name + "]=replace([" + c_name + "], " + str + ", '')")<br>
        End If<br>
        rs.movenext<br>
        wend<br>
        response.Write("已经初步清理了挂马数据,请重新刷新页面试试看!")<br>
        %&gt;</p>
頁: [1]
查看完整版本: 恢复 SQL 被注入后的数据代码