CodeEngn Basic 15

문제: Name이 CodeEngn일때 Serial을 구하시오

15-1

처음 실행하여 그림 1 15번 문제의 실행화면 처럼 진행하면 00458B14에서 프로그램을 실행시키는 CALL을 진행한다. 일단 Name에 CodeEngn을 입력하고 Serial부분에 임의로 12345를 입력하고, Chek it ! 을 클릭하니 그림 2 콘솔창에 입력한 화면같이 Try Again ! 이라는 메시지창이 출력됬다.

15-2 15-3

그래서 문자열을 확인해본 결과 “Try Again !” 이 있는 주소가 바로 나왔다. 해당 부분을 확인해보니 그림 4 Try Again 을 확인에서 확인할 수 있듯이 00458837에서 Serial이 맞는지 틀리는지에 대한 분기점을 확인했다. 이제 Name과 Serial을 입력 한 뒤를 확인하기위해 위에 00458800 에 Break Point를 걸고 다시 실행했다. 15-4 15-5 *** 분기점까지 가는 동안 총 3번의 Call이 있는데 일단 문제자체에 집중하기위해 함수내부를 확인하지는 않았다. 대략적으로 Name값을 확인하는 과정이다. 0045882C를 Call하면 EAX값이 12345의 아스키값에서 3039로 바뀐 것을 확인했다. 15-6

그리고 바로 다음부분에서 EAX값과 45B844의 값을 비교하고 그 결과로 Z플레그가 셋팅되서 JNZ로 성공과 실패가 분기된다. 즉 EAX값이 6160이 되면 성공하게 되고 즉 그 값이 CodeEngn의 Serial 값이다. 3039는 16진수 12345 이므로 6160을 10진수로 바꾸면 “24928”이 나온다 정답이다.

15-7 15-8 15-9

처음엔 Name과 Serial값을 비교하기전 함수들이 값을 변화시키거나 함수안에서 비교 할 줄 알고 Call들을 확인했는데, 생각보다 간단한 문제였다.

박준영

박준영
아아 BOB되고싶다

2019년 CISA 합격 후기 및 공부 방법

CISA 합격 후기 및 공부방법

OpenVAS 사용 가이드/사용법 v.2018

Published on April 13, 2018

vsftpd 2.3.4 취약점 공격

Published on November 24, 2017