본문 바로가기

Security study/CTF

[Reversing] abex crackme #3

문제 파일을 실행시키면 마지막에는 아래의 창이 나온다.

지금은 파일을 찾을 수 없다고 하는데 keyfile을 찾았다는 메시지 창이 뜨게하면 성공하는 문제이다.

일단 Immunity Debugger 에 넣었더니 아래의 화면이 나왔다.

오른쪽의 주석 부분을 보면 어떤 메시지가 출력되는지 알 수 있다. 잘 살펴보면  Yep, Keyfile found! 라는 메시지가 보이는데 우리가 저 문장을 출력시키면 문제가 해결되는 것으로 예측할 수 있다. F8로 실행시키면서 어셈블리어 부분을 살펴보면 00401037 부분에서 점프를 통해 00401075로 가고 있는 것이 확인된다.

00401075 부분에는 문제 파일을 실행했을 때 마지막에 나오던 메시지인 Hmmmmm, I can't~~ 라는 문장이 있다. 그래서 00401037의 JE를 JNE로 바꿔준 후 F8로 실행해보았더니 이번에는 00401060 주소로 이동하여 The found file is not~~이라는 문장이 출력됐다. 그래서 00401049의 JNZ를 JE로 바꿔주었다. 그랬더니 "Yep, keyfile found!"라는 메시지 창이 출력되는 것을 확인할 수 있었고 문제를 해결했다. 그런데 이 풀이 방법은 제대로 된 풀이가 아니다. 제대로 된 풀이를 살펴보자.

 

*제대로 된 풀이

CreateFileA() 함수는 파일을 만들거나 여는 함수인데 Immunity Debugger에 문제파일을 처음 넣었을 때 나왔던 화면을 다시 보면

주석 부분의 Mode에서 OPEN_EXISTING이 보인다. 이것으로 파일을 여는 동작을 한다는 것을 알 수 있다. 또 주석에서 FileName 부분에 abex.l2c 라고 적혀있으므로 이러한 이름의 파일을 연다는 것도 예측할 수 있다. 또 GetFileSize라는 함수가 밑에 보이는데 CMP로 파일의 크기가 12인지 비교해주고 있다. 그런데 12는 16진수이므로 10진수로 바꿔주면 18이다. 파일의 크기가 18인 abex.l2c 파일을 생성해주기 위해 메모장으로 알파벳 18글자를 친 후 이름을 바꿔 같은 경로에 저장해준다.

abex.l2c 파일 속성
같은 경로에 저장

그 후 문제 파일을 실행하면 아래의 메시지가 나오면서 해결된다.

 

'Security study > CTF' 카테고리의 다른 글

[Reversing] codeengn Basic RCE L06  (0) 2021.02.20
[Reversing]패킹(packing), 언패킹(unpacking)  (0) 2021.02.20
[Reversing]abex's crackme #2  (0) 2021.02.18
[Reversing] xcz.kr Prob9  (0) 2021.02.18
[Reversing]day 1  (0) 2021.02.15