Security/Reversing

CodeEngn_Basic_RCE_L05

JuNM0418 2019. 5. 8. 13:21

문제

이 프로그램의 등록키는 무엇인가?

프로그램 실행

이름과 시리얼키를 입력하고 Register now!버튼을 누르면

다음과 같은 에러가 뜨면서 등록이 되지 않습니다.

프로그램 수정

디버거 프로그램으로 파일을 열면 다음과 같은 경고창이 뜬다

경고창을 보면 코드가 패킹되었는 것을 알 수 있습니다.

(패킹되어서 정상적으로 디버깅 하기 힘듬)

따라서 언패킹을 하고서 진행해야합니다.

(패킹에 대한 참고 링크 :https://manggoo.tistory.com/3, 언패킹에 대한 참고 링크 : https://itstar.kr/40)

어떤 형식으로 패킹되어있는지 알기위해서 HxD로 열어서 대충 확인해보니

UPX로 패킹이 되어있는 것을 알 수 있습니다.

따라서 언패킹을 하면 정상적으로 프로그램을 디버깅 할 수 있습니다.

디버거프로그램으로 돌리면 정상적으로 Entry Point에서 시작하게 됩니다.

프로그램을 한단계씩 진행하려면 F8을 사용해서 넘기면 됩니다.

사용된 문자를 모아서 보기 위해서 Search for -> All referenced text string을 누르면 사용된 문자들을 볼 수 있습니다.

그러면 어디에서 문자들을 불러오는 지 알 수 있습니다. 그래서 이 주소들을 거꾸로 돌아가서 어느게 등록된 유저이고, 등록된 시리얼 인지 알 수 있습니다.

위에서 유저와 등록된 시리얼로 추정되는 것들을 입력하고 실행이 되는 부분에 BreakPoint를 걸고서 확인해보면

다음과 같이 올바른 이름과 시리얼일때 호출되는 부분에서 멈추는 것을 알 수 있습니다.

이곳에서 계속 실행을 하면 성공했을 때 나오는 창이 뜨는 것을 볼 수 있습니다.

정답

 

끝!