본문 바로가기

Reversing/CodeEngn

[CodeEngn] Basic RCE L16풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com


그림 1

16번 문제도 15번 문제와 동일하였다.

Exe info로 확인해보니 패킹은 되어있지 않았다.

 

그림 2
그림 3

문제를 실행시켜서 CodeEngn과 아무 패스워드를 입력해보니 아니라고 한다.

 

X32 디버거를 통해 분석해주었다.

 

그림 4

 

문자열 찾기를 통해 보니 위에서 본 wrong password와 good job이라는 부분이 보여서 해당 위치로 이동해주었다.

 

그림 5

모듈 분석이 안돼서 그래프 모드로 안 보여 주길래 그냥 위의 그림 상태로 분석하였다.

 

위의 회색으로 클릭되어 있는 부분에서 eax와 [ebp-3c]가 같지 않으면 wrong으로 점프하는 것을 알 수 있었다.

즉, eax와 [ebp-3c]가 같아야 한다.

 

이제 위의 그림보다 조금 더 위에 call 부분에 bp를 걸고 한줄씩 비교해주었다.

 

그림 6

 

Name은 codeengn, serial은 1234로 하고 실행시켰다.

일단 call 부분에서 멈추면 serial 값을 입력받지 않길래 엔터를 쳐서 한 줄 내려왔다.

 

한줄씩 분석해서 jne위의 cmp 부분을 확인하였더니 eax 값에 우리가 입력한 1234(4D2)가 들어있는 것을 확인할 수 있었다.

 

그림 7

 

이제 [EBP-3C] 값을 확인하기 위해 명령어를 한번 더 보았더니 [EBP-3C]의 4바이트를 가져온다고 하길래 덤프해서 따라가 보았다.

 

그림 8

따라가 보니 97 0D C6 E4 라는 값이 들어있고, 15번 문제와 동일하게 리틀 엔디언 방식이므로 거꾸로 계산기로 돌려주면

 

그림 9

3,838,184,855라는 값이 나오고, 문제를 실행시켜서 입력해주면 GOOD JOB이라는 문구가 출력되는 것을 확인할 수 있다.

 

그림 10

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

[CodeEngn] Basic RCE L18풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L17풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L15풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L14풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L12풀이  (0) 2021.08.18