본문 바로가기
Reversing/Wargame

[XCZ.kr] Prob.9 Easy Reversing

by sseddi 2021. 2. 17.
728x90

**처음 문제 파일을 받았는데, 왜인지 모르게 msvcr110.dll 오류가 나서 구글링 후 dll 파일을 C:\Windows\SysWOW64 경로에 넣어주었더니 해결이 되었다.**

 

그러면 이제 문제를 풀어보자 !!

그냥 바로 실행시켜보면 id와 pw를 입력 받고 who are you?? 가 나오고 끝이 난다.

코드를 살펴보기 위해 main 함수를 찾아보았다.

코드를 보니 기본적인 틀은 id와 pw를 입력받아 옳은 정보이면 long time no see가 나오고, 아니면 who are you?가 출력되는 것 같다.

 

1) id와 pw 둘 다 틀렸을 경우

아직 id와 pw를 모르니까 임의로 abc123, aabdsf 를 각각 id, pw에 넣어보았다.

그리고 쭉 f8을 눌러 실행해보니까 레지스터 창에 XCZ 문자열이 찍힌 걸 볼 수 있다.

뭐지 하고 더 실행해보니 내가 쳤던 id인 abc123도 레지스터 창에 찍힌걸 볼 수 있었다.

그래서 그 둘을 비교하는 것 같았다.

바로 이 코드를 보면 cmp로 eax와 ecx의 값을 비교하고 같지 않으면 00ae10f0으로 이동하는 것을 볼 수 있는데

그 주소로 가봤더니 TEST 명령어로 두 개의 오퍼랜드를 비교(and 연산 수행 후 플래그 설정) 후 같지 않으면 00ae1181로 이동하는 것을 볼 수 있다.

그래서 그 주소로 가봤더니 who are you???가 나오는 것을 확인할 수 있었다.

 

일단 이 과정에서 id는 XCZ이라는 것을 확인할 수 있었다.

그리고 00AE1181 주소는 who are you???가 나오는 주소인 것을 확인한 후 다시 코드를 살펴보았다.

이제 id를 알았으니 경우에 따라 정리해보자

 

2) id는 맞고 pw가 틀렸을 경우

위 경우와 같이 쭉쭉 실행시키다보면

id는 잘 넘어가고

pw를 비교하는 부분이 나오게 된다.

여기서 옳은 pw가 UNL1M1T임을 알 수 있었다.

근데 CMP 연산 후 같지 않으므로 JNZ에서 00AE1123으로 이동한다.

그 주소로 가보면

TEST 연산 후 ,, JNZ로 00AE1181로 이동된다.

만일 옳은 pw를 넣었을 경우 JNZ명령어로 이동되지 않고, 밑의 long time no see ... 가 나올 것 같다.

 

3) id와 pw 모두 맞는 경우

비번을 3과정에 걸쳐 확인한다.

JNZ 명령어가 넘어가고 long time no see..가 출력되는 것을 확인할 수 있다.

authkey는 RevERsingisfun!!

 

성공 !

728x90

'Reversing > Wargame' 카테고리의 다른 글

[CodeEngn] Basic RCE L06  (0) 2021.02.19
abex's crackme #2  (0) 2021.02.18
[suninatas] REVERSING 9  (0) 2021.02.17
abex' crackme #3  (0) 2021.02.16
abex' crackme #1  (0) 2021.02.16

댓글