CodeEngn Advance 2

문제 : 정답은 무엇인가?

1

일단 파일을 실행해보니 그림 4처럼 도스창에 패스워드를 입력 받는다. 아무 값이나 입력하고 엔터를 눌렀더니 자동으로 종료가 되었다. 별다른 패킹은 되있지 않고, C++로 코딩된 프로그램이다. 패스워드 입력함수 직전에 브레이크포인트를 걸고 패스워드엔 임의로 12345를 넣었다.

2

패스워드를 입력 받고 아래 내용처럼 64번반복하며 이런저런 연산을 하는데 처음엔 이부분이 핵심일 꺼라 생각하고 자세히 확인해 봤지만 그림 5 의 내용만 64번 반복해서 넣고 별다른 일은 인행되지 않은 걸로 판단했다.

3

4

계속 진행하다 004013C5 함수를 실행하면 계속 리턴이 되었고, 해당 함수 내부를 확인해 봤다.

5

보면 12345의 아스키 값들이 그림 5처럼 64개가 들어있는데 그 중 한부분의 31(아스키 정수1) 값을 43과 비교하고있다. 43은 영어 대문자 C의 아스키 값이고 CMP결과로 같지 않으면 리턴 하는 부분으로 바로 점프 하게 된다.

6

7

아래로 총 10번을 이런 식으로 비교,점프를 반복하고있고 매번 반복하는 값들은 “CRAAACKED!” 이다. 앞부분의 64번 반복연산 등은 그냥 함정 정도였던 것 같고 결국 문제는 이 함수를 찾아내서 16진수 아스키 값을 확인하는 문제였다.

43 = C 52 = R 41 = A 41 = A 41 = A 43 = C 4b = K 45 = E 44 = D 21 = !

8

프로그램을 실행해서 CRAAACKED! 를 입력하면 처음에 임의의 수를 입력할 때 와 달리 종료되지 않고 WELL DONE!라는 메시지박스가 출력된다.

9

박준영

박준영
아아 BOB되고싶다

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

CISA 합격 후기 및 공부방법

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

Published on April 13, 2018

vsftpd 2.3.4 취약점 공격

Published on November 24, 2017