这个c.js数据库注入,前端时间闹的很沸沸扬扬,我也在论坛发过数次贴,很感谢那些只拿分,并不解决实际问题的人,COPY别人的并不切合实际情况的文章,没什么大用这篇<绝对原创:实战http://3b3.org/c.js恶意SQL注入>的文章相信很多人过了吧
http://topic.csdn.net/u/20090326/11/5e584897-2dd7-4e10-af1b-9b48b146af8e.html?seed=1427037238我也是个初学者,对这里很多语句很不理解,想结合自己的实际问题解决确发现并不理想
随着2月份这种恶性循环,终于在百度发现了一个新的解决办法,并且很好用declare @delStr varchar(8000)
set @delStr='<script src=http://3%62omb.com/c.js></script>'
set @delStr='<script src=http://3bomb.%63%6Fm/c.js></script>'
set @delStr='<script src=http://3b%6F%6Db.com/c.js></script>'
set @delStr='<script src=http://%33bomb.com/c.js></script>'
set @delStr='<script src=http://3bomb.co%6D/c.js></script>'
set @delStr='<script src=http://3bom%62%2Ecom/c.js></script>'
set @delStr='<script src=http://3b%6Fmb.com/c.js></script>'
set @delStr='<script src=http://3bomb.c%6Fm/c.js></script>'
set @delStr='<script src=http://%33%62omb.com/c.js></script>'
set nocount ondeclare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int
declare @sql nvarchar(500)set @iResult=0
declare cur cursor for
select name,id from sysobjects where xtype='U'open cur
fetch next from cur into @tableName,@tbIDwhile @@fetch_status=0
begin
declare cur1 cursor for
        --xtype in (231,167,239,175,99,35) 为char,varchar,nchar,nvarchar,ntext,text类型
        select name from syscolumns where xtype in (231,167,239,175,99,35) and id=@tbID
open cur1
fetch next from cur1 into @columnName
while @@fetch_status=0
begin
      set @sql='update [' + @tableName + '] set ['+ @columnName +']= replace(cast(['+@columnName+'] as varchar(8000)),'''+@delStr+''','''') where ['+@columnName+'] like ''%'+@delStr+'%'''
      --update tablename set fieldA=replace(cast(fieldA as varchar(8000)) ,'aa','bb')这样的语句。
      exec sp_executesql @sql    
      set @iRow=@@rowcount
      set @iResult=@iResult+@iRow
      if @iRow>0
      begin
print '表:'+@tableName+',列:'+@columnName+'被更新'+convert(varchar(10),@iRow)+'条记录;'
      end    
      fetch next from cur1 into @columnName
end
close cur1
deallocate cur1fetch next from cur into @tableName,@tbID
end
print '数据库共有'+convert(varchar(10),@iResult)+'条记录被更新!!!'close cur
deallocate cur
set nocount off
但又遇到新问题,就光这个一个问题的贴,我就发了N次,就是没有彻底一次解决把数据库清理干净,我现在也不考虑,是否还会注入,我只想,把数据库里的这个语句彻底清理干净,不知道是否有达人能出手一次能点化我!我发现的问题是,当数据库里语句是:<script src=http://3%62omb.com/c.js></script>可以被成功的清理掉
但是当语句是<script src="http://3%62omb.com/c.js"></script>,地址那里有双引号,虽然提示更新多少多少条,可是查看数据库依然发现那个信息根本就没有变化
再次的详细发一次数据库的信息,希望高人能出手给个痛快
操作系统:WIN2003
数据库版本:SQL2000
数据库名称:GTTV
数据库表名:NEWS    列名:content    数据类型:ntext    长度:16表内的内容都超过了8K,有人让我用UPDATE,我用过,发现文章内容都丢失了,真苦恼,我分不是很多,也迫于无奈,也不知道这个问题要还要等几个月才能遇到一个能彻底解决的人,我就少给点分,这还可以多发几篇帖子

解决方案 »

  1.   

          set @sql='update [' + @tableName + '] set ['+ @columnName +']= replace(cast(['+@columnName+'] as varchar(8000)),'''+@delStr+''','''') where ['+@columnName+'] like ''%'+@delStr+'%'''
    ----try:
          set @sql='update [' + @tableName + '] set ['+ @columnName +']= replace(cast(['+@columnName+'] as varchar(8000)),'''+@delStr+''','''') where charindex('''+@delstr+''',['+@columnName+'] )> 0'