CodeEngn Advance 6

프로그램을 처음에 실행해 봤는데 그림 11 같은 메시지박스가 뜨더니 1부터 대략 760까지 계속 확인을 눌렀다. 군생활이 700대인거 보니까 옛날사람으로 추정된다. 나는 600대였다. 직접 확인해도 되지만, 메시지박스 출력할 때 반복문을 찾아서 확인하라는 문제같다. UPX언패킹하고 시작한다.

문자열에서 남은군생활은? 이란 문자가 안보여서 일단 실행하다 보니 에러창이 떴다.

1

안티 디버깅이 되어 있다. 찾아서 수정했다.

2

메시지박스가 계속 반복되는 프로그램이므로 메시지박스 관련 함수들을 찾아봤다. MessageBoxA는 안티디버깅 메시지 출력함수이므로 넘어가고 MessageBoxW함수에 전부 브레이크 포인트를 걸었다.

3

0045E071의 메시지박스 함수가 군생활 메시지를 출력한다.

4

일수가 한 두 군데가 아니라 여러 군데에 저장된다. 008AF820 에도 저장 된다

근데 이게 별로 중요하지는 않다. 어차피 메시지박스 함수를 반복하는 반복문의 카운트 값과 비교하는 부분이 군생활 인데 그 부분을 찾아야 한다.

5

메시지 박스 출력 후 진행하면 00412949로 CALL하는 부분이 많이 보인다. 문제와 관련 없는 함수이기 때문에, heap free라고 표시했다. 딱히 별다른 힌트를 얻을 수 없어서, 명확하게 명시가 안된 함수들은 전부 들어가보고 아니라고 판단되면 표시를 했다.

6

솔직히 노가다 외에는 방법이 생각 안나는 문제다. 하나하나 확인하다가 Switch문이 많이 보이는 부분이 있었고 거기서 EAX에 군생활 수가 입력되고 EBP와 비교하여 분기를 나눈다. EBP는 316 10진수로 바꾸면 790이다.

MD5해쉬로 인크립션 하면 2dace78f80bc92e6d7493423d729448e 이다. 다른 해결방법들을 찾아봤는데 메시지박스 부분을 수정해서 바로 끝 값이 나오게 수정하는 방법이 가장 좋은 방법처럼 보였다.

박준영

박준영
아아 BOB되고싶다

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

CISA 합격 후기 및 공부방법

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

Published on April 13, 2018

vsftpd 2.3.4 취약점 공격

Published on November 24, 2017