본문 바로가기
Security/Reversing

[CodeEngn] CodeEngn Basic RCE L14

by 단월໒꒱ 2022. 7. 2.

14번 문제이다.

 

 

 

 

  name이 codeengn일 때 serial 값을 구하라고 한다.

 

  일단 프로그램을 실행시켜보았다.

 

 

 

 

  임의의 값을 주니까 저렇게 문구가 출력되는 것을 확인할 수 있다.

 

 

  Exeinfo에 프로그램을 올려보았다.

 

 

 

 

  UPX로 패킹되어있다. 언패킹하자.

 

 

 

 

언패킹했으니 이제 OllyDbg로 열어주자.

 

열어준 후에 문자열 검색을 해본다.

 

 

 

 

  적당해보이는 Good Job 어쩌구 부분으로 이동해주자.

 

 

 

 

  위쪽을 보니까 CMP로 EAX와 ESI 값을 비교하고 있다. 둘이 다르면 주소 00401353, 즉 실패 문구쪽으로 점프를 하고, 같은 경우에는 Good Job쪽으로 간다. 따라서 EAX와 ESI 값에 어떤 값이 들어가는지를 보면 될 것 같다.

 

  주소 0040133A에 BP를 걸고 디버깅을 해보자.

 

 

 

 

  임의로 값을 저렇게 주고 디버깅을 시작했다.

 

 

 

 

BP를 건 부분에서 딱 멈춘 것을 볼 수 있다.

 

이제 EAX 값을 봐보자. 

 

 

 

 

EAX에 4D2가 저장된 것을 볼 수 있다. 아까 Serial에 1234를 입력했는데 이 값을 16진수로 바꾸면 4D2가 나온다.

 

그렇다면 EAX 값과 ESI 값을 비교해서 같으면 되므로 ESI에 저장된 값이 10진수로 얼마가 되는지 알면 될 것 같다. 계산기를 이용해서 구해주자.

 

 

 

 

  10진수로 바꾸면 76193이다.

 

  이제 이 수를 Serial 칸에 입력해보자.

 

 

  

 

  성공했다. 따라서 답은 76193이다.

 

 

 

 

댓글