Hacking/[Reversing]IOLI CrackMe

IOLI CrackMe 0x02

양선규 2023. 4. 9. 20:09
728x90
반응형

IOLI CrackMe 0x02 입니다.

 

crackme0x02

 

리버싱을 통해, 프로그램 password를 알아내야 하는 문제입니다.

 

 

radare2 사용

 

저는 리버싱을 위해 radare2 프로그램을 사용하겠습니다.

radare 실행 후 aaaa 명령어로 프로그램을 분석해 주었습니다.

 

 

함수목록

 

함수목록입니다. 특별한 함수는 보이지 않아 main 기준으로 분석하겠습니다.

 

 

main 함수

 

main함수 입니다.

 

 

프로그램 구조

 

위쪽에서 프로그램 실행 시 문자열을 출력하고 있고,

844e 부분에서 var_ch 위치의 값과 eax값을 비교하고 있습니다.

8451 부분에선 두 값이 일치할 경우, 점프하지 않고 그대로 진행하고 있습니다. (일치하지 않으면 지정된 위치로 점프)

 

 

일치할 경우 프로그램 진행

 

두 값이 일치할 경우의 프로그램 진행입니다.

Password OK 문자열을 출력하고 있는데요, 이것을 보아 위쪽 cmp 비교구문은 올바른 password를 입력했는지 확인하는 부분인 것 같습니다. 정확히 어떤 값과 비교하는지 확인해봅시다.

 

 

eax, var_ch

 

비교구문 위치에 breakpoint를 설정하여 프로그램을 실행시킨 후, eax와 var_ch 값을 확인하겠습니다.

 

 

1234

 

breakpoint를 설정한 후, dc명령어로 프로그램을 실행하였습니다.

입력한 Password는 1234 입니다.

 

 

breakpoint에서 멈춰 있음

 

자, breakpoint에서 잘 멈춰주었습니다. cmp 명령어로 두 값을 비교하기 직전인 상태인데요.

지금 저 두곳에 어떤 값이 들어있는지 확인해봅시다.

 

 

1234

 

dr은 레지스터 값을 확인하는 명령어입니다.

eax에는 우리가 프로그램 실행 시 password값으로 입력했던 1234 였습니다.

그렇다면 이것과 비교되는 값인 var_ch가 password 일 것 같은데요?

 

 

ebp-0xc

 

main함수 위쪽을 확인하면, var_ch의 위치는 ebp-0xc 라는 것을 확인할 수 있습니다.

 

 

052b24

 

242b 05 보이시나요? 저게 ebp-0xc 부분의 값입니다.

다만, little endian으로 저장되어 있기 때문에 2개씩 끊어서 반대로 읽어야 합니다.

즉, 0x052b24 입니다.

 

 

338724

 

var_ch 값은 338724 였군요!

이제 이 값이 password인지 확인해 봐야겠죠? 직접 입력해 봅시다.

 

 

radare2 종료

 

q 명령어로 일단 radare2를 종료해 줍니다.

 

 

clear

 

예상대로 password는 338724였습니다!

728x90
반응형

'Hacking > [Reversing]IOLI CrackMe' 카테고리의 다른 글

IOLI CrackMe 0x01  (0) 2023.04.09
IOLI CrackMe 0x00  (0) 2023.04.09
IOLI CrackMe 0x03  (0) 2023.04.08