| Reversing1
CSAW Reversing1 문제를 풀어보도록 하겠다.
아마도 리버싱 기초문제가 Reversing N의 이름으로 출제되는 것 같다.
미리 말하지만 아주아주 쉽다.
프로그램을 실행시키면 다음의 Flag 팝업창이 뜨는데, 이상한 한글이 뜬다.
한글패치가 안돼서 그런건가 싶지만 이미 가상머신 설치 시에 다 완료했다.
Abort, Retry, Ignore 세 버튼을 다 눌렀을 때에도 아무런 반응이 없어서 우선 패킹여부를 확인한다.
| PEiD
PEiD로 확인해보니 패킹되어있지 않다.
올리디버거에서 프로그램을 열고 우선 F8로 탐색하고자 했다.
그런데 해당 부분을 지나고 난 후
Flag가 출력되었다...
그냥 속임수인가 했으나 해당 Flag를 입력하니
풀렸다...?
| OllyDbg
그래도 이렇게 넘길 수는 없으니 플래그가 출력되는 해당 부분의 함수를 살펴보도록 한다.
IsDebuggerPresent : 디버거의 존재 여부 확인
1) Debugger 존재 O : return이 1이므로 JNZ에서 점프 -> 2로 이동
2) Debugger 존재 X : return이 0으므로 JNZ에서 점프x -> 1로 이동
==> 우리는 올리디버거로 확인하고 있으므로 return이 1이다.
2개의 반복문을 돌면서 기존의 flag에 담긴 값을 원래 flag로 바꾼다.
이후에 정답 플래그가 출력된다.
이 문제는 단순히 디버거를 활용해 프로그램을 동작시키면 플래그가 출력되는 쉬운 문제인데
그 동작원리를 파악하는 것이 중요하다.
'2. Reversing (리버싱) > 1) Write UP' 카테고리의 다른 글
[2020.06.16] Reversing.kr | Position 문제 (0) | 2020.07.01 |
---|---|
[2020.06.02] Reversing.kr | Replace 문제 (0) | 2020.06.02 |
[2020.05.17] Reversing.kr | AutoHotkey2 문제 (0) | 2020.05.17 |
[2020.05.14] CSAW365 | Gametime (0) | 2020.05.14 |
[2020.05.14] CSAW365 | Gametime (0) | 2020.05.14 |