sysobjects表无select权限时暴表

简介:
  作者:ninty
文章首发作者BLOG http://www.forjj.com/
后提交至T00LS,转载请注明出处。

T00LS上有人问了,sysobjects表没有权限。如何暴表。
所有的表名都只存在了sysobjects表里,所以我们无法从别的地方得到表名。

但是,大家有没注意过sql server提供的object_name函数呢?
它与object_id函数是相对应的,object_id会返回指定对象在数据库中的id值。

而object_name会返回指定ID所对应的数据库对象名,对于表来说自然就是表名了。

好了,现在只要得到所有的用户表的ID就可以得到表名了, 表的ID在很多地方都会存储,比如syscolumns表, 
我们只要从syscolumns表里面取得表的ID,再利用object_name就可以得到表名了。

下面是测试代码:

declare @id int
select @id = 1
declare @sql varchar(100)
while @id <= 200
begin
select @sql = 'create table test'+ltrim(@id)+'(id int)'
exec(@sql)
select @id = @id +1
end


select distinct(object_name(id)) from syscolumns where object_name(id) not in('sysobjects','sysindexes','syscolumns','systypes',
'syscomments','sysfiles1','syspermissions','sysusers','sysproperties','sysdepends','sysreferences',
'sysfulltextcatalogs','sysindexkeys','sysforeignkeys','sysmembers','sysprotects',
'sysfulltextnotify','sysfiles','sysfilegroups','dt_addtosourcecontrol','dt_addtosourcecontrol_u',
'dt_adduserobject_vcs','dt_checkinobject','dt_checkinobject_u','dt_checkoutobject','dt_checkoutobject_u',
'dt_displayoaerror','dt_displayoaerror_u','dt_droppropertiesbyid','dt_dropuserobjectbyid','dt_generateansiname',
'dt_getobjwithprop','dt_getobjwithprop_u','dt_getpropertiesbyid','dt_getpropertiesbyid_u','dt_getpropertiesbyid_vcs',
'dt_getpropertiesbyid_vcs_u','dt_isundersourcecontrol','dt_isundersourcecontrol_u','dt_setpropertybyid',
'dt_setpropertybyid_u','dt_validateloginparams','dt_validateloginparams_u','dt_whocheckedout','dt_whocheckedout_u',
'dtproperties','sysconstraints','syssegments')

代码在SQL SERVER 2000下测试通过。。

上面的代码绕过了sysobjects表查出了所有的用户表的表名。
可以查出来,那暴出来就不是什么难事了吧? 怎么暴大家就自己想吧,肯定难不到大家的。

本人菜鸟, 如果哪里写错了还希望各位大牛指出来。












本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/481341,如需转载请自行联系原作者

相关文章
|
1月前
user-select不可被用户选中
user-select不可被用户选中
31 0
GROUP BY语句规定
GROUP BY语句规定
51 0
|
SQL Java 数据库连接
SELECT操作
SELECT操作
58 0
|
SQL
GROUP BY 语句
GROUP BY 语句
67 0
|
关系型数据库 数据库 MySQL

热门文章

最新文章