리버싱

드림핵 Batch Checker

bluesunset 2024. 6. 1. 18:50

실행만 하면 된다는데 문제에서 주는 prob.bat 파일을 실행시키면 wrong이라고만 뜬다.

배치 파일이 정확히 어떤 종류의 파일인지 찾아보았다.

배치 파일은 사용자의 입력이나 개입 없이 순서대로 처리되는 명령어의 모음, 리스트이다.

프로그램을 로드하고, 한 번에 여러 프로세스를 실행하거나 일반적이고 반복적인 작업을 수행하는데 사용된다.

 

배치 파일은 그냥 메모장 등의 에디터에서 명령어를 쭉 쓰고 .bat으로 저장만 하면 만들 수 있다.

명령어에는 echo, pause, startshutdown 등이 있다.

문제의 배치 파일을 메모장으로 열어보니 

이런 식으로 SET이 쭉 있고 

그 밑에 이런식으로 문자열, ~숫자,숫자%% 가 있었다.

SET은 변수를 지정하는거 같고 밑에%%는 뭔지 몰랐는데 찾아보니

%변수:~a, b% 가 해당 변수의 a번째 문자부터 b길이만큼 문자열을 읽어오는 코드였다.

정리하자면, SET에서 변수를 만들어서 문자열을 저장하고, 밑에서 그 문자열 변수들을 이용한 것이다.

그래서 그냥 단순하게 파이썬 코드를 만들어서 변수를 똑같이 만들고 밑에서 사용한 코드도 똑같이 짜서 어떤 코드인지 알아보았다.

노가다 하느라 좀 걸리긴 했지만 금방 할 만했다.

이렇게 하고 저장된 문자열을 출력해보면

이렇게 나온다.

대충 FLAG== 다음에 나오는게 플래그인거 같고 echo는 명령어니까 echo 전까지만 잘라서

DH{BA7cH_cAN_hiDe_u5iNg_text}를 제출했더니 맞았다.

 

근데 풀고 나서 풀이를 봤더니 내가 진짜 바보 같은 짓을 했다는 걸 깨달았다.

그냥 문제에서 준 배치 파일에 

SET이 끝나고 cls 다음에 echo를 이렇게 넣어주고 파일을 실행시키면 flag가 나온다..