티스토리 뷰

CodeEngn Basic RCE의 14번 문제입니다.






해당 프로그램의 Name값이 CodeEngn 일 때 Serial값을 구하는 문제입니다.


프로그램을 다운로드 받겠습니다.






'14.exe'라는 이름의 파일입니다.


실행시켜보면..







틀린 값을 입력하고 체크하니 실패 문자열이 출렸되었습니다.


먼저 PEID로 파일의 정보를 확인하겠습니다.






UPX로 패킹 되어있습니다.


빠르게 UPX 언패킹 툴로 언패킹 하겠습니다.






언패킹을 성공했습니다.


이제 올리디버거로 분석하겠습니다.






이 프로그램은 입력받은 Name값을 이용해서 Serial값을 생성해서 입력한 Serial값과 비교하는 프로그램인 것 같습니다.


그러니 성공 문자열 주변에 입력받은 Serial값과 프로그램에서 Name값을 이용해서 생성한 Serial값을 비교하는 부분이 있을 것 같으니 성공 문자열이 있는 부분으로 가보겠습니다.







예상대로 성공 문자열 바로 위에 EAX값과 ESI값을 비교하고 성공 문자열과 실패 문자열로 나뉘는 점프문이 있습니다.


EAX값과 ESI값을 비교하는 40133A에 BP를 걸고 프로그램을 실행시켜보겠습니다.






Name값에는 CodeEngn을, Serial값에는 12345를 입력하고 체크하겠습니다.






체크를 하니 BP에서 멈추고 EAX에는 3039가, ESI에는 129A1이 저장되었습니다.


3039를 10진수로 바꿔주면 12345가 됩니다.


그러니 EAX는 제가 입력한 Serial값이고, ESI는 프로그램에서 Name값을 이용해서 만든 Serial값이라는 것을 알 수 있습니다.


129A1를 10진수로 바꾸고 프로그램에 입력하니..


(Name값은 CodeEngn)






성공 문자열이 출력됩니다.


이제 코드엔진 사이트에 정답을 인증해보겠습니다.








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

[CodeEngn] Basic RCE - Level 16 풀이  (80) 2017.11.21
[CodeEngn] Basic RCE - Level 15 풀이  (108) 2017.11.21
[CodeEngn] Basic RCE - Level 13 풀이  (102) 2017.11.15
[CodeEngn] Basic RCE - Level 12 풀이  (109) 2017.11.13
[CodeEngn] Basic RCE - Level 11 풀이  (109) 2017.11.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함