정답을 구하는 것이 문제라고 한다.
파일을 실행시켜보았다!
오잉,,, 아무것도 안 뜬다,,, 일단 EXE INFO로 파일 형식을 확인해주었다.
패킹도 되어있지 않고 그냥 확인하면 되는데 왜 안 뜰까,,, 일단 X32 디버거로 열어주었다.
성공 플래그를 찾기 위해 문자열 찾기를 확인해 주었다.
문자열 찾기를 보니까 분명히 콘솔 창에서 뭐가 보여야 하는데,,,, 왜 안보일까,,
일단 ENTER PASSWORD! 부분으로 이동해서 BP를 걸고 실행을 시켰는데
아래와 같은 에러가 발생하면서 진행이 안되었다..
찾아보니 라이브러리 함수들을 가져오는 경로가 제대로 설정되어 있지 않아서 발생하는 오류이고 값을 수정해서 패치 파일을 만들어야 한다고 한다,,,
다른 분이 하신 걸 따라해보려고 했는데 도저히 이해가 안 가서,, 더 찾아보다가 윈도우 10에서 콘솔창 실행이 안된다는 이야기를 보아서,,,
윈도우7 가상머신에 파일과 X32 디버거를 다운로드하여주고 거기에서 문제 풀이를 진행하였다.
불편할 줄 알았는데 그냥 윈도우 10이랑 똑같았다!
아래부터는 윈도우7 가상머신에서 진행하였다.
잘 실행이 된다!
아무 글자나 입력하면 아무 말도 없이 그냥 창이 종료된다.
X32 디버거로 열어주었다.
일단 문자열 찾기에서 “ENTER PASSWORD!” 아래의 함수 호출 부분에 BP를 걸고 한 줄씩 실행하였다.
위의 그림에서 EIP가 걸려있는 위치에서 “Enter Password!”라는 문구가 나왔다.
그리고 위의 그림 위치에서부터 값이 입력이 되는 것을 확인하였다.
그리고 한 모듈은 길어도 끝까지 보자는 마음으로 한 줄씩 실행해 보았다.
중간에 반복문은 반복문 외의 줄을 클릭하고 F4를 눌러서 바로 뛰어넘어갔다.
그리고 내리다 보니 4013C5에서 EDX를 호출하고 나서 프로그램이 종료되는 것을 확인하였다.
다시 실행해서 이번에는 EDX에서 더 진행하지 않고 EDX 내부로 들어가 보았다.
아래 그림을 보면 내가 입력한 값을 어떤 한 문자들과 계속 비교하는 것을 볼 수 있다.
간단하게 살펴보니 EAX에 내가 입력한 123456이라는 값이 저장되어 있고
처음에는 EAX의 한 바이트를 가져와서 0X43과 비교하고 있다.
EAX와 0X43이 같으면 다음 코드로 진행하고, 다르면 18F88A로 점프하는 것을 알 수 있었다.
그 다음은 다시 EAX+1에서 한 바이트를 가져와 0X52와 비교하고 같으면 진행, 다르면 18F88A로 점프하는 과정을 반복하고 있다.
여기에서 비교하는 아스키코드들이 정답인 것을 알 수 있다.
해당 비교 문자들을 다 가져오면
C R A A A C K E D !
이라는 문자가 완성되고 실행파일에 입력해보면 WELL DONE!이라는 성공문이 출력된다.
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn] Advance RCE L04풀이 (0) | 2021.10.05 |
---|---|
[CodeEngn] Advance RCE L03풀이 (0) | 2021.10.05 |
[CodeEngn] Advance RCE L01풀이 (0) | 2021.10.05 |
[CodeEngn] Basic RCE L20풀이 (0) | 2021.09.13 |
[CodeEngn] Basic RCE L19풀이 (0) | 2021.09.13 |