Comprender la base de datos mssql

Prefacio 0x00

Como este tiempo está relativamente ocupado, la actualización del blog también es relativamente lenta. Originalmente quería enviar esta base de datos mssql hace unos días, pero debido a que la estructura de mssql es más complicada y hay más formas de usarla, entonces entré en un estudio en profundidad de la estructura de la base de datos de mssql y varios tipos de métodos de utilización. Zuo no profundizó en algunas inyecciones manuales.

0x01 entender la base de datos mssql

El mssql mencionado aquí es nuestra base de datos sqlserver

Un sistema de base de datos relacional lanzado por Microsoft en los Estados Unidos. SQL Server es un sistema de administración de bases de datos escalable y de alto rendimiento diseñado para la computación distribuida cliente / servidor. Logra una combinación orgánica con Windows NT y proporciona una solución de sistema de administración de información a nivel empresarial basada en transacciones. 
( 1 ) El diseño de alto rendimiento puede aprovechar al máximo las ventajas de WindowsNT. 
( 2 ) Administración avanzada del sistema, admite herramientas de administración gráfica de Windows, admite la administración y configuración del sistema local y remoto. 
( 3 ) Fuerte función de procesamiento de transacciones, utilizando varios métodos para garantizar la integridad de los datos. 
( 4 ) Admite estructura multiprocesador simétrica, procedimiento almacenado, ODBC y tiene lenguaje SQL independiente. SQLServer proporciona una plataforma de base de datos superior para usuarios, desarrolladores e integradores de sistemas con su función de replicación de datos incorporada, potentes herramientas de administración, estrecha integración con Internet y estructura de sistema abierta.

Lo anterior es la información de la Enciclopedia Baidu.

Mssql y sqlserver son muy diferentes, la estructura de sqlserver es más complicada y la declaración de inyección también es más complicada. Pero si el usuario sa ejecuta la base de datos durante la inyección, entonces podemos eliminar fácilmente el shell web. mssql puede habilitar directamente los procedimientos almacenados para ejecutar comandos.

Echemos un vistazo a la función de la propia base de datos del sistema mssql.

 

 

 

La base de datos maestra almacena la información de todos los objetos, y la contraseña de sa u otros usuarios se almacena en un 
modelo de texto cifrado : hay una plantilla para crear una base de datos de usuario 
msdb: base de datos de usuario, que almacena todos los cronogramas de tareas 
tmpdb: base de datos temporal, si el bit de visualización está restringido durante la inyección , Existe en una tabla, y luego explota los datos. Reiniciar borrará los datos tempdb

La base de datos viene con la introducción del usuario:

El signo # al frente es la base de datos de usuario interna mssql 
, que se crea solo cuando la base de datos se instala usando nt al comienzo de la instalación de la base de datos.

 

 

 

Si el comando de ejecución msql es usar el servicio nt serivice \ mssqlserver para ejecutar el comando.

 

Echemos un vistazo a continuación para ver qué es diferente de mysql.

seleccione * de master.dbo.sysobjects donde xtype = ' u ' ;

matster debe especificar el punto del nombre de la base de datos seguido de su arquitectura más el nombre de la tabla.

Entonces, ¿qué descubrimos que no hay tal tabla en esta base de datos?

De hecho, esta es solo nuestra opinión, no nuestra mesa real.

sysobjects es una vista del sistema, utilizada para almacenar todos los objetos creados en la base de datos, como restricciones, valores predeterminados, registros, reglas, procedimientos almacenados,

xtype es el tipo de objeto representativo: 
U: tabla (tabla definida por el usuario) 
V: vista 
P: procedimiento almacenado 
X: procedimiento almacenado extendido

Podemos consultar todos los nombres de nuestras bases de datos

seleccione * de master..sysdatabases;

 

 

 

Esta consulta también es nuestra base de datos de información de vista en mssql también existe en forma de vistas

Compruebe si la biblioteca de la estación está separada

y ( seleccione host_name ()) = ( seleccione @@ servername))

Consulte el nombre de la base de datos, esta función puede recorrer el número entre paréntesis para consultar el nombre de la base de datos correspondiente

SELECCIONE DB_NAME ();

 

 

 

 

Aquí viene la división de permisos mssql,

sa: autoridad súper administrador sysadmin 
dbo: autoridad administradora de la base de datos db_owner 
public : autoridad de usuario de acceso

 

 

Procedimiento almacenado 0x02

El procedimiento almacenado (Procedimiento almacenado) es 
un conjunto de sentencias SQL en un sistema de base de datos grande para completar una función específica, se almacena en la base de datos, es efectivo de forma permanente después de una compilación 
, el usuario especifica el nombre del procedimiento almacenado y proporciona parámetros (si el Procedimiento almacenado con parámetros) para ejecutarlo. 
El procedimiento almacenado es un objeto importante en la base de datos. 
En el caso de un volumen de datos particularmente grande, el uso de procedimientos almacenados puede lograr una mejora de la eficiencia a doble velocidad

Entonces podemos usar procedimientos almacenados para ejecutar directamente comandos cmd en combate real

Los procedimientos almacenados utilizados comúnmente son xp_cmdshell, sp_oacreate sp_oacreate, el comando de ejecución del procedimiento almacenado sin eco, necesita salir al archivo txt y luego ver.

La versión 00 es la versión predeterminada 05 de xp_cmdshell, que debe iniciarse manualmente.

 

0x03 final

Este artículo lleva 3 horas, registra el tiempo. El siguiente artículo escribe varias técnicas de inyección y sintaxis de mssql

 

Supongo que te gusta

Origin www.cnblogs.com/nice0e3/p/12702771.html
Recomendado
Clasificación