**처음 문제 파일을 받았는데, 왜인지 모르게 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 모두 맞는 경우
JNZ 명령어가 넘어가고 long time no see..가 출력되는 것을 확인할 수 있다.
authkey는 RevERsingisfun!!
성공 !
'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 |
댓글